Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pagination - z czystego PHP do smartów.
Forum PHP.pl > Forum > Przedszkole
casperii
Panowie nie mogę poradzić sobie z implementacją kodu do smartów.

Kod czystego php:

  1. $ile_stron = tu wynik pobrany z bazy;
  2.  
  3. if($ile_stron%10 != 0){
  4. $ile_stron = ($ile_stron / 10) +1;
  5. }else{
  6. $ile_stron = $ile_stron / 10;
  7. }
  8.  
  9. if(!empty($_GET['page']) && is_numeric($_GET['page'])){
  10. $page = $_GET['page'];
  11. }else{
  12. $page = 1;
  13. }
  14.  
  15. if(($ile_stron - ((($ile_stron*10)%10)/10))>1){
  16. for($z=1; $z <= $ile_stron; $z++){
  17. if($z == $page){
  18. print('<a href="index.php?page='.$z.'" style="font-weight:bold">'.$z.'</a>');
  19. }else{
  20. print('<a href="index.php?page='.$z.'">'.$z.'</a>');
  21. }
  22. }
  23.  
  24. }


powyższy kod działa na czystych php. Chciałbym to teraz przerobić na smarty.
{for} {/for} nie działa w smartach - tzn. aby działało trzeba coś w pliku smart modyfikować, więc pewnie tylko foreach w smartach.

Dziękuje za pomoc.
Johnas
Polecam Tobie klase php:

Mysqli Class PHP

  1. $pagination["active"] = $strona; // strona aktywna
  2. $pagination["totalPages"] = $servers_data["totalPages"]; // wszystkich stron
  3. $pagination["url"] = "lista-serwerow"; // link strony
  4. $smarty->assign('pagination', $pagination);


oraz pagination.tpl

  1. <div class="pagination pagination__posts">
  2. <ul>
  3. {if $pagination.active < 3}
  4. {$start = 1}
  5. {else}
  6. {$start = $pagination.active-2}
  7. {/if}
  8.  
  9. {if $pagination.active neq 1}
  10. <li class="first"><a href="{$config->domain}/{$pagination.url}/page/1">Pierwsza</a></li>
  11. <li class="prev"><a href="{$config->domain}/{$pagination.url}/page/{$pagination.active-1}">Poprzednia</a></li>
  12. {/if}
  13.  
  14. {for $foo=$start to $pagination.totalPages max=5}
  15. {if $foo eq $pagination.active}
  16. <li class="active"><span>{$foo}</span></li>
  17. {else}
  18. <li><a href="{$config->domain}/{$pagination.url}/page/{$foo}" class="inactive">{$foo}</a></li>
  19. {/if}
  20. {/for}
  21. {if $pagination.active neq $pagination.totalPages}
  22. <li class="next"><a href="{$config->domain}/{$pagination.url}/page/{$pagination.active+1}">Następna</a></li>
  23. <li class="last"><a href="{$config->domain}/{$pagination.url}/page/{$pagination.totalPages}">Ostatnia</a></li>
  24. {/if}
  25. </ul>
  26. </div>


Kod pochodzi ze strony: https://www.net4um.net/lista-serwerow

  1. if($ile_stron%10 != 0){


Brawo sciana.gif od kiedy znak dzielenia dajemy procentowo ?
casperii
GodOfPeople pisałem, że z {for} {/for} w smartach jest jakiś problem:


Fatal error: Smarty error: syntax error: unrecognized tag 'for' (Smarty_Compiler.class.php, line 590) in ...Smarty.class.php on line 1097
kapslokk
  1. {section name=i start=0 loop=10}
  2. {$smarty.section.i.index}
  3. {/section}


Cytat
Brawo sciana.gif od kiedy znak dzielenia dajemy procentowo ?

"Znak dzielenia dany procentowo" to reszta z dzielenia i prawdopodobnie o nią właśnie chodziło autorowi smile.gif
casperii
  1. {section name=i start=0 loop=10}
  2. {$smarty.section.i.index}
  3. {/section}


Dzięki za podpowiedź, tylko teraz mnie naprowadź czy dobrze myślę, ponieważ twój kod wyświetli wynik 10 liczb od 0 do 9.
Jeżeli chciałbym wyświetlić od 1 do 10 to musiałby zrobić coś takiego:

  1. {section name=i start=1 loop=10+1}
  2. {$smarty.section.i.index}
  3. {/section}


dobrze rozumiem ?

@kapslokk dobrze zrozumiałem ?
kapslokk
A nie łatwiej było Ci po prostu przetestować ?biggrin.gif
Chyba dobrze, nie wiem, dawno w smartach nie grzebałem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.