Проблем с търсачка

bilbe

Registered
Здравейте. Имам малък проблем с търсачката.
Примерно когато търся: име1 име2 , а в базата данни ми е записано име1, име2 - не ми връща резултат. Същото е и със тирето в базата данни.
Примерно имам: Стринг1 Стринг2 - Стринг3 Стринг 4 в базата данни и задам да търси така: Стринг1 Стринг3 не ми връща никакъв резултат. Заявката ми е така:
"SELECT * FROM table WHERE tabla_name like '%$search%'

Къде греша и защо не ми връща резултати? Нещо не е както трябва по заявката или ?
 

palex

Registered
следното нещо ще реши проблема ти донякъде:

PHP:
$search=str_replace(" ","%",$search);
$result = mysql_query("SELECT * FROM table WHERE tabla_name like '%$search%'");
но ако въведеш:
"име2 име1" то пак няма да даде резултат. Наистина за по-сериозни търсения трябва да се ползва FullText search. Другата опция е да генерираш динамично where клаузата по подобен на следния начин:
PHP:
	$sql = '';
	$implode = array();
	if (trim($search)!='') {
		$words = explode(' ', trim($search));
		$sql = "WHERE";
		foreach ($words as $word) {
			$word=trim($word);
			if (strlen($word)>2)
				$implode[] = "tabla_name LIKE '%$word%'";
		}
		if ($implode) 
			$sql .= " " . implode(" OR ", $implode) . "";
	}	
	$result = mysql_query("SELECT * FROM table $sql");
 

bilbe

Registered
Здравейте. Мерси за отговорите. Пробвах да генерирам динамично where клаузата, но при търсене например на : Стринг 3 Стринг1, при записани в БД-то Стринг1 Стринг2 - Стринг3 Стринг4 отново не намира нищо. Някакваи идеи ?
 

bilbe

Registered
Код:
        $sql = '';
        $implode = array();
        if (trim($search)!='') {
                $words = explode(' ', trim($search));
                $sql = "WHERE";
                foreach ($words as $word) {
                        $word=trim($word);
                        if (strlen($word)>2)
                                $implode[] = "tabla_name LIKE '%$word%'";
                }
                if ($implode) 
                        $sql .= " " . implode(" OR ", $implode) . "";
        }       
        $result = mysql_query("SELECT * FROM table $sql");

просто си заместих с моята база данни и таблиците. Имам примерно Стринг1 - Стринг 2 Стринг 3 Стринг 4 и потърся Стринг4 Стринг3 Стринг2 Стринг1 и не ми връща резултат. Връща ми резултат, когато търся в нарастваща последователност, т.е. Стринг1,Стринг2...
 

Горе