Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]zapytanie mysql
dje31
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 17.03.2009
Skąd: Karpacz

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/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) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Proszę o pomoc
Go to the top of the page
+Quote Post
blooregard
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




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)
Go to the top of the page
+Quote Post
dje31
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 17.03.2009
Skąd: Karpacz

Ostrzeżenie: (0%)
-----


A jakieś prostsze rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/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"



Ten post edytował dje31 8.04.2009, 13:18:53
Go to the top of the page
+Quote Post
piotrooo89
post
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




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.
Go to the top of the page
+Quote Post
dje31
post
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 17.03.2009
Skąd: Karpacz

Ostrzeżenie: (0%)
-----


Dzięki to jest rozwiązanie na które nie wpadłem
a generalnie faktycznie jest proste (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Dzięki Pozdrawiam
Go to the top of the page
+Quote Post
piotrooo89
post
Post #6


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




choć ja Ci polecam fulltext. naprawdę można z tym niezłe rzeczy zrobić.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 08:59