Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] problem z paginacją stron.
Forum PHP.pl > Forum > Przedszkole
Mega_88
Witam !

Mam problem z wykonaniem stronicowania listy produktów, które wyświetlaja się na stronie. Wzoruje się na temacie napisanym przez Nospor LINK jednak nie chce mi to działać. Może ktoś pomóc, potrzebuje proste stronicowanie z wyświetlaniem 15 wyników na stronie. Poniżej kod:

  1. function produkty() {
  2.  
  3. $kategoria=$_GET['kategoria'];
  4. $query=mysql_query("SELECT * FROM produkty WHERE kategoria=$kategoria");
  5. while($wynik=mysql_fetch_array($query)) {
  6. if($wynik['idg']!=0) {
  7. $idg = $wynik['idg'];
  8.  
  9. $queryfoto = mysql_query("SELECT * FROM zdjecia WHERE idg=$idg LIMIT 1");
  10. if(mysql_num_rows($queryfoto)!='' or mysql_num_rows($queryfoto)!=NULL) {
  11. while($wynikfoto=mysql_fetch_array($queryfoto)) {
  12. $plik1='images/produkty/'.$idg.'-'.$wynikfoto['id'].'.jpg';
  13. $plik2='images/produkty/'.$idg.'-'.$wynikfoto['id'].'.png';
  14. $plik3='images/produkty/'.$idg.'-'.$wynikfoto['id'].'.gif';
  15. if(file_exists($plik1)) {
  16. $f = '<a href="'.$plik1.'" class="fancybox" title="'.$wynik['nazwa'].'"><div class="produkt-zdjecie" style="background:url(images/produkty/'.$idg.'-'.$wynikfoto['id'].'-s.jpg) center no-repeat"></div></a>';
  17. }
  18. elseif(file_exists($plik2)) {
  19. $f = '<a href="'.$plik2.'" class="fancybox" title="'.$wynik['nazwa'].'"><div class="produkt-zdjecie" style="background:url(images/produkty/'.$idg.'-'.$wynikfoto['id'].'-s.png) center no-repeat"></div></a>';
  20. }
  21. elseif(file_exists($plik3)) {
  22. $f = '<a href="'.$plik3.'" class="fancybox" title="'.$wynik['nazwa'].'"><div class="produkt-zdjecie" style="background:url(images/produkty/'.$idg.'-'.$wynikfoto['id'].'-s.gif) center no-repeat"></div></a>';
  23. }
  24. }
  25. }
  26. else {
  27. $f = '<div class="produkt-zdjecie">&nbsp;</div>';
  28. }
  29. }
  30. else $f = '<div class="produkt-zdjecie">&nbsp;</div>';
  31.  
  32. $o .= '
  33. <div class="produkt">
  34. '.$f.'
  35. <a href="'.friendlyUrl($wynik['id']).'">
  36. <div class="produkt-opis"><span class="tytul-produkt">
  37. '.$wynik['nazwa'].'</span><br />
  38. '.substr(strip_tags($wynik['opis']),0,350).'...<br />
  39. <span style="float:left;margin-top:5px;color:#ffffff;">Cena: <strong>'.$wynik['cena'].'</strong></span>
  40. <p style="float:right;color:#dbdbdb;font-weight:bold">więcej &raquo;</p></div>
  41. </a>
  42. </div>';
  43. unset($f);unset($plik1);unset($plik2);unset($plik3);unset($idg);
  44. }
  45. return $o;
  46. }
nospor
Cytat
jednak nie chce mi to działać
Super opisany problem.... jak masz zamiar tak robić wstawki to nie rób ich w ogóle bo nic z tego nie wynika.
Napisz co ci nie działa, jak tego używasz itp.
Mega_88
Mój błąd przepraszam, staram się zrobić to w następujący sposób, ale lista produktów nie ładuje się dodatkowo ucinająć mi dolną część strony.


Na początku robiłem w ten sposób, ale nie umiem dorobić do tego stronicowania i chciałem skorzystać z tego co Ty opisałeś.

  1. function produkty() {
  2.  
  3. $kategoria=$_GET['kategoria'];
  4. [b]$query=mysql_query("SELECT * FROM produkty WHERE kategoria=$kategoria LIMIT 0,15");[/b]
  5. while($wynik=mysql_fetch_array($query)) {
  6. if($wynik['idg']!=0) {
  7. $idg = $wynik['idg'];
  8.  
  9. $queryfoto = mysql_query("SELECT * FROM zdjecia WHERE idg=$idg LIMIT 1");
  10. if(mysql_num_rows($queryfoto)!='' or mysql_num_rows($queryfoto)!=NULL) {
  11. while($wynikfoto=mysql_fetch_array($queryfoto)) {
  12. $plik1='images/produkty/'.$idg.'-'.$wynikfoto['id'].'.jpg';
  13. $plik2='images/produkty/'.$idg.'-'.$wynikfoto['id'].'.png';
  14. $plik3='images/produkty/'.$idg.'-'.$wynikfoto['id'].'.gif';
  15. if(file_exists($plik1)) {
  16. $f = '<a href="'.$plik1.'" class="fancybox" title="'.$wynik['nazwa'].'"><div class="produkt-zdjecie" style="background:url(images/produkty/'.$idg.'-'.$wynikfoto['id'].'-s.jpg) center no-repeat"></div></a>';
  17. }
  18. elseif(file_exists($plik2)) {
  19. $f = '<a href="'.$plik2.'" class="fancybox" title="'.$wynik['nazwa'].'"><div class="produkt-zdjecie" style="background:url(images/produkty/'.$idg.'-'.$wynikfoto['id'].'-s.png) center no-repeat"></div></a>';
  20. }
  21. elseif(file_exists($plik3)) {
  22. $f = '<a href="'.$plik3.'" class="fancybox" title="'.$wynik['nazwa'].'"><div class="produkt-zdjecie" style="background:url(images/produkty/'.$idg.'-'.$wynikfoto['id'].'-s.gif) center no-repeat"></div></a>';
  23. }
  24. }
  25. }
  26. else {
  27. $f = '<div class="produkt-zdjecie">&nbsp;</div>';
  28. }
  29. }
  30. else $f = '<div class="produkt-zdjecie">&nbsp;</div>';
  31.  
  32. $o .= '
  33. <div class="produkt">
  34. '.$f.'
  35. <a href="'.friendlyUrl($wynik['id']).'">
  36. <div class="produkt-opis"><span class="tytul-produkt">
  37. '.$wynik['nazwa'].'</span><br />
  38. '.substr(strip_tags($wynik['opis']),0,350).'...<br />
  39. <span style="float:left;margin-top:5px;color:#ffffff;">Cena: <strong>'.$wynik['cena'].'</strong></span>
  40. <p style="float:right;color:#dbdbdb;font-weight:bold">więcej &raquo;</p></div>
  41. </a>
  42. </div>';
  43. unset($f);unset($plik1);unset($plik2);unset($plik3);unset($idg);
  44. }
  45. return $o;
  46. }


Poniżej kod z wykorzystaniem Twojego pomysłu. Jednak problem wygląda jak opisałem na początku.

  1. function produkty() {
  2. $sql = 'select count(*) from produkty';
  3. $result = mysql_query($sql);
  4. $row = mysql_fetch_array($result);
  5. $recordsCount = $row[10];//pobranie liczby rekordów
  6. $pager = new Pager('idPagera');
  7. $pager->SetTotalRecords($recordsCount);//ustawienie liczby rekordów
  8. //wygenerowanie pagera i zapamietanie go w zmiennej w celu
  9. //pozniejszego wyswietlenia
  10. $renderPager = $pager->Render();
  11. $start = $pager->GetIndexRecordStart();//pobranie indexu rekordu początkowego
  12. $end = $pager->GetIndexRecordEnd();//pobranie indexu rekordu koncowego
  13. echo $renderPager;
  14. $kategoria=$_GET['kategoria'];
  15. $query=mysql_query('select * from produkty WHERE kategoria=$kategoria limit '.$start.','.($end - $start + 1));
  16. while($wynik=mysql_fetch_array($query)) {
  17. if($wynik['idg']!=0) {
  18. $idg = $wynik['idg'];
  19.  
  20. $queryfoto = mysql_query("SELECT * FROM zdjecia WHERE idg=$idg LIMIT 1");
  21. if(mysql_num_rows($queryfoto)!='' or mysql_num_rows($queryfoto)!=NULL) {
  22. while($wynikfoto=mysql_fetch_array($queryfoto)) {
  23. $plik1='images/produkty/'.$idg.'-'.$wynikfoto['id'].'.jpg';
  24. $plik2='images/produkty/'.$idg.'-'.$wynikfoto['id'].'.png';
  25. $plik3='images/produkty/'.$idg.'-'.$wynikfoto['id'].'.gif';
  26. if(file_exists($plik1)) {
  27. $f = '<a href="'.$plik1.'" class="fancybox" title="'.$wynik['nazwa'].'"><div class="produkt-zdjecie" style="background:url(images/produkty/'.$idg.'-'.$wynikfoto['id'].'-s.jpg) center no-repeat"></div></a>';
  28. }
  29. elseif(file_exists($plik2)) {
  30. $f = '<a href="'.$plik2.'" class="fancybox" title="'.$wynik['nazwa'].'"><div class="produkt-zdjecie" style="background:url(images/produkty/'.$idg.'-'.$wynikfoto['id'].'-s.png) center no-repeat"></div></a>';
  31. }
  32. elseif(file_exists($plik3)) {
  33. $f = '<a href="'.$plik3.'" class="fancybox" title="'.$wynik['nazwa'].'"><div class="produkt-zdjecie" style="background:url(images/produkty/'.$idg.'-'.$wynikfoto['id'].'-s.gif) center no-repeat"></div></a>';
  34. }
  35. }
  36. }
  37. else {
  38. $f = '<div class="produkt-zdjecie">&nbsp;</div>';
  39. }
  40. }
  41. else $f = '<div class="produkt-zdjecie">&nbsp;</div>';
  42.  
  43. $o .= '
  44. <div class="produkt">
  45. '.$f.'
  46. <a href="'.friendlyUrl($wynik['id']).'">
  47. <div class="produkt-opis"><span class="tytul-produkt">
  48. '.$wynik['nazwa'].'</span><br />
  49. '.substr(strip_tags($wynik['opis']),0,350).'...<br />
  50. <span style="float:left;margin-top:5px;color:#ffffff;">Cena: <strong>'.$wynik['cena'].'</strong></span>
  51. <p style="float:right;color:#dbdbdb;font-weight:bold">więcej &raquo;</p></div>
  52. </a>
  53. </div>';
  54. unset($f);unset($plik1);unset($plik2);unset($plik3);unset($idg);
  55. }
  56. return $o;
  57. }
nospor
Cytat
. Jednak problem wygląda jak opisałem na początku.
Niestety, ale na początku napisałeś: "Nie działa". A to nie jest opis problemu.

Kolejna sprawa:
skoro rekordy wyświetlasz dla jakiś tam warunków to i liczyć ich liczbę też musisz dla tego warunku.
Mega_88
Hmmm, zrobilem w następujący sposób, ale nadal nie chce zaskoczyć.

  1. function produkty() {
  2. $sql = 'select count(*) from produkty WHERE kategoria=$kategoria';
  3. $result = mysql_query($sql);
  4. $row = mysql_fetch_array($result);
  5. $recordsCount = $row[10];//pobranie liczby rekordów
  6. $pager = new Pager('idPagera');
  7. $pager->SetTotalRecords($recordsCount);//ustawienie liczby rekordów
  8. //wygenerowanie pagera i zapamietanie go w zmiennej w celu
  9. //pozniejszego wyswietlenia
  10. $renderPager = $pager->Render();
  11. $start = $pager->GetIndexRecordStart();//pobranie indexu rekordu początkowego
  12. $end = $pager->GetIndexRecordEnd();//pobranie indexu rekordu koncowego
  13. echo $renderPager;
  14. $kategoria=$_GET['kategoria'];
  15. $query=mysql_query('select * from produkty WHERE kategoria=$kategoria limit '.$start.','.($end - $start + 1));
  16. while($wynik=mysql_fetch_array($query)) {
  17. if($wynik['idg']!=0) {
  18. $idg = $wynik['idg'];
  19.  
  20. $queryfoto = mysql_query("SELECT * FROM zdjecia WHERE idg=$idg LIMIT 1");
  21. if(mysql_num_rows($queryfoto)!='' or mysql_num_rows($queryfoto)!=NULL) {
  22. while($wynikfoto=mysql_fetch_array($queryfoto)) {
  23. $plik1='images/produkty/'.$idg.'-'.$wynikfoto['id'].'.jpg';
  24. $plik2='images/produkty/'.$idg.'-'.$wynikfoto['id'].'.png';
  25. $plik3='images/produkty/'.$idg.'-'.$wynikfoto['id'].'.gif';
  26. if(file_exists($plik1)) {
  27. $f = '<a href="'.$plik1.'" class="fancybox" title="'.$wynik['nazwa'].'"><div class="produkt-zdjecie" style="background:url(images/produkty/'.$idg.'-'.$wynikfoto['id'].'-s.jpg) center no-repeat"></div></a>';
  28. }
  29. elseif(file_exists($plik2)) {
  30. $f = '<a href="'.$plik2.'" class="fancybox" title="'.$wynik['nazwa'].'"><div class="produkt-zdjecie" style="background:url(images/produkty/'.$idg.'-'.$wynikfoto['id'].'-s.png) center no-repeat"></div></a>';
  31. }
  32. elseif(file_exists($plik3)) {
  33. $f = '<a href="'.$plik3.'" class="fancybox" title="'.$wynik['nazwa'].'"><div class="produkt-zdjecie" style="background:url(images/produkty/'.$idg.'-'.$wynikfoto['id'].'-s.gif) center no-repeat"></div></a>';
  34. }
  35. }
  36. }
  37. else {
  38. $f = '<div class="produkt-zdjecie">&nbsp;</div>';
  39. }
  40. }
  41. else $f = '<div class="produkt-zdjecie">&nbsp;</div>';
  42.  
  43. $o .= '
  44. <div class="produkt">
  45. '.$f.'
  46. <a href="'.friendlyUrl($wynik['id']).'">
  47. <div class="produkt-opis"><span class="tytul-produkt">
  48. '.$wynik['nazwa'].'</span><br />
  49. '.substr(strip_tags($wynik['opis']),0,350).'...<br />
  50. <span style="float:left;margin-top:5px;color:#ffffff;">Cena: <strong>'.$wynik['cena'].'</strong></span>
  51. <p style="float:right;color:#dbdbdb;font-weight:bold">więcej &raquo;</p></div>
  52. </a>
  53. </div>';
  54. unset($f);unset($plik1);unset($plik2);unset($plik3);unset($idg);
  55. }
  56. return $o;
  57. }
nospor
Jak to mówią: problem jest między krzesłem a monitorem....

Po raz ostatni pytam:
co znaczy " nie działa"
co znaczy " nie chce zaskoczyć"
?
Co się dzieje, co się nie dzieje, pali się coś, dom się sypie, a moze nie wyświetla się pager, a moze nie wysłietlają się rekordy, a moze wyswietlają sie błedy?
Czy tak cięzko to napisać? Czy tak ciężko to napisać po trzech postach, w których zwracają ci ciągle na to uwagę?

I na koniec:
Temat: Jak poprawnie zada pytanie



Mega_88
Cytat(nospor @ 26.10.2011, 10:17:38 ) *
Jak to mówią: problem jest między krzesłem a monitorem....

Po raz ostatni pytam:
co znaczy " nie działa"
co znaczy " nie chce zaskoczyć"
?
Co się dzieje, co się nie dzieje, pali się coś, dom się sypie, a moze nie wyświetla się pager, a moze nie wysłietlają się rekordy, a moze wyswietlają sie błedy?
Czy tak cięzko to napisać? Czy tak ciężko to napisać po trzech postach, w których zwracają ci ciągle na to uwagę?

I na koniec:
Temat: Jak poprawnie zada pytanie


We wcześniejszym poście napisałem

Cytat
ale lista produktów nie ładuje się dodatkowo ucinająć mi dolną część strony.


dodatkowo nie wyświetla mi się pager i mam takie błędy:

Cytat
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/conceptlab/ftp/odee/projekty/greenstep/produkty.php on line 49

Fatal error: Class 'Pager' not found in /home/conceptlab/ftp/odee/projekty/greenstep/produkty.php on line 51
nospor
W takim razie teraz ja przepraszam, musiałem tego niezauważyć.

1) Podałem ci linka do wątku, w którym są wskazówki. Zastosuj się do nich a pojawi ci się jeszcze wiele innych błędów, które wyjaśni wiele rzeczy.
2)
Cytat
Fatal error: Class 'Pager' not found in /home/conceptlab/ftp/odee/projekty/greenstep/produkty.php on line 51
A to to już chyba żart z Twojej strony.... nie includujesz klasy pagera i się dziwisz ze nie działa :/
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.