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> символа!"; }
}
?>