Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Prosta wyszukiwarka z bazy mysql
Forum PHP.pl > Forum > Przedszkole
fx57

Witam.

Mam małą prośbę odnośnie takiego skryptu:

Chcę zrobić zapytanie do bazy żeby system wyszukał mi dany rekord. Zapytanie odnosi się do całej tabeli a w niej znajdują się 3 kolumny. I teraz właśnie konieczne jest zapytanie złożone w postaci kilku wyrazów.
Następnie wypisanie wierszy rekordów do których by pasowało zapytanie.

Proszę o pomoc


-------------------------------------------------------------------------------------------------------------
  1. <?
  2. if (mysql_connect($sql_serwer, $sql_login, $sql_haslo)
  3.  
  4. and mysql_select_db($sql_baza)) {
  5. mysql_query("INSERT INTO $sql_tabela SET $sql_baza]}'");
  6. $wynik = mysql_query("SELECT * FROM $sql_tabela WHERE temat='*Problem*1*' ");
  7. $result = MYSQL_QUERY($query);
  8.  
  9. if ($wynik) {
  10. echo "<tr> <td colspan= 7 class=\"linia1\">Lista tematów w Bazie :</td></tr>";
  11.  
  12. echo"<tr> <td class=\"linia3\" width=\"30\">Numer ID tematu</td>
  13. <td class=\"linia3\" width=\"150\">Temat</td>
  14. <td class=\"linia3\" width=\"30\">Autor</td>
  15. <td class=\"linia3\" width=\"30\">Opcja</td> </tr>";
  16. while($dane=mysql_fetch_assoc($wynik)) {
  17.  
  18. if (++$i>1) echo "<tr>";
  19.  
  20. echo "
  21.  
  22. <td class=\"linia2\">ID tematu : {$dane[id]}</td>
  23. <td class=\"linia2\">{$dane[temat]}</td>
  24. <td class=\"linia2\">{$dane[autor]}</td>
  25. <td class=\"linia2\">
  26. <form action=\"look.php\" method=\"GET\">
  27. <input type=hidden name=\"id\" value=\"$dane[id]\">
  28. <input type=hidden name=\"temat\" value=\"$dane[temat]\">
  29. <input type=hidden name=\"problem\" value=\"$dane[opis_problemu]\">
  30. <input type=hidden name=\"rozwiazanie\" value=\"$dane[opis_rozwiazania]\">
  31. <input type=hidden name=\"autor\" value=\"$dane[autor]\">
  32. <input type=hidden name=\"kontakt\" value=\"$dane[kontakt]\">
  33. <input type=submit value=\"Pokaż\"/>
  34. </form></a>
  35. </td>
  36. </tr>";
  37.  
  38. }
  39. }
  40. }
  41. ?>
Pawel_W
poczytaj o % LIKE % , WHERE, i OR / AND winksmiley.jpg

najlepiej na webmade tam był chyba fajny tutorial z którego się uczyłem winksmiley.jpg był nawet temat robimy prostą wyszukiwarkę ;D
marian2299
Taka rada... zamiast zamieniać " na \" w kodzie html echo zaczynaj tak: echo ' HTML ';
fx57
Cytat(marian2299 @ 16.08.2009, 17:14:08 ) *
Taka rada... zamiast zamieniać " na \" w kodzie html echo zaczynaj tak: echo ' HTML ';


dzieki za rade a może uzasadnisz ją dlaczego?

Cytat(Pawel_W @ 16.08.2009, 17:10:04 ) *
poczytaj o % LIKE % , WHERE, i OR / AND winksmiley.jpg

najlepiej na webmade tam był chyba fajny tutorial z którego się uczyłem winksmiley.jpg był nawet temat robimy prostą wyszukiwarkę ;D


dzieki wielkie za rade ale nic tam nie znalazłem... :-(

Pozdrawiam
Andaramuxo
Może to Ci pomoże: http://www.webtips.pl/post15745.html
CyberDuck_
Zapytania mozesz sobie tworzyc tak samo w zmiennych jak i
zdania, czesci stron, etc ...
Wiec zbuduj sobie w zmiennej zapytanie :
  1. $zapytanie = "login LIKE '%" .$fraza ."%'";

Wczesniej oczywiscie musisz zadbac zeby np fraza miala nie mniej niz 3 znaki, zeby nie bylo
znakow specjalnych, itd ... to zalezy wylacznie od Ciebie.
Teraz LIKE oznacza jak i to co jest w cudzyslowie.
Jesli podasz przed :
a. %fraza - to poczatek nie ma znaczenia, koniec szukanego zdania musi sie zgadzac
b. %fraza% - szukana czesc moze stac na poczatku, srodku lub koncu
c. fraza% - szukane slowo musi sie zaczyna tak jak fraza, dalsza czesc nie ma znaczenia.
Czyli jesli dla przykladu w bazie masz loginy Tomek, Marek, Kasia, Timek i zadasz pytanie :
LIKE '%mek'
to otrzymasz dwie odpowiedzi :
Tomek i Timek ...
Oczywiscie takie pytania mozesz laczyc :
  1. $zapytanie = "login LIKE '%" .$fraza ."%' AND login LIKE '%" .$fraza2 ."%'";

W tym wypadku baza bedzie przeszukiwana wedlug dwoch slow
i musza one zawierac sie w znalezionych wynikach jednoczesnie.
Jesli postawisz OR to moga wystepowac slowa w wiekszej ilosci rekordow.
Mozesz oczywiscie tez sortowac wyniki wedlu zadanych kryteriow co masz
w ponizzszym przykladzie : ORDER BY data_przyl limit 5

  1. $result = mysql_query("SELECT id, login FROM uzytkownicy WHERE $zapytanie ORDER BY data_przyl limit 5");
  2. while(list($id, $login) = mysql_fetch_row($result)) {
  3. echo "$id - $login<br>";
  4. }
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.