Търсене от MYSQL

rumchi

Registered
Как да направя тази търсачка:

Код:
<?php 
// CONFIG // 
$min_simb = 3; // колко символа минимум трябва да въведе потребителя 
$max_simb = 50; // колко символа максимум може да въведе потребителя 
$and_or = true; // ако оставите "true" ще връща резултати само ако съществуват всички въведени думи от потребителя, ако напишете "false" тогава ще връща резулати, в които участва поне една от думите. 
$h_g = true; // ако оставите "true" ще различава малки и големи букви, ако напишете "false" няма да прави разлика между малки и големи букви 


// Това са текстовете в, които ще се търси. Може да ги заместите с каквото пожелаете. Може да ги изкарате от файл примерно :) 
$str = array(); 
$str[] = "Тук текст 1 :)"; 
$str[] = "Тук текст 2 :)"; 
$str[] = "Тук текст 3 :)"; 


// Формата за търсене 
echo "<form action=\"\" method=\"post\">"; 
echo "Търси: <input type=\"text\" name=\"searches\" size=\"50\" maxlength=\"$max_simb\"> <input type=\"submit\" name=\"submit\" value=\"Търси\">"; 
echo "</form>"; 

if (isset($_POST['submit']) && !empty($_POST['searches'])) { // ако е натиснат бутона и е въведено нещо в формата продължаваме 
if (strlen($_POST['searches']) >= $min_simb && strlen($_POST['searches']) <= $max_simb) { // ако сме спазили минимални и максималния брой символи за търсене продължаваме 
$search = array(); // създаваме празен масив 

$razd = explode(" ",$_POST['searches']); // разделяме въведеното от потребителя на думи 
foreach ($razd as $s) { 
$search[] = $s; // вкарваме думите в по-горе създадения масив 
} 

for ($i=0;$i<count($str);$i++) { // започваме цикъл със всички текстове 
if ($and_or) { $searched = 1; } else { $searched = 0; } // създаваме променлива, която ще играе важна роля по-долу при определяне на резултатите 
foreach($search as $value) { 
if ($h_g) { str_replace($value,'',$str[$i],$count); } else { str_ireplace($value,'',$str[$i],$count); } // тук определяме дали да различава малките и големи букви или не 

if ($and_or) { // ако сме избрали да връща резултати само ако съществуват всички въвдени думи 
if ($count == 0) { 
$searched = 0; 
break; 
} 
} else { 
if ($count >= 1) { // ако сме избрали да връща резултати дори и да съвпада една от въведените думи 
$searched = 1; 
break; 
} 
} 
} 
if ($searched == 1) { 
$result[] = $i; // записваме в нов масив върнатите резултати 
} 
} 


// тука вече изкарваме резултатите на екрана :) 
if (count($result) >= 1) { 
if (count($result) == 1) { $res = "резултат"; } else { $res = "резултати"; } 
echo "Търсенето Ви върна <b>".count($result)."</b> $res!<br /><br />"; 
$n=1; 
foreach($result as $key) { 
echo $n.". <b>".$str[$key]."</b><br />"; 
$n++; 
} 
} else { 
echo "Търсенето Ви НЕ върна резултати!"; 
} 
} else { echo "Трябва да въведете от <b>$min_simb</b> до <b>$max_simb</b> символа!"; } 
} 
?>


да търси от тази датабаза:



Код:
CREATE TABLE `songs_cat` ( 
`id` int(4) NOT NULL auto_increment, 
`value` varchar(255) NOT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

INSERT INTO `songs_cat` VALUES (1, 'Demi Lovato'); 
INSERT INTO `songs_cat` VALUES (2, 'Selena Gomez'); 
INSERT INTO `songs_cat` VALUES (3, 'Miley Cyrus'); 
INSERT INTO `songs_cat` VALUES (4, 'Ashley Tisdale'); 
INSERT INTO `songs_cat` VALUES (5, 'Jonas Brothers'); 


CREATE TABLE `songs` ( 
`id` int(4) NOT NULL auto_increment, 
`author` varchar(255) NOT NULL, 
`artist` varchar(255) NOT NULL, 
`title` varchar(255) NOT NULL, 
`path` varchar(255) NOT NULL, 
`year` varchar(255) NOT NULL, 
`album` varchar(255) NOT NULL, 
`size` varchar(255) NOT NULL, 
`cat` varchar(255) NOT NULL, 
`date` varchar(255) NOT NULL, 
`broken` varchar(255) NOT NULL default '0', 
PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Тоест като въведеш името на песента и да я търси.
Идеи :D ?
 
Пробвай с



SELECT *
FROM Customers
WHERE Phone LIKE '%$row[SEARCHED_THING]%'

Дано ме разбра
 

Back
Горе