Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwarka w bazie; zapytanie
Forum PHP.pl > Forum > Bazy danych > MySQL
Peter15
Robię wyszukiwarkę w bazie danych i zapytanie:
  1. <?php
  2.  
  3. $zapytanie = &#092;"SELECT * FROM `dane` where imie LIKE '.$newszukaj.' OR opis LIKE '.$newszukaj.' OR gdzie LIKE '.$newszukaj.' \";
  4.  
  5. ?>

Wywala przy wyszukiwaniu:
Cytat
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/html/php/dane/szukaj.php on line 56

Co jest źle?? Podałem tylko tą linijkę kodu ponieważ myślę że to wniej siedzi błąd, ale co jest nie tak?
SongoQ
Skladnia zapytania jest ok.

Problem byl juz kilka razy poruszany. Wolasz funkcje mysql_fetch_array(): a zapytanie nie zwrocilo rekordow.
Peter15
Cytat
zapytanie nie zwrocilo rekordow.

Powinno ponieważ jak w wyszukiwarce wpisze nazwe pozycji która jest w bazie wywala ten sam błąd :/
SongoQ
Wrzuc kod, latwiej bedzie rozwiazac problem.
Peter15
ok:
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <form action=\"szukaj.php\" method=\"post\">
  6. <input type=\"text\" name=\"szukaj\">
  7. Metoda szukania:
  8. <select name=\"metoda\">
  9. <option value=\"nazwa\">Według nazwy
  10. <option value=\"opis\">Według opisu
  11. <option value=\"gdzie\">Według miejsca
  12. <option value=\"all\">We wszyskim
  13. </select>
  14. <input type=\"submit\" name=\"submit\" value=\"Szukaj\">
  15. </form>
  16. <center>
  17. <h1>Wyniki wyszukiwania</h1>
  18. </center>
  19. <?
  20. $szukaj=$_POST['szukaj'];
  21. $metoda=$_POST['metoda'];
  22. #-----------------------------------
  23. #wywala czego szuka
  24. echo &#092;"<br> Szukamy: $szukaj <br>\";
  25. echo &#092;"w $metoda <br>\";
  26. #-----------------------------------
  27.  
  28. include(&#092;"config.php\");
  29. mysql_connect(&#092;"$serwer\", \"$urzytkownik\", \"$haslo\");
  30. #$zapytanie=\"select * from 'dane'\";
  31.  #$zapytanie = 'SELECT * FROM `dane` where \".$metoda.\" like \".$szukaj.\" LIMIT 0, 30';
  32.  #$zapytanie = 'SELECT * FROM `dane` LIMIT 0, 130';
  33. $newszukaj = &#092;"% \";
  34. $newszukaj .= $szukaj ;
  35. $newszukaj .= &#092;" %\";
  36. echo &#092;"<br> $newszukaj <br>\";
  37. if ($metoda == &#092;"all\")
  38. {
  39. #
  40. #$szukanie=\"SELECT * FROM danr WHERE imie LIKE \"%$szukaj%\"\";
  41. #--------------------------------------------------------------------
  42. # $zapytanie = \"SELECT * FROM dane WHERE imie LIKE \"%$szukaj%\"\";
  43. #$zapytanie .= \"SELECT * FROM dane WHERE opis LIKE \"%$szukaj%\"\";
  44. #$zapytanie .= \"SELECT * FROM dane WHERE gdzie LIKE \"%$szukaj%\"\";
  45. $zapytanie = &#092;"SELECT * FROM `dane` where imie LIKE '.$newszukaj.' OR opis LIKE '.$newszukaj.' OR gdzie LIKE '.$newszukaj.' \";
  46. //$zapytanie .= \"SELECT * FROM `dane` where opis LIKE '.$newszukaj.' \";
  47. //$zapytanie .= \"SELECT * FROM `dane` where gdzie LIKE '.$newszukaj.' \";
  48. }
  49. else
  50. {
  51.  $zapytanie = &#092;"SELECT * FROM dane WHERE '.$metoda.' LIKE '.$newszukaj.' \";
  52. }
  53. $wynik=mysql_query($zapytanie);
  54. $numer=&#092;"0\";
  55. while( $wiersz=mysql_fetch_array($wynik) ) 
  56. {
  57. $numer++;
  58. echo &#092;"<br><br>Numer pozycji:   \";
  59. echo &#092;"$numer\";
  60. echo &#092;"<br>Nazwa pozycji\"; 
  61. echo &#092;"\".$wiersz['nazwa'].\"\";
  62. #<td with=\"6%\">\".$wiersz['ktory'].\"</td>
  63. echo &#092;"<br> Opis opzycji:   \";
  64. echo &#092;"\".$wiersz['opis'].\"\";
  65. echo &#092;"<br>Znajduje się:  \";
  66. echo &#092;"\".$wiersz['jak'].\"\";
  67. echo &#092;"<br><br>\";
  68.  
  69. }
  70.  
  71.  
  72.  
  73.  
  74.  
  75. ?>
  76. </body>
  77. </html>

Sporo kombinowałem więc trochę sporo badziewia w komentarzach siedzi ...

ps.
Dodam jeszcze że serwerem jest Fedora 4 z domyślnymi ustawieniami. (zmieniłem tylko kodowanie na ISO 8859-2 i żeby błędy wyświetlało)
SongoQ
Cytat
while( $wiersz=mysql_fetch_array($wynik) )
{  $numer++;


Jesli zapytanie nie zwraca CI wynikow to ta funkcja powoduje blad.
Wstw przed petle warunek if(mysql_num_rows($wynik) > 0)

  1. <?php
  2. $zapytanie = &#092;"SELECT * FROM dane WHERE \".$metoda.\" LIKE '%\".$newszukaj.\"%' \";
  3. ?>


Chyba tak powinno byc
Peter15
dzięki działa biggrin.gif
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.