Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wybranie rekordów z bazy danych zawierajacych dane słowo
Forum PHP.pl > Forum > PHP
masta105
Witam. mam kod
  1. <h3 id="nazwa">Lista Filmów znajdujaca sie w bazie:)</h3>
  2. <?php
  3. include ('index.php');
  4.  
  5.  
  6. $zapytanie = "SELECT DISTINCT gatunek FROM filmy ORDER BY gatunek ASC";
  7.  
  8. $gatunek = mysql_query($zapytanie) or die('Blad: ' . mysql_error());
  9.  
  10.  
  11. while ($rekord = mysql_fetch_assoc($gatunek)) {
  12.  
  13. echo "<h4>" . $rekord['gatunek']."</h4>\n";
  14.  
  15. $zapytanie = "SELECT nazwa , gatunek, rok, gdzie, uwagi FROM filmy
  16. WHERE gatunek='". $rekord['gatunek'] ."' ORDER BY gatunek DESC";
  17.  
  18.  
  19.  
  20. $filmy = mysql_query($zapytanie) or die ('Wybór flimow nieudany, blad: ' . mysql_error());
  21. $razem = mysql_num_rows($filmy);
  22.  
  23.  
  24. ?>
  25.  
  26. <table id="tablesorter-demo" class="tablesorter" border="0" cellpadding="0" cellspacing="1">
  27. <thead>
  28. <tr>
  29. <th class="header ">&nbsp;</th>
  30. <th class="header headerSortDown">Nazwa:</th>
  31. <th class="header headerSortUp">Gatunek:</th>
  32. <th class="header">Rok:</th>
  33. <th class="header">Gdzie:</th>
  34. <th class="header">Uwagi:</th>
  35.  
  36. </tr></thead>
  37. <?php
  38.  
  39.  
  40. while ($prod = mysql_fetch_assoc($filmy)) {
  41.  
  42.  
  43. ?>
  44. <td>
  45. <a href="<?php echo $_SERVER['PHP_SELF'];?>?akcja=usun&id=<?php echo $prod['rok'];?>">usun</a>
  46. </td>
  47. <?php
  48. echo "<td>" . $prod['nazwa'] . "</td><td>". $prod['gatunek'] ."</td><td>". $prod['rok'] ."</td><td>". $prod['gdzie'] ."</td><td>". $prod['uwagi'] ."</td>";
  49.  
  50. echo "</tr>\n";
  51. }
  52.  
  53. ?>
  54. </table>
  55. <b>Razem: <?php echo $razem;?> film/ow.</b><p />
  56. <?php
  57. }
  58.  
  59.  
  60. ?>
  61. <tbody></tbody>
  62. <table>
  63. </body>
  64. </html>
i potrzebuje żeby zapytanie wyszukiwało i wyświetlało wyniki zawierających słowo np. komedia wraz z innymi wyrazami.
gdzieś czytałem że można użyć LIKE lecz gdy próbuje je "wcisnąć" w kod wyskakują mi błedy
croc
LIKE albo MATCH AGAINTS. Poczytaj o nich, to nic trudnego.
masta105
a możesz mnie jeszcze jakoś na kierowaćquestionmark.gif
elektrrrus
google.pl
masta105
znalazłem coś lecz przy próbie wyświetlenia wyskakuje mi
  1. Wybór flimow nieudany, blad: Something is wrong in your syntax obok 'MATCH(gatunek) AGAINST ('kom') AS score ORDER BY gatunek DESC' w linii 2
a oto kod
  1. $zapytanie = "SELECT nazwa , gatunek, rok, gdzie, uwagi FROM filmy
  2. WHERE gatunek='". $rekord['gatunek'] ."' MATCH(gatunek) AGAINST ('kom') ORDER BY gatunek DESC";
croc
Nie działało Ci prawdopodobnie dlatego, że pogubiłeś się z apostrofami. Poradź się wuja Google i spróbuj jeszcze raz.

EDIT
Zobacz jak się wstawia kilka warunków naraz.
masta105
w zapytaniu czy całym kodzie? gdy mam zapytanie
  1. $zapytanie = "SELECT nazwa , gatunek, rok, gdzie, uwagi FROM filmy
  2. WHERE gatunek='". $rekord['gatunek'] ."' ORDER BY gatunek DESC";
wszystko było ok gdy dodałem
  1. MATCH(gatunek) AGAINST ('kom')
wyskakuje bład
croc
Na tym forum nikt nie pomaga leniwcom afrykańskim. Wykaż trochę dobrej woli, to na pewno sam dojdziesz do tego co jest błędem. Chyba że masz zerowe pojęcie o PHP/MySQL, to będzie ciężko. Bo kod - jak mniemam - nie jest Twój.
masta105
nie kod nie jest mój posiadam go z kursu. Edytuje w miarę możliwości i swoich możliwości + próby, i pomoc na forach. przeglądam różne strony na temat MATCH AGAINST lecz moje rezultaty są marne
abort
http://dev.mysql.com/doc/refman/5.5/en/retrieving-data.html

Tam jest o zadawaniu zapytań do bazy. To jest podstawa, na tym na razie się wyłożyłeś.
masta105
gdy kod
  1. $zapytanie = "SELECT nazwa , gatunek, rok, gdzie, uwagi FROM filmy
  2. WHERE rok='". $rekord['rok'] ."' AND rok ORDER BY rok DESC";
(rok ma typ INT) i działa poprawnie a kod
  1. $zapytanie = "SELECT nazwa , gatunek, rok, gdzie, uwagi FROM filmy
  2. WHERE gatunek='". $rekord['gatunek'] ."'AND gatunek ORDER BY gatunek DESC";
(gatunek ma typ varchar) jest niepoprawny gdyż nie wyświetlają się wynik gdy usunąłem AND gatunek wyświetlają się wynik. jest to wynik różnych typów przechowywania rekordów?
croc
Nie, to jest wynik źle zapisanego zapytania. Zrób sobie:
  1. echo $zapytanie;

I mam nadzieję, że sam zobaczysz, że coś jest nie tak...
masta105
dzięki znalazłem ten problem i działa. teraz jak użyje MATCH i AGAINST wraz z
  1. gatunek='". $rekord['gatunek'] ."'
powinno chodzić jeśli nie to musze szukać dalej
croc
Pamiętaj, że MATCH AGAINST nie działa w tabelach typu InnoDB. Pamiętaj też, że musisz nałożyć indeks typu FULLTEXT na pole, na którym chcesz użyć MATCH AGAINST.
masta105
udało mi się wykorzystać LIKE.
w phpMyAdmin nałozyłem FULLTEXT (tak mi sie wydaje)
Nazwa klucza |Typ |Moc |Pole
PRIMARY | PRIMARY | 481 | id
gatunek | FULLTEXT | 43 | gatunek

kod taki mam
  1. $zapytanie = "SELECT nazwa , gatunek, rok, gdzie, uwagi FROM filmy
  2. WHERE gatunek='". $rekord['gatunek'] ."' AND MATCH (gatunek) AGAINST('komed') ORDER BY gatunek DESC";
i wychodzi mi

  1. SELECT nazwa , gatunek, rok, gdzie, uwagi FROM filmy WHERE gatunek=' Dramat, Komedia' AND MATCH (gatunek) AGAINST('komed') ORDER BY gatunek DESCWybór flimow nieudany, blad: Can't find FULLTEXT index matching the column list
croc
Google naprawdę wie.

A swoją drogą to czytasz chociaż te swoje zapytania? Bo poza błędem z indeksem masz kilka innych - weź się w garść, chłopie thumbsdownsmileyanim.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.