Problem z wyszukiwarką na swojej stronie

0

Witam wszystkich :)

Mam pewien problem z wyszukiwarką na swojej stronie. Albo czegoś nie rozumiem.
Na swojej stronie stworzyłem wyszukiwarkę i wyszukuje to w niżej wymieniony sposób:

$co = trim($post['tekst']);
            SELECT * FROM `V_listaW` WHERE `marka` LIKE '%{$co}%' OR `model` LIKE '%{$co}%'

Mam tabele w której znajdują się między innymi kolumny marka i model

I dajmy na to w bazie mam rekord gdzie marka to Opel, a model to Vectra C

I gdy wpiszę w pole wyszukiwania Opel to dostanę wynik, tak samo jak wpiszę Vectra, ale kiedy wpiszę Opel Vectra to nie dostaje żadnego rekordu. Czego to może być wina oraz jak to naprawić, żeby po wpisaniu Opel Vectra otrzymać odpowiedni rekord z bazy?

Z góry dziękuje za odpowiedź

0

A czy w twojej tabeli jest jakiś rekord w którym marka lub model to 'Opel Vectra''? Możesz stworzyć dwa pola do wyszukiwania(marka, model) i odpowiednio zmienić zapytanie, to było by dosyć proste rozwiązanie.

0

Najprościej rozdzielić stringa na każde osobne słowo, i potem pętelką ładnie można dodać do zapytania każdą komórke z tablicy. Dla przykładu Opel Vectra będziesz miał tablica Array([0]=>Opel,[1]=>Vectra);

0

w tej chwili sprawdzasz czy pole model lub pole marka zawierają słowa "Opel Vectra" obok siebie
w rzeczywistości masz te słowa rozdzielone na dwie kolumny

potrzebujesz to rozwiązać w inny sposób; najlepiej jakbyś utworzył indeks fulltext - wtedy masz dostęp do wyszukiwania pełnotekstowego który oferuje funkcje przeznaczone do wyszukiwania po tekście, np:

SELECT * FROM V_listaWWHERE MATCH (marka,model) AGAINST ('{$co}');

Twoje obecne zapytanie jest też podatne na SQL Injection - nie lep zapytań w ten sposób, użyj odpowiedniej biblioteki lub ostatecznie mysqli->real_escape_string

dodanie znacznika <code class="php"> - fp

0

Korzystam z PDO

EDIT:
Rozwiązane przy pomocy FULLTEXT

Dzięki ytrytwre

0

@nansss: korzystasz z PDO i lepisz zapytania ręcznie = wciąż masz dziurę!

0

A jak mam tworzyć zapytania? Wszystko jest w klasie mysql obrobione i tylko wywołuje odpowiednią metodę

0

w jakiej klasie mysql? pokaż jakiś przykład jak składasz zapytanie od A do Z

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0