Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Stronnicowanie
Forum PHP.pl > Forum > Przedszkole
Dapi
Witam.
Robię paginacje zdjęć w wyszukiwarce galerii. Wszystko niby działa, ale nie wyświetla mi się druga strona i jest też problem z ostatnią.
Pozostałe działają. Mam 102 zdjęcia w galerii. Także powinno być 10 pełnych stron i 2 na 11.
Niestety 2 i 11 strona zwracają komunikat:
Cytat
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /Dapi/domains/adres.pl/public_html/galeria/nowa/wyszukiwarka.php on line 33
(linia 33 to while($wynik = mysql_fetch_array($wyniki_q)){)
Nie wiem czy ze zmęczenia już coś schrzaniłem, czy co, ale nie mogę sobie z tym poradzić.

Kod:
  1. if($_GET['faza']){
  2. $parse['faza'] = $faza;
  3.  
  4. $strona = stripslashes(addslashes(htmlspecialchars(strip_tags($_GET['str']))));
  5. if($strona <= 1){
  6. $start = 0;
  7. $strona = 1;
  8. }else{
  9. $start = ($strona-1)*10;
  10. }
  11.  
  12. $wyniki_q = query("SELECT * FROM `foto` WHERE `tagi` like '%".$faza."%' ORDER BY `id` DESC LIMIT $start , 10", true);
  13. $wyniki_str = query("SELECT * FROM `foto` WHERE `tagi` like '%".$faza."%'", true);
  14.  
  15. for($str = 0; ($str*10)<mysql_num_rows($wyniki_str); $str++){
  16. if(($str+1) == $strona){
  17. $kolor = "#cb7b00";
  18. }else{
  19. $kolor = "#7d7d7d";
  20. }
  21. $parse['strony'] .= '<div style="width: 20px; height: 20px; display: inline-table; border: 1px solid #000; margin: 5px; background: #111111; cursor: pointer;">
  22. <table cellpadding="0" border="0" cellspacing="0" style="width: 20px; height: 20px; text-align:center; margin: auto;"><tr><td><a href="?page=wyszukiwarka&amp;faza='.$faza.'&amp;str='.($str+1).'" style="text-decoration: none;"><span style="color: '.$kolor.'" onmouseover="this.style.color=\'#cb7b00\'" onmouseout="this.style.color=\''.$kolor.'\'">'.($str+1).'</span></a></td></tr></table>
  23. </div>';
  24. }
  25.  
  26. while($wynik = mysql_fetch_array($wyniki_q)){
  27. $parse['wyniki'] .= '<div style="width: 200px; height: 200px; display: inline-table; border: 1px solid #000; margin: 5px; vertical-align: middle; text-align:center; background: #111111;">
  28. <table cellpadding="0" border="0" cellspacing="0" style="width: 204px; height: 204px; text-align:center; margin: auto;"><tr><td><a href="?page=zdjecie&amp;id='.$wynik['id'].'" style="text-decoration: none"><img src="'.$wynik['adres'].'" style="max-width: 200px; max-height: 200px;" alt="foto"></a></td></tr></table>
  29. </div>';
  30. }
  31. }


Pomóżcie wink.gif
pmir13
Powinno działać dobrze, ale nie znamy definicji query(), może tam coś kombinujesz za bardzo?
Dapi
Skoro inne strony działają, to druga też musi. A jednak nie :/

query():
  1. function query($zaptanie,$wynik = false){
  2. $rezultat = mysql_query("$zaptanie");
  3. if($wynik == 'true'){
  4. if(strstr($zaptanie, "LIMIT 1")!==False){
  5. return mysql_fetch_array($rezultat);
  6. }else{
  7. return $rezultat;
  8. }
  9. }
  10. }


Jeśli $wynik = false to wykonuję zapytania nie zwracające wyniku.
Jeśli w zapytaniu znajduje się LIMIT 1, to tworzę ładną tablicę.
Jeśli nie ma limitu, to zapytanie można wrzucić do pętli while();
Może przekombinowane, ale sql mi wybitnie nie leży wink.gif

Dodam, że problem pojawia się tylko jeśli w zapytaniu pojawia się LIMIT X,12, gdzie X jest większe niż 9, a mniejsze niż 20.
wookieb
Temat: Jak poprawnie zadac pytanie
Zapoznaj się.
pmir13
Cytat(Dapi @ 22.04.2011, 10:57:13 ) *
  1. if(strstr($zaptanie, "LIMIT 1")!==False)

Dodam, że problem pojawia się tylko jeśli w zapytaniu pojawia się LIMIT X,12, gdzie X jest większe niż 9, a mniejsze niż 20.

I wszystko jasne. "LIMIT 1" jest jak najbardziej częścią "LIMIT 10,10".
Dapi
Dzięki. Nie zwróciłem zupełnie na to uwagi. wink.gif
Teraz śmiga
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.