Wyszukiwarka w PHP

0

Witam serdecznie,
Mam taką bazę danych:

CREATE TABLE IF NOT EXISTS `produkty` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `promotion` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`),
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 

zrobiłem sobie wyszukiwarkę która wyszukuje mi produkty:

$tablicaA = $ms->query_select("SELECT * FROM produkty WHERE name like '%".$szukanafraza."%' ORDER by name ASC;");
foreach ($tablicaA as $wynA => $warttA) {
....
....
}

(kod w uproszczeniu)

Problem w tym że po wpisaniu nazwy produktu idealnie pasującej zapisowi w bazie wszystko wyszukuje poprawnie, ale w przypadku np. wpisania 2 wyrazów z 3, albo nazwy w innej kolejności ("drzwi przednie" zamiast "przednie drzwi") skrypt nic nie wyszukuje :( Wie ktoś może jak to łatwo przerobić żeby wyszukiwał?

Z góry dziękuje za pomoc,
Łukasz

0

Przede wszystkim nie korzystaj z like, najlepiej zapomnij, że takie coś istnieje. To czym powinieneś się zainteresować nazywa się Full-Text.

0

@sirkruk czasem nie ma wyboru i trzeba użyć LIKE zwłaszcza kiedy trzeba wyszukać elementy z niedokładnym wyrażeniem, ale wtedy trzeba pamiętać o przetworzeniu zapytania i wycięciu/zamienieniu wszystkich potencjalnie niebezpiecznych znaków na neutralne odpowiedniki.

0

@gtdesign, tak jak powiedział sirkruk, użyj Full-Text'a, ponieważ Like jest zabójcze dla baz przy dużej ilości zapytań.

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