Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Wyszukiwarka, Zapytanie LIKE nie jest optymalne
majestiq
post 27.08.2008, 17:37:11
Post #1





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

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


Na stronie mam wyszukiwarke plików.

Po wpisaniu w pole SEARCH dane z bazy są porównywane z wpisanym wzorcem w ten sposób:

  1. <?php
  2. $sql = 'SELECT id,tytul,rozmiar,licznik,dlugosc FROM `'.$tabelka.'` WHERE `tytul` LIKE '%'.$wykonawca.'%' ORDER by tytul LIMIT 1000 ';
  3. ?>


No i załóżmy ktoś wpisze: ' boys szalona' to mi nie znajdzie kawałka którego tytuł to: "boys - szalona" lub "boys - jesteś szalona"
tylko dokładnie taki ciąg jaki został wpisany.

Jak poprawić to zapytanie, żeby wyszukiwarka zwracała bardziej trafne wyniki tzn jak wpisze jakieś słowa to poprostu wystarczy, żeby się one znalazły w tytule
i ma zostać zwróćony wynik a nie tylko gdy te słowa występują w identycznym ciągu jak ten który został wpisany ?

Mam nadzieje że jest zrozumiałe o co mi chodzi smile.gif


--------------------
Free mp3 download.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nevt
post 27.08.2008, 21:24:52
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


Można też w prostszy sposób:

zmień kod na
  1. <?php
  2. $wykonawca = str_replace(' ', '%', $wykonawca);
  3. $sql = "SELECT id, tytul, rozmiar, licznik, dlugosc FROM `$tabelka` ".
  4. "WHERE `tytul` LIKE '%$wykonawca%' ORDER by tytul LIMIT 1000 ";
  5. ?>


A jeżeli ma szukać wyników bez względu na kolejność słów, to musisz poczytać o indeksach FULLTEXT oraz składni polecania SQL: ... MATCH ... AGAINST

Powodzenia.

PS. Zapytanie SQL podzieliłem na 2 linijki bo przy jednej lay forum się rozjeżdża...


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 20:52