Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Поиск строки целиком

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
ByLex
Отправлено: 02 Марта, 2011 - 10:53:38
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




Всем привет. Есть самописный движок. Есть файл отвечающий за поиск search.php. Есть артикул товара, например 12a2hr-12 и есть артикул 12a2hr-25. При поиске выдает два результата. И тот и тот. Как делать поиск строки целиком? Т.е.е если я ввел 12a2hr-12, то и результат выдачи был соответственно один 12a2hr-12. Товаров много и у всех похожий артикул....и в выдаче идет куча похожих товаров...Необходимо реализовать поиск строки целиком. Но сделать не могу. За поиск артикула товара отвечает type1, здесь и прописывается артикул товара в базе mysql. Подскажите пожалуйста. Помогите дописать поиск. Спасибо.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. function print_cat_path($id) {
  4.         $res = mysql_query("select idp,path from grandi_catalog where id = '$id'");
  5.         while (list($idp, $path) = mysql_fetch_array($res)) {
  6.                 if ($path) {
  7.                         $pth = $path."/".$pth;
  8.                 }
  9.                 else {
  10.                         $pth = $id."/".$pth;
  11.                 }
  12.                 $res = mysql_query("select idp,path from grandi_catalog where id = '$idp'");
  13.         }
  14.         return $pth;
  15. }
  16.  
  17. ?>
  18.  
  19. <table width="100%">
  20.  
  21. <?PHP
  22. if (issets($str)) {
  23.         $str = trim($str);
  24.         $all_counter = 0;
  25.         $sql = '( SELECT 1, isprod, id, name, concat( string1, string2, string3, string4, string5, string6, string7, string8, string6, string10 ) , concat( text1 ) , '
  26.         . ' MATCH ( name, string1, string2, string3, string4, string5, string6, string7, string8, string6, string10, text1 )'
  27.         . ' AGAINST ( \'+'.str_replace(' ', '* +', $str).'*\''
  28.         . ' IN BOOLEAN'
  29.         . ' MODE ) AS sort'
  30.         . ' FROM grandi_catalog'
  31.         . ' WHERE MATCH ( name, type1, string1, string2, string3, string4, string5, string6, string7, string8, string6, string10, text1 )'      
  32.         . ' AGAINST ( \'+'.str_replace(' ', '* +', $str).'*\''
  33.         . ' IN BOOLEAN'
  34.         . ' MODE )
  35.    and hide != 1
  36.    '
  37.         . ' GROUP BY name )'
  38.         ;
  39.         $result = mysql_query($sql);
  40.  
  41.         $j = 1;
  42.         while (list($num,$isprod,$id,$name,$info,$text)=@mysql_fetch_array($result)) {
  43.                 if ($num == 1){
  44.                         $link = "/".print_cat_path($id);
  45.                 }
  46.                 else if($num == 2){
  47.                         $link = "/".$info."/";
  48.                 }
  49.                 else if($num == 3) {
  50.                         if ($isprod == 1) {
  51.                                 $link = "/news/".$id."/";
  52.                         }
  53.                 }
  54.                 ?>
  55.                
  56.                 <tr>
  57.                         <td valign="top"><strong>&nbsp;<?= sprintf("%02d", $j) ?>&nbsp;</strong></td>
  58.                         <td valign="top" width="100%">
  59.                        
  60.                         <?PHP
  61.                         if ($info || $num != 2) {
  62.                                 echo "<a href=\"".$link."\">".eregi_replace($str, "<font color='#00214C'>".$str."</font>", $name)."</a><br>";
  63.                         }
  64.                         while(ereg("&nbsp;&nbsp;",$text)){
  65.                                 $text = ereg_replace("&nbsp;&nbsp;","&nbsp;",$text);
  66.                         }
  67.                         $text = ereg_replace("&nbsp;"," ",$text);
  68.                         $text = explode(" ",brp_repl($text));
  69.                         $string = "";
  70.                         for($f=0; $f%10 != 9 and isset($text[$f]); $f++) $string .= $text[$f]." ";
  71.                         while($string){
  72.                                 if(eregi($str,$string)){
  73.                                         $tmp .= '...'.eregi_replace($str,"<font color='#00214C'>".$str."</font>",$string).'...';
  74.                                 }
  75.                                 if($tmp) print $tmp."<br>";
  76.                                 $tmp = "";
  77.                                 $string = "";
  78.                                 if($text[$f]) $string = $text[$f]." ";
  79.                                 $f++;
  80.                                 for( ; $f%10 != 9 and isset($text[$f]); $f++) $string .= $text[$f]." ";
  81.                         }
  82.                         ?>
  83.                         <a href="<?=$link?>">http://<?= $HTTP_HOST.$link?></a>
  84.                         </td>
  85.                        
  86.                 </tr>
  87.                 <tr><td colspan="2">&nbsp;</td></tr>
  88.                
  89.                 <?PHP
  90.                 $j++;
  91.         }
  92.        
  93.         $part_old = $part;
  94.         $j++;
  95.        
  96.         $all_counter = $all_counter + $j;
  97.         if ($all_counter == 2) {
  98.         ?>
  99.        
  100.         <tr><td colspan="2" align="center">По Вашему запросу ничего не найдено. Попробуйте сформулировать свой запрос по-другому.</td></tr>
  101.        
  102.         <?PHP
  103.         }
  104.         ?>
  105.  
  106. <?PHP
  107. }
  108. ?>
  109.                        
  110. </table>
 
 Top
DeepVarvar Супермодератор
Отправлено: 02 Марта, 2011 - 12:29:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




ByLex пишет:
артикул товара

А пользователь ищет артикул???
Может быть проще искать название, вид, принадлежность по LIKE "$str%"?
 
 Top
ByLex
Отправлено: 02 Марта, 2011 - 12:38:30
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




Это магазин автозапчастей. Там идет поиск по артиклу. Т.е. номеру автозапчасти. С php туго очень. если есть способ пожалуста напишите поточнее, что и как заменить или дописать. Большое всем спасибо.
 
 Top
DeepVarvar Супермодератор
Отправлено: 02 Марта, 2011 - 16:32:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `catalog` WHERE `articul` = "$str";

А как же еще???
 
 Top
ByLex
Отправлено: 02 Марта, 2011 - 16:55:19
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




дскажите в какое место это дописать...я в php вообще почти ноль
(Добавление)
я бы заплатил если бы помогли. Вот моя ася 24307013
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB