Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]podział na strony
Forum PHP.pl > Forum > Przedszkole
Lejto
szukam sktyptu podziału na strony do newsów szukałem już ale znalazłem urazmaicone kody oparte o smarty i itp. szukam prostego skryptu

pozdrawiam
nospor
szukaj pod haslem stronicowanie
U mnie w podpisie tez cos znajdziesz
Lejto
mówiełem że chce coś prostego na 9 linijek
Koshin
include_once('../adodb.inc.php');
include_once('../adodb-pager.inc.php')

$rs = &$db->Execute($sql);

$pager = new ADODB_Pager($db,$sql);
$pager->showPageLinks = true;
$pager->linksPerPage = 3;
$pager->cache = 60;
$pager->Render($rows=7);


8 linijek tongue.gif
pojas
Może coś takiego Ci pomoże:
  1. <?php
  2. $news_per_page = 2; // newsów na stronę
  3.  
  4. if( $_GET['start'] == '' || $_GET['end'] == '' ) // jeśli parametry GET są puste
  5. {
  6. // domyślne ustawienia: strona 1
  7. $_GET['start'] = 1;
  8. $_GET['end'] = $news_per_page;
  9. }
  10.  
  11.  
  12. $articles = 19; // pobierz liczbę wszytkich newsów
  13.  
  14. // wyświetl newsy z przedziału $_GET['start'] - $_GET['end']
  15. for( $i=$_GET['start']; $i<=$_GET['end'] && $i<=$articles; $i++)
  16. {
  17. echo 'News numer '.$i.'<br />'; // wyświetl news
  18. // echo get_news( $i );
  19. }
  20.  
  21.  
  22. $pages = ceil( $articles/$news_per_page ); // ilość stron
  23.  
  24. for( $i=1; $i<=$pages; $i++ )
  25. {
  26. $end = $i*$news_per_page;
  27. $start = $end-$news_per_page+1;
  28.  
  29. if( $end == $_GET['end'] ) // wyświetla link do strony na której jest użytkownik
  30. {
  31. echo 'strona '.$i.' | ';
  32. } elseif( $end/$news_per_page == $pages ) // link do ostatniej strony
  33. {
  34. echo '<a href="test.php?start='.$start.'&end='.$end.'">strona '.$i.'</a>';
  35. } else // niżej "normalny" link
  36. {
  37. echo '<a href="test.php?start='.$start.'&end='.$end.'">strona '.$i.'</a> | ';
  38. }
  39. }
  40. ?>

Samemu napisać większa frajda guitar.gif
... no ale to skromniejsze rozwiązanie
Lejto
może niewyraznie się wyraziłem chodzi mi o to że np. (zapytania mysql) jak doda się 6 newsa to utworzy sie nowa strona, moze jakis link to tym jak sie dzieli na strony
gilbo
Linku poszukaj tak jak napisal nospor pod haslem stronicowanie.

Ja ci podam pewnego rodzaju solucje.

1. sprawdzasz za pomoca mysql_num_rows() ilosc wpisow/newsow itp.
2. sprawdzasz ile stron musisz utworzyc dzielac ilosc wpisow przez wczesniej ustalana liczbe wersow na strone.
3. ustalasz np. zmienna $_GET['page'] ktora jezeli jest pusta = 0 i wykonujesz najnormalniejsze zapytanie do sql z tym ze ustalasz limit $start, $stop gdzie $start=$_GET['page']*ilosc wpisow na strone stop=$start+ilosc wpisow na strone
4. dorabiasz jeszcze nawigacje tak zeby nie mozna bylo cofnac za $_GET['page']=0 i pojsc dalej niz za ilosc stron-1 (-1 bo pierwsza strona ma index 0)

Moze troche to trudne ale jak sie zastanowic nie powinno sprawic wiekszych klopotow:)

pozdrawiam:)

P.S prosze wybaczyc brak polskich liter ale pisze z zagranicznej klawiatury i na zagranicznym kompie:)
matyskiewicz
tutaj też masz prostą klase stronicowania rekordów.
Lejto
dzięki rolleyes.gif
php programmer
A żeby nie pisać dwa razy zapytania, osobno dla licznika i osobno dla danych,
najlepiej przerobić istniejące zapytanie, to przykład z jednego z z niedawno pisanego skryptu

  1. <?php
  2. $sCountQuery = str_replace("SELECT * FROM",'SELECT COUNT(*) AS cnt FROM',$sQuery);
  3. $pos = strpos($sCountQuery,'ORDER BY');
  4. if (!($pos===false)) $sCountQuery = substr($sCountQuery,0,$pos);
  5. ?>

oczywiście działa tylko na niezbyt skopmplikowanych zapytaniach
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.