Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyswietlanie rekordow za pomocą petli - tworzenie ponumerowanych stron
klapaucius
post
Post #1





Grupa: Zarejestrowani
Postów: 223
Pomógł: 3
Dołączył: 4.07.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Damonsson
post
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Myślę, że słowo PAGINACJA, będzie dla google dostatecznie zrozumiałe.
Go to the top of the page
+Quote Post
Ulysess
post
Post #3





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
sebekzosw
post
Post #4





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
klapaucius
post
Post #5





Grupa: Zarejestrowani
Postów: 223
Pomógł: 3
Dołączył: 4.07.2009
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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 :/


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 04:49