![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
bylex |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 22.11.2008 Репутация: нет Всего: нет |
Всем привет. Есть самописный движок. Есть файл отвечающий за поиск 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>[/php] |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
bylex, всё здорово, вот только ты не сказал какая у тебя строка поиска что выдаёт разные результаты
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
bylex |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 22.11.2008 Репутация: нет Всего: нет |
Что то не понял? type1 это артикул товара, который из таблицы берется. А при поиске почему то обрезает и ищет то что до тире..есть два товара например артикул 12a2hr-12 а у второго 12a2hr-25, при поиске одного из них выдает два результата, та.к. до тире у них идет одинаковый номер. Помогите пожалуйста кто нибудь. готов отблагодарить. В асю напишите 242307013.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |