Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Siłowanie ze stronicowaniem
Ravik
post 23.02.2010, 15:24:30
Post #1





Grupa: Zarejestrowani
Postów: 95
Pomógł: 3
Dołączył: 8.05.2009

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


Witam,

Siedzę już cały dzień nad tym głupkowatym skryptem, czytałem już kilkanaście artykułów o stronicowaniu, korzystałem z pagera napisanego przez nospora i dalej nic. Dlatego proszę was o pomoc. Skrypt teraz wyświetla błąd:

"Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/ravsoft/domains/xxx/public_html/galeria.php on line 75"

Kiedy usunę z drugiego zapytania do mysqla (tam gdzie wybiera z limitem) zmienną $start to wyświetla obrazki, ale wtedy nie będzie działało stronicowanie

Oto co napisałem:

  1. <?php
  2.  
  3. require_once ("config.php");
  4.  
  5. $category = addslashes($_GET['p']);
  6. $na_stronie=15;
  7.  
  8. $result_ilosc = mysql_query("SELECT id FROM zdjecia WHERE category='$category'");
  9. $ilosc = mysql_num_rows($result_ilosc); // wszystko
  10.  
  11. if($ilosc>$na_stronie) {
  12. for($i=0; $i<ceil($ilosc/$na_stronie); $i++)
  13. print '<a href="galeria.php?start='.($i*$na_stronie).'">'.($i+1).'</a> | ';
  14. }
  15. $start = $_GET['start'];
  16. $result = mysql_query("SELECT id FROM zdjecia WHERE category='$category' LIMIT $start, $na_stronie"); // z limitem
  17.  
  18. if (mysql_num_rows($result) != 0) {
  19.  
  20. echo "<table border=\"0\">";
  21. echo '<tr>';
  22.  
  23. $breaker = 0;
  24.  
  25. while ($row = mysql_fetch_array($result)) {
  26. $adres = "showimage.php?id=$row[id]";
  27. echo '<td align=center>';
  28. echo "<a class=\"miniaturki\" href=showimage.php?id=$row[id]>";
  29. echo "<img class=\"imga\" src=\"$adres\" /></a>";
  30. echo "</td>";
  31. $breaker++;
  32.  
  33. if ($breaker == $line_break) {
  34. echo "</tr><tr>";
  35. $breaker = 0;
  36. }
  37. }
  38. }
  39. echo "</tr>";
  40. echo "</table>";
  41.  
  42.  
  43. ?>


Będę bardzo wdzięczny za pomoc, gdyż już od rana nad tym siedzę.

Pozdrawiam,
Ravik
Go to the top of the page
+Quote Post
Pilsener
post 23.02.2010, 17:00:35
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


1. Rób echo 'kod html', bo tak jest czytelniej, szybciej, poprawniej i nie musisz stawiać ukośników przed "
2. Podstawy pracy z bazą danych:
  1. if(mysql_query($zapytanie_do_bazy)){
  2. echo 'sukces';
  3. }else{
  4. echo 'porażka: '.mysql_error();
  5. }

Masz po prostu niepoprawne zapytanie do bazy. Sprawdzaj zawsze, czy zapytanie wykonało się poprawnie i odbieraj ewentualne błędy to unikniesz podobnych problemów.
Go to the top of the page
+Quote Post
Ravik
post 23.02.2010, 20:37:14
Post #3





Grupa: Zarejestrowani
Postów: 95
Pomógł: 3
Dołączył: 8.05.2009

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


Które zapytanie jest niepoprawne questionmark.gif I gdzie tkwi błąd bo nie jestem w stanie tego zobaczyć.

Jest ktoś w stanie mi pomóc ?
Go to the top of the page
+Quote Post
thek
post 23.02.2010, 21:06:22
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Rzeczy na jakie musisz zwrócić uwagę...
Co masz w zmiennej $start gdy brak zmiennej $_GET['start']?
Co Ci sypie baza jako błąd? Po jaką chol... zwracasz wszystkie zdjęcia z kategorii skoro chodzi Ci tylko o ilość? Czy wyrzucasz z półki wszystkie książki na podłogę by je policzyć? Nie po to jest count by je olewać smile.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Ravik
post 24.02.2010, 09:36:10
Post #5





Grupa: Zarejestrowani
Postów: 95
Pomógł: 3
Dołączył: 8.05.2009

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


No dobra wybrałem w ten sposób:

  1. $result_ilosc = mysql_query("SELECT id FROM zdjecia WHERE category='$category'");
  2. $ilosc = count($result_ilosc);


W drugim zapytaniu też dawało ten błąd więc też potraktowałem to coutem:

  1. if (cout($result) != 0) {


dałem jeszcze wcześniej:

  1. if(!isset($_GET['start'])) {
  2. $start = 1;
  3. } else {
  4. $start = $_GET['start'];
  5. }


I teraz wyświetla mi białą stronę, kiedy do pliku dodaję zmienną ?start=1 też nic się nie dzieje.
Proszę o wyrozumiałość, ale pierwszy raz piszę takie coś i chcę się czegoś nauczyć.

Go to the top of the page
+Quote Post
thek
post 24.02.2010, 11:02:55
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Count w zapytaniu... Nie potraktowanie $result_ilosc funkcją count z php smile.gif Znaczy
$result_ilosc = mysql_query("SELECT count(id) AS ile FROM zdjecia WHERE category='$category'");
Poza tym naprawdę weź zrób to co podał Pilsener i sprawdzaj co Ci sypie baza poprzez mysql_error(). jakby nie spojrzeć to nie masz też nigdzie line_break, po którym łamiesz wiersz w tabeli wyświetlającej zdjęcia.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Pilsener
post 24.02.2010, 11:02:58
Post #7





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Dostałeś gotowy kod i dalej się upierasz, by nie sprawdzać wykonywanych do bazy zapytań a potem się pytasz, w którym zapytaniu masz błąd? Nie widzimy zapytań ani struktury bazy, więc skąd mamy wiedzieć, jak nie potrafisz nam nawet podać komunikatu błędu, jaki zwraca baza, bo masz gdzieś nasze rady?
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: 14.08.2025 - 04:34