Autor | Zpráva | ||
---|---|---|---|
denCo Profil |
#1 · Zasláno: 15. 10. 2009, 18:44:37 · Upravil/a: denCo
Zdravim. Mam jednu chybu v strankovani... tu je moj kod
<?php $result = mysql_query("SELECT count(*) FROM novinky ORDER BY id DESC", $db); if($result !== false) { list($numRows) = mysql_fetch_row($result); } $spolu = $numRows; $pages = 10; $zobraznav = 5; $stranok = ceil($spolu / $pages); if(!isset($_GET['offset'])) { $offset = 0; } else { $offset = addslashes($_GET['offset']); } $prva = $offset; $druha = $offset + $pages; $zac = "|<"; $kon = ">|"; $spa = "Späť"; $dal = "Ďalej"; $finish = $stranok * $pages - $pages; $sp = $offset - $pages; $da = $offset + $pages; $result = mysql_query($q="SELECT nazov,text FROM novinky LIMIT $prva,$druha", $db ) or print("Došlo k chybě v dotazu: ".$q."<br>".mysql_error()); while ($zaznam=MySQL_Fetch_Array($result)){ echo $zaznam['nazov']; echo $zaznam['text']; } $zaciatok = "<a href=\"mojestrankovanie.php?offset=0\">" . $zac . "</a>"; $koniec = "<a href=\"mojestrankovanie.php?offset=$finish\">" . $kon . "</a>"; $spat = "<a href=\"mojestrankovanie.php?offset=$sp\">" . $spa . "</a>"; $dalej = "<a href=\"mojestrankovanie.php?offset=$da\">" . $dal . "</a>"; $aktual = $offset + $pages / $pages; $info = $zobraznav - 1; $plus = $info / 2; $plus2 = $info / 2; $akt = $offset; $akt2 = $offset; echo $zaciatok; echo $spat; while ( $plus !== 0 && $plus > 0 ) { $akt = $akt - $pages; $aktu = $akt / $pages + 1; echo "<a href=\"mojestrankovanie.php?offset=$akt\">" . $aktu . "</a>|"; } while ( $plus2 !== 0 && $plus2 > 0 ) { $akt2 = $akt2 - $pages; $aktu2 = $akt2 / $pages + 1; echo "<a href=\"mojestrankovanie.php?offset=$akt2\">" . $aktu2 . "|</a>"; } echo $dalej; echo $koniec; ?> chyba nastane takato (pozri link) http://test.geodethavlik.sk/mojestrankovanie.php ak ma niekto obmedzene prenasanie dat, tak radsej nech na to nejde... vdaka moc |
||
denCo Profil |
#2 · Zasláno: 15. 10. 2009, 18:46:12
je to jeden z mojich prvych vytvorov tak prosim mierne do mna :-)
|
||
AM_ Profil |
#3 · Zasláno: 15. 10. 2009, 18:56:14
Když se ti něco "pořád vypisuje dokola", znamená to, že máš někde nekonečný cyklus. Nekonečný proto, že není splněná ukončující podmínka. testuješ:
while ( $plus !== 0 && $plus > 0 ) (což je mimochodem dost divné, z druhé podmínky vyplývá ta první, když je $plus větší než nula, tak už to nemůže být nula) a v tom cyklu následně hodnotu $plus nijak neaktualizuješ, takže pochopitelně výsledek této podmínky bude vždy stejný (zřejmě true - proto se to opakuje pořád dokola). Jinak je dobrým zvykem si program spouštět po částech, zkoušet, kde se to zasekává, kde se to cyklí a která přesně část nedělá, co má. 1) není efektivní psát tak, že napíšeš hromadu kódu najednou a pak se jen nestačíš divit, co všechno tam nefunguje; po každé ucelené nové věci je dobré si polotovar spustit a zkontrolovat, že to zatím dělá to, co má 2) tady to bylo naštěstí zřejmé, ale u složitějších problémů ti na fóru nikdo nebude procházet tolik kódu a hledat tam botu. Proto je dobré si nejdřív sám zjistit, kde přesně to nefunguje, a pokud nechápeš, proč to tak nejde, tak je teprve čas se zeptat |
||
denCo Profil |
#4 · Zasláno: 15. 10. 2009, 19:09:25
AM_
okey vdaka, urcite si z toho zoberiem ponaucenie... hej zabudol som to tam doplnit... vdaka |
||
Časová prodleva: 15 let
|
0