Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Stronicowanie
Balas
post 21.09.2005, 16:51:24
Post #1





Grupa: Zarejestrowani
Postów: 347
Pomógł: 0
Dołączył: 27.08.2005
Skąd: Inowrocław

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


Zrobilem skrypt ktory wyswietla i stronicuje news. I problem wlasnie ze stronicowaniem. Chcialbym aby wyswietlacło mi sie np.
Cytat
poprzednie 1 2 3 ... 15 16 17 nastepne

zamiast
Cytat
poprzednie 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17


Jak to zrobic questionmark.gif

Kod:

  1. <?php
  2. define('ILOSC_WYNIKOW_NA_STRONIE', 5);
  3. mysql_connect ("localhost", "******", "********");
  4. mysql_select_db("******");
  5.  
  6. $sql = "SELECT SQL_CALC_FOUND_ROWS * 
  7.  FROM news
  8.  ORDER BY id DESC 
  9.  LIMIT ".mysql_escape_string((int)$_GET['porcja']*ILOSC_WYNIKOW_NA_STRONIE).",".ILOSC_WYNIKOW_NA_STRONIE;
  10. // pobiera ILOSC_NA_STRONIE rekordów z bazy, sortując wg daty rosnąco, zaczynając 
    od $_GET['porcja']*ILOSC_NA_STRONIE
  11. $zapytanie = mysql_query($sql); // wykonujemy zapytanie
  12. while($wiersz = mysql_fetch_array($zapytanie))
  13. {
  14.  
  15.  
  16. print "<table border=0 width=500><tr><td>Dodane: ".$wiersz['data']."<hr></td></tr>";
  17. print "<tr><td>".$wiersz['tresc']."<hr></td></tr>";
  18. print "<tr><td align=right><a href=comments.php?id=".$wiersz['id'].">komentarze</a> Dodal: ".$wiersz['nick']."</td></tr><br>";
  19. }
  20. echo('</table>');
  21.  
  22. $sql = "SELECT FOUND_ROWS() as Ilosc";
  23. $zapytanie = mysql_query($sql); 
  24. list($iloscWpisow) = mysql_fetch_row($zapytanie);
  25.  
  26. //Nawigacja
  27.  
  28. //jesli nie jestesmy na pierwszej stronie
  29. if($_GET['porcja']>0){ 
  30. //wyswietlamy link do poprzedniej strony
  31.  echo '<a href="?porcja='.($_GET['porcja']-1).'">Poprzednie</a> ';
  32. }
  33.  
  34. for($i = 0;$i<=floor(($iloscWpisow-1)/ILOSC_WYNIKOW_NA_STRONIE);$i++){
  35.  echo '<a href="?porcja='.($i).'"> '.($i+1).' </a> ';
  36. }
  37. //jesli nie jestesmy na ostatniej stronie
  38. if($_GET['porcja']<floor(($iloscWpisow-1)/ILOSC_WYNIKOW_NA_STRONIE)){ 
  39. //wyswietlamy link do nastepnej strony
  40.  echo ' <a href="?porcja='.($_GET['porcja']+1).'">Następne</a>';
  41. }
  42.  
  43.  
  44.  
  45. ?>


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
TomASS
post 21.09.2005, 17:06:55
Post #2





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Zobacz jak to zrobił szanowny nopsor w swojej klasie, którą uważam za jedną z lepszych (jeśli nie najlepszą) klasę do stronicowania.


--------------------
Go to the top of the page
+Quote Post
Balas
post 21.09.2005, 18:05:33
Post #3





Grupa: Zarejestrowani
Postów: 347
Pomógł: 0
Dołączył: 27.08.2005
Skąd: Inowrocław

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


Własnie ja przegladalem... ale za bardzo sie nei skapnalem jak on to zrobil :] dlatego pisze dla poczatkujacych :] a chce sam zrobic nie gotowe uzywac biggrin.gif

No moze z mala pomoca forumowiczow ^^

PS. jeszcze raz przegladnalem i tak sie nawet zastanawiam jak to wkleicz pod moj kod :] (ta klase)

Ten post edytował OnE.Killer 21.09.2005, 18:07:30


--------------------
Go to the top of the page
+Quote Post
nospor
post 22.09.2005, 08:05:36
Post #4





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




W topicu z klasą podałem dość chyba przejrzysty przykład. No nic.

  1. <?php
  2.  
  3. define('ILOSC_WYNIKOW_NA_STRONIE', 5);
  4. mysql_connect ("localhost", "******", "********");
  5. mysql_select_db("******");
  6.  
  7.    $sql = 'select count(*) from news';
  8.    $result = mysql_query($sql);
  9.    $row = mysql_fetch_array($result);
  10.    $recordsCount = $row[0];//pobranie liczby rekordów
  11.    $pager = new Pager('idPagera');
  12.    $pager->setRecordsOnPage(ILOSC_WYNIKOW_NA_STRONIE);
  13.    $pager->setRecordsCount($recordsCount);//ustawienie liczby rekordów
  14.    //wygenerowanie pagera i zapamietanie go w zmiennej w celu 
  15.    //pozniejszego wyswietlenia
  16.    $renderPager = $pager->render();
  17.    $start = $pager->getStartRecord();//pobranie indexu rekordu początkowego
  18.    $end = $pager->getEndRecord();//pobranie indexu rekordu koncowego
  19.    //zapytanie z uwzglenieniem stronicowania
  20.    $sql = 'select SQL_CALC_FOUND_ROWS * from news ORDER BY id DESC limit '.$start.','.($end - $start + 1); 
  21.  
  22. $zapytanie = mysql_query($sql); // wykonujemy zapytanie
  23.    //...pobranie wyników i ich wyswietlenie
  24.   //......tutaj mozesz juz olac swoje stronicowanie. wyswietl tylko rekordy
  25.  
  26.    echo $renderPager; //wyswietlenie pager'a
  27.  
  28. ?>

Nie musisz już w zapytaniu używać SQL_CALC_FOUND_ROWS, gdyż liczba wszystkich rekordów zawarta jest w zmiennej $recordsCount. Zostawiłem jednak narazie na wszeli wypadek u Ciebie te SQL_CALC_FOUND_ROWS, żęby było kompatybilne z pozostałym Twym kodem (którego część i tak można już usunąć).

proponuje ci dodatkowo zapoznac się z innymi metodami set... Umożliwiają one dostosowanie innych paramerów pagera. Poeksperymentuj, nie bój się, nic nie wybuchnie smile.gif
pozdro

edit: dopisałem linijkę : $result = mysql_query($sql);, którą zjadłem. sorki mój błąd


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

"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
Balas
post 22.09.2005, 16:10:32
Post #5





Grupa: Zarejestrowani
Postów: 347
Pomógł: 0
Dołączył: 27.08.2005
Skąd: Inowrocław

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


Dzieki sliczne za pomoc smile.gif

A za nei wybuchnie to nei wiem tongue.gif znajac moj sprzet rolleyes.gif

EDIT

wyskakuje mi takie cus
Cytat
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\sciezka\news.php on line 17


nie za bardzo wiem co zle jest :?

  1. <?php
  2.  $sql = 'select count(*) from news';
  3.  $row = mysql_fetch_array($result);
  4. ?>
to jest w lini 16 i 17 :]

co to jest $result questionmark.gif

Ten post edytował OnE.Killer 22.09.2005, 17:20:07


--------------------
Go to the top of the page
+Quote Post
Ociu
post 22.09.2005, 18:33:54
Post #6





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




  1. <?php
  2. $result = mysql_query('select count(*) from news') or die(mysql_error());
  3. $row = mysql_fetch_array($result);
  4. ?>


Ten post edytował Ociu 22.09.2005, 18:36:27
Go to the top of the page
+Quote Post
Balas
post 22.09.2005, 18:37:45
Post #7





Grupa: Zarejestrowani
Postów: 347
Pomógł: 0
Dołączył: 27.08.2005
Skąd: Inowrocław

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


blink.gif
Ale gafa smile.gif nie zauwazylem tego worriedsmiley.gif

teraz jak podpiac wyswietlanie questionmark.gif :] bo ja lama jestem smile.gif i nei kapuje winksmiley.jpg

EDIT: Probuje probuje... ale nie wychodzi :/ gdzie dac kod do wyswietlania newsów questionmark.gif

  1. <?php
  2. $sql = "SELECT * FROM news ORDER BY id DESC";
  3. $zapytanie = mysql_query($sql);
  4. while($wiersz = mysql_fetch_array($zapytanie))
  5. {
  6. print "<table border=0 width=500><tr><td>Dodane: ".$wiersz['data']."<hr></td></tr>";
  7. print "<tr><td>".$wiersz['tresc']."<hr></td></tr>";
  8. print "<tr><td align=right><a href=comments.php?id=".$wiersz['id'].">komentarze</a> Dodal: ".$wiersz['nick']."</td></tr></table><br>";
  9. }
  10. ?>


Bo mi juz rece opadaja sad.gif sadsmiley02.gif sadsmiley02.gif sadsmiley02.gif

EDIT: Wreszcie sie udalo smile.gif a temat chyba do zamkniecia smile.gif

Ten post edytował OnE.Killer 22.09.2005, 21:00:34


--------------------
Go to the top of the page
+Quote Post
Hubi.pl
post 6.02.2006, 17:10:07
Post #8





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 16.10.2004
Skąd: Poznań

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


na podstawie powyższej klasy, napisałem taki kod:
  1. <?php
  2. $sql = "select SQL_CALC_FOUND_ROWS * from statusy WHERE id_kategoria=$_GET[id] ORDE
    R BY id DESC limit "
    .$start.','.($end - $start + 1);
  3.  
  4. $zapytanie = mysql_query($sql) or die('Query failed: ' . mysql_error());
  5. while ($rekord = mysql_fetch_array ($zapytanie)) {
  6. echo "<img src=\"images/statusek.gif\" width=\"16\" height=\"16\" /> <a href=\"opis,$rekord[id].html\"> $rekord[tresc_opisu]</a><br>";
  7. }
  8. echo $renderPager; 
  9. ?>

niestety pokazuje taki bład:
Cytat
Query failed: Something is wrong in your syntax obok 'from statusy WHERE id_kategoria=14 ORDER BY id DESC limit 0,25' w linii 1


Co z tym zrobić?tongue.gif


--------------------
http://www.creneo.pl || http://www.hubi.pl
Go to the top of the page
+Quote Post
nospor
post 6.02.2006, 17:52:32
Post #9





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




A którą masz wersję mysql? Bo się chyba pluje o SQL_CALC_FOUND_ROWS, ale tp moze dlatego ze masz jakąś starą wersję.

Do wyliczenia liczby wszystkich rekordów uzyj:
  1. SELECT count(*)
  2. FROM statusy


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

"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
Hubi.pl
post 6.02.2006, 17:57:11
Post #10





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 16.10.2004
Skąd: Poznań

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


Cytat(nospor @ 2006-02-06 16:52:32)
A którą masz wersję mysql? Bo się chyba pluje o SQL_CALC_FOUND_ROWS, ale tp moze dlatego ze masz jakąś starą wersję.

Do wyliczenia liczby wszystkich rekordów uzyj:
  1. SELECT count(*)
  2.  
  3. FROM statusy

Wyliczenie rekordów działa OK, bo odpowiednia ilość podstron się pojawia tak jak ma być winksmiley.jpg
problem tylko z wyświetleniem zawartości tych podstron;]

baze mam: MySQL 3.23.58

what to do?snitch.gif

Ten post edytował Hubi.pl 6.02.2006, 17:58:29


--------------------
http://www.creneo.pl || http://www.hubi.pl
Go to the top of the page
+Quote Post
nospor
post 6.02.2006, 17:59:15
Post #11





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




to skoro juz ilosc rekordow masz wyliczoną, to wywal z zapytania oto: SQL_CALC_FOUND_ROWS

powinno dzialac


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

"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
Hubi.pl
post 6.02.2006, 18:09:49
Post #12





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 16.10.2004
Skąd: Poznań

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


Cytat(nospor @ 2006-02-06 16:59:15)
to skoro juz ilosc rekordow masz wyliczoną, to wywal z zapytania oto: SQL_CALC_FOUND_ROWS

powinno dzialac

super działa biggrin.gif!

Dziekuję bardzo Nospor winksmiley.jpg i pozdrowienia dla córeczki winksmiley.jpg


--------------------
http://www.creneo.pl || http://www.hubi.pl
Go to the top of the page
+Quote Post
korey
post 2.05.2010, 13:34:46
Post #13





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 14.08.2009
Skąd: Łódź

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


Mi za to wywala taki błąd:

Fatal error: Cannot instantiate non-existent class: pager in C:\Program Files\WebServ\httpd-users\Szkolne_Kola\functions\newsy.php on line 110

To ta linijka #110 $pager = new Pager('idPagera');

Nie wiem co jest źle..


--------------------
”Jestem nędzarzem, mam tylko marzenia.
Rozsyłam je u twych stóp,
Stąpaj lekko, gdyż stąpasz po mych marzeniach„
Go to the top of the page
+Quote Post
nospor
post 3.05.2010, 22:24:08
Post #14





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




nie wgrałeś pliku z klasą.


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

"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
Ociu
post 4.05.2010, 08:21:42
Post #15





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Jaki stary kotlet ! dry.gif
Na następny raz załóż osobny temat.
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 Wersja Lo-Fi Aktualny czas: 13.08.2025 - 23:19