Autor Zpráva
bitbit
Profil
Dobrý den / Zdar

Mám malý problém. Mám PHP kód, který načítá z databáze príspěvky podle limitu od do. Tento limit se počítá z počtu příspěvků, které se mají zobrazit na jedné stránce a z čísla stránky.

Při první stránce je limit dodržen a zobrazuje se požadovaný počet příspěvků. Druhá stránka začíná správným příspěvkem, ale není dodržen limit a je zobrazeno více příspevků než má být. Na třetí stránce se začne zase od toho příspevku, který určuje počáteční limit, takže příspěvky jsou vypsány znovu. atd.

Kód:



if (!IsSet($idprispevek)) $idprispevek=1;
$pocatek = $idprispevek*$pocet_na_stranku-$pocet_na_stranku;
$konec = $idprispevek*$pocet_na_stranku;

$dotaz = MySQL_Query("SELECT * FROM $tb_forum ORDER BY id DESC limit $pocatek,$konec");
if(!$dotaz):
echo "Chyba při načítání vzkazů z databáze...";
else:

strankovani($tb_forum,"příspěvků",$idprispevek,$pocet_na_stranku);

while($zaznam = mysql_fetch_array($dotaz)):

$text=$zaznam["vzkaz"];


//$text=rozdelit_dlouheslova($text,$pocet_pismen);
//$text=prekodovat_formatovani($text);
//$text=prekodovat_odkaz($text);


<tr><td class=text><B>". $zaznam["jmeno"] ."</B> ";
echo " - " . $zaznam["datum"] . "</td></tr>";
echo "<tr><td class=text width=100%>$text</td></tr>";

endwhile;

endif;


proměnná $idprispevek je predavana pomoci url.
proměnná $pocet_na_stranku je napevno zadaná hodnota např. 5

zde si to muzete prohlednout v praxi.
http://testbit.wz.cz/forum


volane fce, ktere jsou zakomentovany na to nemaji vliv

zde prikladam jeste kod fce strankovani, i kdyz ta IMHO na to nema vliv.

function strankovani($tabulka,$slovo1,$idprispevek,$pocet_na_str)
{
$pocet = MySQL_Query("SELECT id FROM $tabulka");
if (!$pocet) {
echo "Došlo k chybě při zpracování dotazu v databázi.<br/>\n".MySQL_Error();
exit();
}
$p = MySQL_Num_Rows($pocet);
$strana = Ceil($p/$pocet_na_str);
echo "<br/><br/>Další stránky (celkem $slovo1: $p ):<br/>";
for ($x=1;$x<=$strana;$x++):
$levo=$idprispevek-1;
$pravo=$idprispevek+1;

if (($x==1)&&($idprispevek>=2)) { echo "<a class=\"odkaz\" href=\""; echo "index.php?idprispevek=$levo\""; echo "> << </a>";};
if ($x==$idprispevek) echo "$x"; else { echo "<a class=\"odkaz\" href=\""; echo "index.php?idprispevek=$x\""; echo "> ".$x." </a>"; };
if (($x==$strana)&&($idprispevek<$strana)) { echo "<a class=\"odkaz\" href=\""; echo "index.php?idprispevek=$pravo\""; echo "> >> </a>"; };
endfor;
echo "<br/>";
}
Hugo
Profil
IMHO je problém v tomto řádku
$konec = $idprispevek*$pocet_na_stranku;

Správná syntaxe je LIMIT pocet_zaznamu, prvni_zaznam

takže
$konec = $pocet_na_stranku;

$dotaz = MySQL_Query("SELECT * FROM $tb_forum ORDER BY id DESC limit $konec,$pocatek");
bitbit
Profil
Hugo:

Diky moc. Mnel jsem se podivat do manualu. Funguje to
Toto téma je uzamčeno. Odpověď nelze zaslat.

0