Autor Zpráva
Fisak
Profil
Dobrý den. Mám kod na stránkování uplně jednoduchý a rád bych aby se zobrazila pouze aktuální stránka na které jsem a pět stránek před tím a pět stránek potom.. dá se to nějak omezit ?

<?php
if(mypage("action")) {
$pocet_radku=DB::query("SELECT * FROM [youtube_videos] where [game_url] = %s", mypage("action"), "and [approved] = %s", "yes");
$zaklad_radky = count($pocet_radku);
$pocet_stran=ceil($pocet_stran=$zaklad_radky/options('num_pagination'));
$i=0;
if(count($pocet_radku) > options('num_pagination')) {
echo "<div id=\"strankovanitop\"> Stránka:  ";
while ($i<$pocet_stran) {
$i++;
echo "<a style=\"color:black; font-size:18px;\" href=\"/games/".mypage("action")."/$i/\">$i</a> || ";
}  
echo "</div>";
}
Tori
Profil
Něco takového?
$zacatek = max(0, ($aktualni_stranka - 5)); // opraveno
$konec = min($pocet_stran, $aktualni_stranka + 5);
Btw jestli nepotřebujete z DB tahat i data, použijte SELECT COUNT(*). Jestli potřebujete jak data pro aktuální stránku, tak počet záznamů celkem, použijte SELECT SQL_CALC_FOUND_ROWS * FROM ... + SELECT FOUND_ROWS()
Fisak
Profil
$pocet_radku=DB::query("SELECT COUNT(*) FROM [youtube_videos] where [game_url] = %s", mypage("action"), "and [approved] = %s", "yes");
$pocet_stran=ceil($pocet_stran=$pocet_radku/options('num_pagination'));
mi nějak nefunguje bohužel :(...


A taham jen počet řádků kvůli stránkování..
Tori
Profil
Fisak:
A DB::query určitě vrací přímo tu hodnotu? Nechybí nějaké fetch nebo fetchSingle?
Fisak
Profil
Tori:
a ještě s tím max a min.. to ale bude brát od konce -5 stránku a od začátku +5 stránku ne ?? takže když budu mít 100 stran tak to bude brát od 5. strany do 95. strány nebo se pletu ?


Tori:
$pocet_radku=DB::query("SELECT COUNT(*) FROM [youtube_videos] where [game_url] = %s", mypage("action"), "and [approved] = %s", "yes")->fetchSingle();
$pocet_stran=ceil($pocet_stran=$pocet_radku/options('num_pagination'));
také bohužel nefunguje..


v dokumentaci dibi se přímo píše:
Počet řádků zjistíme voláním:

$rows = count($result);
Tori
Profil
Fisak:
v dokumentaci dibi se přímo píše:
count($resultset) je ekvivalent mysql_num_rows.

U min jsem měla překlep, opraveno. Min/max by mělo zabránit přetečení (záporné hodnoty, nebo víc stránek než je dat).
Fisak
Profil
Tori:
Stále nevím jak ten $zacatek a $konec využit.. mám to dát do toho while ?? jakože podmínku ?
Tori
Profil
Myslela jsem spíš for než while.
Fisak
Profil
Bohuže mi to ale jde do záporných čísel pokud je to 1 stránka :(
if(mypage("action")) {
$pocet_radku=DB::query("SELECT * FROM [youtube_videos] where [game_url] = %s", mypage("action"), "and [approved] = %s", "yes");
$zaklad_radky = count($pocet_radku);
$pocet_stran=ceil($pocet_stran=$zaklad_radky/options('num_pagination'));

$i=mypage("run") - 5;
if(count($pocet_radku) > options('num_pagination')) {
echo "<div id=\"strankovanitop\"> Stránka:  ";

$zacatek = max(0, (mypage("run") - 5)); // opraveno
$konec = min($pocet_stran, mypage("run") + 5);

for($i >= $zacatek; $i <= $konec; $i++){
echo "<a style=\"color:black; font-size:18px;\" href=\"/games/".mypage("action")."/$i/\">$i</a> || ";
}  
echo "</div>";
}



dal jsem tam podmínku if($zacatek <= 0) $zacatek = 1; která mi ovšem také nefunguje..
Tori
Profil
if(mypage("action")) {
    $data = DB::query("SELECT * FROM [youtube_videos] where [game_url] = %s", mypage("action"), "and [approved] = %s", "yes");
    $pocet_radku = count($data);
    $pocet_stran = ceil($pocet_radku / options('num_pagination'));
 
    if($pocet_radku > options('num_pagination')) {
        echo "<div id=\"strankovanitop\"> Stránka:  ";

        $zacatek = max(0, (mypage("run") - 5));
        $konec = min($pocet_stran, mypage("run") + 5);
        for($i = $zacatek; $i <= $konec; $i++) {
            echo "<a style=\"color:black; font-size:18px;\" href=\"/games/".mypage("action")."/$i/\">$i</a> || ";
        }  
        echo "</div>";
    }
}
Nevím proč vám nefungovalo to fetchSingle, mělo by.
Fisak
Profil
Tori:
Také netuším. Ale přesto děkuji moc :-)
Tori
Profil
Fisak:
Co to fetchSingle vlastně vracelo za hodnotu? FALSE nebo co? Tohle je fakt dost zbytečné, tahat celou tabulku, když potřebujete znát jen počet řádků.
Fisak
Profil
Tori:
už jsem na to přišel proč to nefungovalo.. Nevím proč ale v DIBI musíte dát "COUNT(sloupec) AS strankovani" a pak to vypíšete $promenna->fetchSingle('strankovani')

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: