Помощ за скрипт за търсачка

emcuemnecu

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


// Това са текстовете в, които ще се търси. Може да ги заместите с каквото пожелаете. Може да ги изкарате от файл примерно :) 
$str = array(); 
$str[] = "Песен: Swan - Пиян Напушеняк <br /> Може да я чуете на адрес: <a href='http://bgrapar.com/mp3/Swan-Pian-Napusheniak'> тук</a>"; 
$str[] = "Песен: Swan - Принципи <br /> Може да чуете трака <a href='http://bgrapar.com/mp3/Swan_Principi'> от тук</a>"; 
$str[] = "Биографията на Swan <a href='http://bgrapar.com/artisti/Swan'> може да прочетете тук</a>"; 

$str[] = "Песен: DreBuS feat Malkia G - Отново <br /> Може да я чуете на адрес: <a href='http://bgrapar.com/mp3/Drebus-feat-MalkiaG-Otnovo'> тук</a>"; 
$str[] = "Песен: DreBuS - Моето момиче <br /> Може да я чуете на адрес: <a href='http://bgrapar.com/mp3/DreBuS-Moeto-momiche'> тук</a>"; 
$str[] = "Песен: DreBuS feat Kristi - Звездни мигове <br /> Може да я чуете на адрес: <a href='http://bgrapar.com/mp3/Drebus_feat_Kristi_Zvezdni_Migove'> тук</a>"; 


$str[] = "Песен: Igrata feat Pesho Malkia - Разделени <br /> Може да я чуете на адрес: <a href='http://bgrapar.com/mp3/Pesho-Malkia-feat-Igrata-Razdeleni'> тук</a>"; 
$str[] = "Песен: Igrata feat Alex P  - Gangsta <br /> Може да я чуете на адрес: <a href='http://bgrapar.com/mp3/Igrata_feat_AlexP_Gangsta'> тук</a>"; 











// Формата за търсене 
echo "<form action=\"\" method=\"post\">"; 
echo " <input type=\"text\" name=\"searches\" size=\"70\" 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> символа!"; } 
} 
?>
 

Back
Горе