ByLex
Новичок
Всем привет. Есть самописный движок. Есть файл отвечающий за поиск search.php. Есть артикул товара, например 12a2hr-12 и есть артикул 12a2hr-25. При поиске выдает два результата. И тот и тот. Как делать поиск строки целиком? Т.е.е если я ввел 12a2hr-12, то и результат выдачи был соответственно один 12a2hr-12. Товаров много и у всех похожий артикул....и в выдаче идет куча похожих товаров...Необходимо реализовать поиск строки целиком. Но сделать не могу. За поиск артикула товара отвечает type1, здесь и прописывается артикул товара в базе mysql. Подскажите пожалуйста. Помогите дописать поиск. Спасибо.
PHP:
<?php
function print_cat_path($id) {
$res = mysql_query("select idp,path from grandi_catalog where id = '$id'");
while (list($idp, $path) = mysql_fetch_array($res)) {
if ($path) {
$pth = $path."/".$pth;
}
else {
$pth = $id."/".$pth;
}
$res = mysql_query("select idp,path from grandi_catalog where id = '$idp'");
}
return $pth;
}
?>
<table width="100%">
<?php
if (issets($str)) {
$str = trim($str);
$all_counter = 0;
$sql = '( SELECT 1, isprod, id, name, concat( string1, string2, string3, string4, string5, string6, string7, string8, string6, string10 ) , concat( text1 ) , '
. ' MATCH ( name, string1, string2, string3, string4, string5, string6, string7, string8, string6, string10, text1 )'
. ' AGAINST ( \'+'.str_replace(' ', '* +', $str).'*\''
. ' IN BOOLEAN'
. ' MODE ) AS sort'
. ' FROM grandi_catalog'
. ' WHERE MATCH ( name, type1, string1, string2, string3, string4, string5, string6, string7, string8, string6, string10, text1 )'
. ' AGAINST ( \'+'.str_replace(' ', '* +', $str).'*\''
. ' IN BOOLEAN'
. ' MODE )
and hide != 1
'
. ' GROUP BY name )'
;
$result = mysql_query($sql);
$j = 1;
while (list($num,$isprod,$id,$name,$info,$text)=@mysql_fetch_array($result)) {
if ($num == 1){
$link = "/".print_cat_path($id);
}
else if($num == 2){
$link = "/".$info."/";
}
else if($num == 3) {
if ($isprod == 1) {
$link = "/news/".$id."/";
}
}
?>
<tr>
<td valign="top"><strong> <?= sprintf("%02d", $j) ?> </strong></td>
<td valign="top" width="100%">
<?php
if ($info || $num != 2) {
echo "<a href=\"".$link."\">".eregi_replace($str, "<font color='#00214C'>".$str."</font>", $name)."</a><br>";
}
while(ereg(" ",$text)){
$text = ereg_replace(" "," ",$text);
}
$text = ereg_replace(" "," ",$text);
$text = explode(" ",brp_repl($text));
$string = "";
for($f=0; $f%10 != 9 and isset($text[$f]); $f++) $string .= $text[$f]." ";
while($string){
if(eregi($str,$string)){
$tmp .= '...'.eregi_replace($str,"<font color='#00214C'>".$str."</font>",$string).'...';
}
if($tmp) print $tmp."<br>";
$tmp = "";
$string = "";
if($text[$f]) $string = $text[$f]." ";
$f++;
for( ; $f%10 != 9 and isset($text[$f]); $f++) $string .= $text[$f]." ";
}
?>
<a href="<?=$link?>">http://<?= $HTTP_HOST.$link?></a>
</td>
</tr>
<tr><td colspan="2"> </td></tr>
<?php
$j++;
}
$part_old = $part;
$j++;
$all_counter = $all_counter + $j;
if ($all_counter == 2) {
?>
<tr><td colspan="2" align="center">По Вашему запросу ничего не найдено. Попробуйте сформулировать свой запрос по-другому.</td></tr>
<?php
}
?>
<?php
}
?>
</table>