Zadejte hledaný výraz...

Pomoc se stránkováním

tazzys
verified
rating uzivatele
(10 hodnocení)
19. 2. 2012 09:55:22
Dobrý den,
chtěl bych udělat stránkování, jakože to mam, ale upravit, aby to bylo takhle: < 1 2 3 4 5 >a takhle aby se to posouvalo, jenže já mam stránkování od 1 do konce a zobrazujou se uplně všechny, kdybych měl pak třeba 50 stránek, tak by to nebylo dobré, mam takový kod:
$pocet_noviniek_celkom = mysql_fetch_array(mysql_query("SELECT COUNT(id) FROM news"));
$celkom_noviniek = $pocet_noviniek_celkom;
if($celkom_noviniek <= 5){
$trieda_previous = ' class="unclick"';
$trieda_next = ' class="unclick"';
$odkaz_previous = '';
$odkaz_k_previous = '';
$odkaz_next = '';
$odkaz_k_next = '';
$celkom_stran = 1;
}else{
$celkom_stran = ceil($celkom_noviniek/5);
if($strana == 1){
$trieda_previous = ' class="unclick"';
$odkaz_previous = '';
$odkaz_k_previous = '';
}else{
$trieda_previous = '';
$temp = $strana - 1;
$odkaz_previous = '';
$odkaz_k_previous = '
';}
if($strana == $celkom_stran){
$trieda_next = ' class="unclick"';
$odkaz_next = '';
$odkaz_k_next = '';
}else{
$trieda_next = '';
$temp = $strana + 1;
$odkaz_next = '';
$odkaz_k_next = '
';}
}
echo ''.$odkaz_previous.'« Predchodzí'.$odkaz_k_previous.'';
for($z=1;$z<=$celkom_stran;$z++){
if($z == $strana){
$trieda_strana = ' class="active"';
}else{
$trieda_strana = '';
}
echo '
  • '.$z.'
  • ';}
    //
  • ....
  • echo ''.$odkaz_next.'Nasledující »'.$odkaz_k_next.'';
    ?>
    Pro rejpaly, na netu sem už hledal, ale nevím si s tím vůbec rady :(
    19. 2. 2012 09:55:22
    https://webtrh.cz/diskuse/pomoc-se-strankovanim/?stranka=%27.%24z.%27#reply732553
    Jan Matoušek
    verified
    rating uzivatele
    (12 hodnocení)
    19. 2. 2012 10:31:07
    no vyznat se v tom je něco:-)
    co třeba:
    define("POCET_CISEL", 5);
    $start = ceil( ($celkom_stran - POCET_CISEL) / 2 );
    $konec = $start + POCET_CISEL;
    for($z=$start;$z<=konec ;$z++){
    ...
    je to jen nástřel, musíš si to trošku poupravit, ale nějaká takováhle logika by tam mohla být.
    A prosím ten kód alespoň strukturuj, ať se to líp čte
    19. 2. 2012 10:31:07
    https://webtrh.cz/diskuse/pomoc-se-strankovanim/?stranka=%27.%24z.%27#reply732552
    tazzys
    verified
    rating uzivatele
    (10 hodnocení)
    19. 2. 2012 10:57:54
    jo, dík, ale nefunguje, neposouvá se mi ty čísla, a jsou tam jen stránky
    « Predchodzí -1 0 Nasledující »
    19. 2. 2012 10:57:54
    https://webtrh.cz/diskuse/pomoc-se-strankovanim/?stranka=%27.%24z.%27#reply732551
    Jan Matoušek
    verified
    rating uzivatele
    (12 hodnocení)
    19. 2. 2012 11:05:52
    říkal jsem, že je to jen nástřel. Čekal jsem, že si to do upravíš. Zkus trošku zapřemýšlet...
    19. 2. 2012 11:05:52
    https://webtrh.cz/diskuse/pomoc-se-strankovanim/?stranka=%27.%24z.%27#reply732550
    sharkws
    verified
    rating uzivatele
    (6 hodnocení)
    19. 2. 2012 11:06:41
    tohle řeším pomocí Nette Paginator nevím jestli je vhodný i pro tvůj případ jestli ne tak se mrkni aspon na kód třeba ti pomůže
    najdeš ho někde na nette.org
    19. 2. 2012 11:06:41
    https://webtrh.cz/diskuse/pomoc-se-strankovanim/?stranka=%27.%24z.%27#reply732549
    tazzys
    verified
    rating uzivatele
    (10 hodnocení)
    19. 2. 2012 11:08:48
    vůbec mi tam nefunguje to měnění středu :D už to mam
    « Predchodzí 1 2 3 4 5 Nasledující » a přitom sem na 6 listu ale jde vidět jen prvních 5
    19. 2. 2012 11:08:48
    https://webtrh.cz/diskuse/pomoc-se-strankovanim/?stranka=%27.%24z.%27#reply732548
    Stránkování které se dobře chová pro malý i velký počet prvků, je uživatelsky příjemné a dobře prolinkovává stránky není zas tak jednoduché, jak by se mohlo na první pohled zdát.
    Pokud chcete něco hodně jednoduchého, uživatelsky poměrně příjemného a nezáleží vám na dost špatné prolinkovanosti pro roboty, použijte něco v tomto duchu:
    Strana / 16
    Kde je formulářové pole, kam může uživatel přímo zadat číslo stránky.
    Pokud ale chcete sexy stránkování, jak ho znáte z internetu, které se chová inteligentně pro malý i velký počet záznamů, musíte udělat několik podmínek na základě celkového počtu stránek (dále PS) a aktuální stránce (dále AS), aby to vypadalo nějak takhle:
    1) 1 2 3 ... 20 21 *22* 23 24 ... 41 42 43 Jít na stranu
    A musíte přitom řešit různé záludné situace, jako např.:
    2) pokud je PS malý, pak jednoduše vypíšete všechny stránky stylem
    1 2 3 4 5 *6* 7 8 9 ...
    3) pokud je PS velký, ale AS je někde na začáku, vypíšete jen:
    1 2 3 4 *5* 6 7 ... 41 42 43 ...
    4) podobně pokud jste blízko konce, tak
    1 2 3 ... 38 39 *40* 41 42 43 ...
    máte tedy separátní výpis pro různé situace. Hranice si můžete zvolit např. takto :
    Je to samozřejmě jen jedna z (mnoha) možností. Více opravdu viz web.
    19. 2. 2012 11:09:47
    https://webtrh.cz/diskuse/pomoc-se-strankovanim/?stranka=%27.%24z.%27#reply732547
    Michal Pešat
    verified
    rating uzivatele
    (2 hodnocení)
    19. 2. 2012 11:11:01
    ten první kód určitě není tvůj, zkus nad tím uvažovat logicky:
    máš třeba 30 článků = počet zjistíš a uložíš do proměnné (mysql_num_rows), poté měj proměnnou, ve které je počet prvků, které chceš zobrazit na jedné stránce+ přes proměnnou v get si předej na jaké stránce jsi, při zobrazování se vychází z sql dotazu "SELECT * FROM nejaka LIMIT $zobrazit_od, $zobrazit_na_strance", zobrazit od bys získal jak?
    .
    .
    .
    .
    .
    aktuální stránka krát počet prvků, které jsi zobrazil na těch předchozích :)
    nechci dávat celý kód, jen tě navést - to bude pro tebe snad lepší :)
    19. 2. 2012 11:11:01
    https://webtrh.cz/diskuse/pomoc-se-strankovanim/?stranka=%27.%24z.%27#reply732546
    Jan Matoušek
    verified
    rating uzivatele
    (12 hodnocení)
    19. 2. 2012 11:14:57
    jinak můj nástřel byl špatný, teď mi to došlo, ale určitě po delším uvažování by jsi na to přišel sám. Pokud budeš jen kód lepit, tak se toho moc nenaučíš.
    19. 2. 2012 11:14:57
    https://webtrh.cz/diskuse/pomoc-se-strankovanim/?stranka=%27.%24z.%27#reply732545
    tazzys
    verified
    rating uzivatele
    (10 hodnocení)
    19. 2. 2012 11:18:16
    už v tom mám chaos zkusím to nějak vstřebat jinak všem díky :D
    19. 2. 2012 11:18:16
    https://webtrh.cz/diskuse/pomoc-se-strankovanim/?stranka=%27.%24z.%27#reply732544
    David Střítežský
    verified
    rating uzivatele
    19. 2. 2012 11:29:39
    $max_stran=mysql_query("SELECT id FROM strankování ORDER BY id ASC");
    $max_stranx=mysql_num_rows($max_stran);//spočítání záznamů celkem
    if($_GET>=1 && $_GET*5-5<=$max_stranx){
    $stranka=(int)$_GET*5-5;
    }
    else{
    redirect_to('?strana=strankovani/vypis&stranka=1');
    }
    $vypis=mysql_query("SELECT id, title FROM strankování ORDER BY id ASC LIMIT ".$stranka.",5"); //vypíše 5 výsledků na stránku
    while($vypisx=mysql_fetch_array($vypis)){
    echo $vypisx." ".$vypisx."
    ";
    }
    $stranka_x=$_GET;
    $predchozi=$stranka_x-1;
    $nasledujici=$stranka_x+1;
    $max_stranek=$max_stranx/5;
    if($max_stranek>1){
    if($stranka_x!=1){
    echo "<<První | ";
    echo "<Předchozí... ";
    }
    $i=$stranka_x-3;//počet odkazů na 3 stránky před aktualní stranou
    while($i<=$stranka_x+3){//počet odkazů na 3 stránky po aktualní stranou
    if($i>0 && $i<=$max_stranek){
    if($i==$stranka_x){
    echo $stranka_x." ";
    }
    else{
    echo "".$i." ";
    }
    }
    $i++;
    }
    if($stranka_x!=$max_stranek){
    echo " ...Následující> |";
    echo " Poslední>>";
    }
    }
    ?>
    nebo zkuste tady toto, jen musíte změnit proměnné, tady to vytahuju ze své databáze. Nejsem žádnej odborník na PHP, ale funguje to jak má :)
    19. 2. 2012 11:29:39
    https://webtrh.cz/diskuse/pomoc-se-strankovanim/?stranka=%27.%24z.%27#reply732543
    Michal Pešat
    verified
    rating uzivatele
    (2 hodnocení)
    19. 2. 2012 11:30:19
    jinak ta funkce ceil, co ti tu psal kolega je na zaokrouhlení desetinného čísla na celé :)
    19. 2. 2012 11:30:19
    https://webtrh.cz/diskuse/pomoc-se-strankovanim/?stranka=%27.%24z.%27#reply732542
    tazzys
    verified
    rating uzivatele
    (10 hodnocení)
    19. 2. 2012 12:16:07
    jj to vím, ale furt mi nejde udělat ten dinamický střed, aby čísla ustupovala, neumím to zapsat do toho kodu :D
    19. 2. 2012 12:16:07
    https://webtrh.cz/diskuse/pomoc-se-strankovanim/?stranka=%27.%24z.%27#reply732541
    David Střítežský
    verified
    rating uzivatele
    19. 2. 2012 12:20:17
    v mém kódu si myslím že to je docela srozumitelné.. začíná to
    19. 2. 2012 12:20:17
    https://webtrh.cz/diskuse/pomoc-se-strankovanim/?stranka=%27.%24z.%27#reply732540
    Bacon
    verified
    rating uzivatele
    (2 hodnocení)
    19. 2. 2012 12:27:31
    Zlaté PHP frameworky... :) Jakub Malý měl pěknou třídu na stránkování.
    19. 2. 2012 12:27:31
    https://webtrh.cz/diskuse/pomoc-se-strankovanim/?stranka=%27.%24z.%27#reply732539
    Pro odpověď se přihlašte.
    Přihlásit