Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]zapytanie mysql
Forum PHP.pl > Forum > Przedszkole
dje31
Witam
Chcę stworzyć skrypt wyszukiwarki który wyszukuje mi zadaną fraze w bazie danych i zwraca wynik.
Bardziej szczegółowo to tak:
Pobieram z formularza frazę dziele ją poprzez
$fraza_tab = explode(" ", $fraza);

następnie wywołuje funkcje:
wyszukaj($fraza_tab);

w funkcji mam zapytania do bazy:
$zapytanie = "select * from dane where nazwa like '% $fraza_tab[0] %' || nazwa like '$fraza_tab[0] %'";
itp.
Pytanie moje brzmi:
Czy mogę w środek zapytania wstawić pętle for lub foreach??
jeżeli będzie więcej niż jeden wyraz to niech sprawdzi warunki dla pierwszego drugiego itd
Tylko w jaki sposób nadać zapytanie questionmark.gif

Czy jedynym wyjściem jest wzięcie całego zapytania w pętle i sprawdzać poklei dla
każdego wyrazu (co stwarza prawdopodobienstwo powtarzania się rekordów) questionmark.gif

Proszę o pomoc
blooregard
A nie możesz zastosować przeszukiwania pełnotekstowego? Zakładasz index FULLTEXT na kolumnę, z której wyszukujesz dane, a następnie w zapytaniu dajesz:
  1. ... WHERE MATCH (nazwa) AGAINST ( $fraza_tab[0],$fraza_tab[1] ... $fraza_tab[n])

Zakładam, ze masz tabele IMyISAM (dla InnoDB MATCH...AGAINST niestety nie działa)
dje31
A jakieś prostsze rozwiązanie questionmark.gif

Do "przeszukiwania pełnotekstowego" muszę jeszcze się douczyć.

Treść zapytania rozumiem ale tego nie bardzo
"Zakładasz index FULLTEXT na kolumnę, z której wyszukujesz dane"

piotrooo89
masz takie mega proste:

  1. <?php
  2. $fraza = 'jaki tam sobie text';
  3. $rozwal = explode(' ', $fraza);
  4. foreach ($rozwal AS $wartosc)
  5. {
  6.    $ciag .= 'nazwa like %'.$wartosc.'% || ';
  7.    $where = substr($ciag, 0, -3);
  8. }
  9. echo $where;
  10. ?>


możesz sobie to przerobić, stworzyć funkcje w której podasz nazwę kolumny w tabeli, tablice etc.
dje31
Dzięki to jest rozwiązanie na które nie wpadłem
a generalnie faktycznie jest proste biggrin.gif

Dzięki Pozdrawiam
piotrooo89
choć ja Ci polecam fulltext. naprawdę można z tym niezłe rzeczy zrobić.
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.