Autor Zpráva
denCo
Profil
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 = "|&lt;";
$kon = "&gt;|";
$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
je to jeden z mojich prvych vytvorov tak prosim mierne do mna :-)
AM_
Profil
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
AM_
okey vdaka, urcite si z toho zoberiem ponaucenie... hej zabudol som to tam doplnit... vdaka

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: