Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skomlikowane wyszukiwanie
Forum PHP.pl > Forum > Przedszkole
Martin24
Próbuję zrobić wyszukiwanie, które znajdzie wyświetli znalezione wedle słowa kluczowego książki najpierw wedle autora, potem tytułu, a potem opisu. Mam taki kod:
  1. <?php
  2.  
  3. if (isset($_POST['search'])) {
  4. $message .= NULL;
  5. if (empty($_POST['search'])) {
  6. $message='<p>Proszę podać przynajmniej jedną literę w celu wyszukania pozycji!</p>';
  7.  } else {
  8.  require_once ('../../mysql_connect.php');
  9.  $query_autor = &#092;"SELECT id FROM books WHERE autor LIKE '$search%' \";
  10.  $result _autor = @mysql_query ($query_autor);
  11.  $query_tytul = &#092;"SELECT id FROM books WHERE tytul LIKE '$search%' \";
  12.  $result_tytul = @mysql_query ($query_tytul);
  13.  $query_opis = &#092;"SELECT id FROM books WHERE opis LIKE '%$search%' \";
  14.  $result_opis = @mysql_query ($query_opis);
  15.  $query_create_tmp =&#092;"CREATE TABLE tmp ( 
  16. 'book_id' MEDIUMINT UNSIGNED NOT NULL ,
  17. PRIMARY KEY ( 'id' ) 
  18. )&#092;";
  19. $query_fullfill_tmp_autor = &#092;"INSERT INTO tmp (book_id) VALUES ('$result_autor')\";
  20. $query_fullfill_tmp_tytul = &#092;"INSERT INTO tmp (book_id) VALUES ('$result_tytul')\";  
  21. $query_fullfill_tmp_opis = &#092;"INSERT INTO tmp (book_id) VALUES ('$result_opis')\";
  22. $query_wynik= &#092;"SELECT autor , tytul , wydawnictwo , seria , ISBN , okladka , tlumaczenie , cena FROM books WHERE id = book_id\"; 
  23. $result_wynik= @mysql_query ($query_wynik);
  24. $row_count_wynik= mysql_num_rows($result_wynik);
  25. if($row_count_wynik == 0) {
  26. $message ='<p>Brak wyszukiwanej pozycji!</p>';
  27. } else {
  28. while ($row = mysql_fetch_array($result_wynik)) {
  29. print (&#092;"<table height=\"100\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">
  30. // tu reszta tabeli...
  31. ?>


Co tu jest nie tak, bo błąd pokazuje się w linii, gdzie definiuję zmienną $result_autor. Z góry dziękuję za odpokwiedź.
ikioloak
A jaki blad pokazuje?
Zamien $search na $_POST['search'] we wszystkich $query(...)
Martin24
Błąd, jaki mi wyskakuje: Parse error: parse error, unexpected T_STRING in /home/jansway/ftp/sklep/c/index.php on line 46 (tutaj 11)
Powiedzcie poza tym, czy sama konstrukcja jest ok, bo ja jestem troszkę zielony. A może jest na to lepszy sposób?
ikioloak
Bez spacji w nazwach zmiennych! Pewnie przeoczenie.. ja z reszta tez na poczatku przeoczylem.
  1. <?php
  2.  
  3. $result _autor
  4.  
  5. ?>

zamien na
  1. <?php
  2.  
  3. $result_autor
  4.  
  5. ?>
Martin24
Jak dokładnie zapisać (chodzi mi o apostrofy i %) $_POST('search') w zapytaniu?
Poza tym dzięki, naprawiłam i już mija tę linię kodu, ale w trakcie wyszukiwania pojawia się problem:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/jansway/ftp/sklep/c/index.php on line 63 (TUTAJ 28)
Podaję poprawiony kod:
  1. <?php
  2.  
  3. if (isset($_POST['search'])) {
  4. $message .= NULL;
  5. if (empty($_POST['search'])) {
  6. $message='<p>Proszę podać przynajmniej jedną literę w celu wyszukania pozycji!</p>';
  7. } else {
  8. require_once ('../../mysql_connect.php');
  9. $query_create_tmp =&#092;"CREATE TABLE tmp ( 
  10. 'book_id'  MEDIUMINT UNSIGNED NOT NULL ,
  11. PRIMARY KEY ( 'id' ) 
  12. )&#092;";
  13. $query_autor = &#092;"SELECT id FROM books WHERE autor  LIKE '$search%' \";
  14. $result_autor = @mysql_query ($query_autor);
  15. $row_autor = mysql_fetch_array($result_autor);
  16. $query_fullfill_tmp_autor = &#092;"INSERT INTO tmp (book_id) VALUES ('$row_autor')\";
  17. $query_tytul = &#092;"SELECT id FROM books WHERE tytul LIKE '$search%' \";
  18. $result_tytul = @mysql_query ($query_tytul);
  19. $row_tytul = mysql_fetch_array($result_tytul);
  20. $query_fullfill_tmp_tytul = &#092;"INSERT INTO tmp (book_id) VALUES ('$row_tytul')\";
  21. $query_opis = &#092;"SELECT id FROM books WHERE opis LIKE '%$search%' \";
  22. $result_opis = @mysql_query ($query_opis);
  23. $row_opis = mysql_fetch_array($result_opis);
  24. $query_fullfill_tmp_opis = &#092;"INSERT INTO tmp (book_id) VALUES ('$row_opis')\";
  25. $query_wynik= &#092;"SELECT autor , tytul , opis FROM books WHERE id = book_id \"; 
  26. $result_wynik= @mysql_query ($query_wynik);
  27. $row_count= mysql_num_rows($result_wynik);
  28. if($row_count == 0) {
  29. $message ='<p>Brak wyszukiwanej pozycji!</p>';
  30. } else {
  31. while ($row = mysql_fetch_array($result_wynik)) {
  32. print (&#092;"<table height=\"100\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">
  33. <tr>
  34. <td rowspan=&#092;"4\" width=\"30%\"></td>
  35. <td width=&#092;"50%\">\");
  36. printf (&#092;"%sn\", $row [\"tytul\"]);
  37. printf (&#092;", %sn\" , $row [\"autor\"]);
  38. print (&#092;"<td width=\"20%\" rowspan=\"4\">\");
  39. printf (&#092;"<tr><td> %sn\" , $row [\"cena\"]);
  40. printf (&#092;"<tr><td> %sn\" , $row [\"wydawnictwo\"]);
  41. print (&#092;"<tr><td height=\"50\">Opis:  %sn </table>\");
  42. }
  43. mysql_free_result($result_wynik);
  44. $query_wyczysc = &#092;"DROP TABLE tmp\";
  45. ?>
ikioloak
U ciebie linia 26:
  1. <?php
  2.  
  3. $query_wynik= &#092;"SELECT autor , tytul , opis FROM books WHERE id = book_id \";
  4.  
  5. ?>

Co to jest book_id? nie powinna to byc czasem jakas zmienna?
Chcesz szybciej wylapywac bledy - po kazdym mysql_query() daj: or die(mysql_error());
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.