Zdarec, zavedl jsem si na stránkách členění stránky na určitý počet záznamů ze sql na stránku. Vypadá to asi takhle:
$pocet = $stranka;
$dotaz = MySQL_Query("SELECT * ORDER BY id DESC");
if(!$dotaz)
{echo "Chyba";}
else{
$i = 0;
while($zaznam = MySQL_Fetch_Array($dotaz))
{
if ($pocet == "") { $pocet = 0; }
if ($pocet < 0) { $pocet = 0; }
++$i;
$max_pocet = $pocet + 5;
if (($i > $pocet) && ($i <= $max_pocet))
{
}
}
$pvzkazu = $i;
$stranek = $pvzkazu / 5 - (($pvzkazu % 5)/5) + 1;
if (($pvzkazu % 5) == 0)
{$stranek=$stranek-1;}
if ($pvzkazu == 0)
{$stranek=1;}
}
$zpet = $pocet - 5;
$vpred = $pocet + 5;
$strana = $pocet/5 + 1;
if ($pocet != 0) {
echo "<A href=\"stranka=".$zpet."\"><<</A>";
}
echo " Strana $strana / $stranek (celkem $pvzkazu příspěvků) ";
if ($vpred < $i) {
echo "<A href=\"stranka=".$vpred."\">>></A>";
Protože už roupama nevím co by :) Zamyslel jsem se a uvědomil si, že přestože na stránce je 5 záznamů ze sql se vyzvedává plný počet, což zpomaluje načítání.
Poraďte mi prosím nějakou fintu aby se ze sql vyzvedlo (v tomto případě) jen 5 záznamů a to ještě ve správném pořadí.
Díky
>> $dotaz = MySQL_Query("SELECT * ORDER BY id DESC");
SQL dotaz je neúplný, chybí "FROM nejaka_tabulka", ale třeba si seš toho vědom.
Ano, pradon mám místo * vypsané konkrétní údaje a kvůli nedůležitosti jsem to chtěl přepsat bohužel jsem se přehlédl a umázl i from.
Oprava:
$dotaz = MySQL_Query("SELECT * FROM xy ORDER BY id DESC");
jestli tomu dobře rozumím i bez pročítání celého kódu, hledáš asi tohle:
SELECT * FROM tabulka WHERE podminka ORDER BY něco LIMIT 0,5
dis:
Tj, ale on chce udělat asi stránkování, jestli mi rozumíš.
Přesně tak tohle by vytáhlo jen záznamy s id od 0 do 5. Potřebuju aby to na stárnce 1 vytáhlo od 0 do 5 na stránce od 6 do 10 a tak dál...
Já jsem si udělal takovéto počítadlo. Vstupují do něj tři parametry:
- konstanta, kolik článků se má zobrazovat na stránce
- celkový počet článků
- číslo aktuální stránky
Skript vypočítá celkový počet stránek a počáteční zprávu na konkrétní stránce. Myslím, že je to docela primitivní. Spočítat 2 hodnoty ze 3 přece není žádný problém.
$pcs = 5; // Konstanta - zvol počet zpráv na stránce
$pocet_clanku = ; // Zjisti celkový počet članků, třeba z db
$stranka = ; // Aktuální stránka, která se má zobrazit, třeba z $_GET
// Zjisti počet stránek
if (intval($pocetclanku/$pcs) == ($pocetclanku/$pcs))
$celkem_stranek = intval($pocetclanku/$pcs);
else
$celkem_stranek = intval($pocetclanku/$pcs)+1;
// Vypočítej pořadí prvního článku na konkrétní stránce
$pocatecni_clanek = $pcs * ($stranka - 1);
// Dobře mířený dotaz vytáhne jen články z konkrétní stránky
$query = "SELECT * FROM tabulka WHERE podminky ORDER BY trideni LIMIT $pocatecni_clanek,$pcs";
http://markovo.wz.cz/z/strankovani.zip
k nahlednuti na http://fiestaclub.wz.cz/forum.php