Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyswietlanie rekordow za pomocą petli - tworzenie ponumerowanych stron
Forum PHP.pl > Forum > Przedszkole
klapaucius
Przepraszam za skomplikowany temat ale nie wiedziałem jak to nazwać. Wiec tak: Chce wyświetlić dane rekordy z bazy danych za pomocą petli. Chce jednak, aby maksymalnie na jednej stronie pojawiło się powiedzmy 20 rekordów. Jeśli byłoby ich więcej to chciałbym, aby tworzyło mi kolejna strone(chyab tak to sie nazywa) i np. na dole aby była ponumerowana lista stron i po kliknieciu na dany numer przechodziło by mi do danej strony. Prościej mówiąc: chodzi o takie coś jak chociazby na tym forum - Jeśli jest jakiś temat, w ktorym jest bardzo dużo postów to nie są one wyswietlane na jednej stronie tylko jest podział na stronki. I czy mógłby ktos podac albo napisac jakis schemacik jakby to wygladało? Bo po 1 nigdzie takiego czegos nie moglem znalezc, a po 2 nie mam pojecia jak takie cos zrobic.
Pozdrawiam!
Damonsson
Myślę, że słowo PAGINACJA, będzie dla google dostatecznie zrozumiałe.
Ulysess
tzw stronnicowanie
wpierw dajesz selecta który zliczy z funkcja mysql_num_rows ktora zliczy ilosc rekordow , poźniej obliczasz ilosc rekordow na stronie * strona i dajesz w selekcie LIMIT ".($strona).','.$wns; gdzie w zmiennej strona jest wynik mnozenia str*wns a wns = wynikow na stronie , jeśli chodzi o tyświetlenie linków z numerami stron , dajesz pętle która wykonuje się tyle razy ile wyjdzie z:
$liczba_str = ceil($ilosc_osob/$wns);
gdzie ilosc osob to iliśc rekordów w tabeli.
sebekzosw
mam takie coś:
$query = zapytanie SQL wyświetlający wyniki
$max = ilosc rekordow na stronie
$results = dodawanie rekordow do tablicy
$var_pages = domyslna nazwa zmiennej $_GET przechowujaca obecny nr strony

  1. function paging($query, $max = 10, $results = 1, $var_page = 'strona')
  2. {
  3. $result = explode('FROM', $query);
  4. $records = mysql_result(mysql_query('SELECT COUNT(*) FROM '.preg_replace('/LIMIT (.*)/i', '', $result[1])), 0);
  5.  
  6. $pages = ceil($records / $max);
  7.  
  8. if (isset($_GET[$var_page]) and is_numeric($_GET[$var_page]))
  9. if ($_GET[$var_page] > $pages)
  10. $page = 1;
  11. else
  12. $page = $_GET[$var_page];
  13. else
  14. $page = 1;
  15.  
  16. $paging['smarty']['pages'] = $pages;
  17. $paging['smarty']['page'] = $page;
  18.  
  19. if ($results)
  20. {
  21. $q_results = array();
  22. $query_r = mysql_query($result[0].' FROM '.preg_replace('/LIMIT (.*)/i', '', $result[1]).' LIMIT '.(($page - 1) * $max).','.$max);
  23. while ($row_r = mysql_fetch_assoc($query_r))
  24. $paging['records'][] = $row_r;
  25. }
  26.  
  27. return $paging;
  28. }


I tą oto linijką wszystko masz w tablicy:
  1. $results = paging("SELECT * FROM `uzytkownicy` WHERE `plec` = 'M'");


w $results['records'] masz rekordy, które możesz puścić w jakiejś pętli...
klapaucius
Ok, dzięki wielkie za pomoc. Pogrzebałem jeszcze trochę w sieci. Mam jednak problem taki:
  1. $result = mysql_query("SELECT * FROM `baza` ORDER BY `id` LIMIT '1', '2'");

Chcę to wywołać, aby zwróciło mi tylko 10 rekordow. Jednak po wklepaniu takiej linijki nie zwraca mi nic.
nospor
nie: LIMIT '1', '2'
a: LIMIT 1, 2
To mają byc liczby a nie teksty

A jak chcesz miec 10 rekordów to ma byc 10 a nie 2, chyba logiczne :/
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.