Помощь Запрос к базе для поиска по полю

Тема в разделе "DLE", создана пользователем Bobrov, 5 апр 2009.

Информация :
Актуальная версия DataLife Engine 11.3
( Final Release v.11.3 | Скачать DataLife Engine | Скачать 11.3 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 11.2 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Статус темы:
Закрыта.
Модераторы: killoff
  1. Bobrov

    Bobrov Постоялец

    Регистр.:
    7 авг 2008
    Сообщения:
    145
    Симпатии:
    13
    Подскажите, вот это в дле 7.5 не работет

    Код:
    $search_result = $db->query ( "SELECT title, good_descr FROM " . PREFIX . "_shop WHERE MATCH (good_descr) AGAINST('$story')" );
    Как реализовать поиск по полю? Пытаюсь реализовать собственный поиск по сайту.

    Вот остальной код:
    Код:
    if( ! defined( 'DATALIFEENGINE' ) ) {
    	die( "Hacking attempt!" );
    }
    
    if ( isset( $_REQUEST['story'] )) 
    {
    $story = $_REQUEST['story'];
    }
    if ( isset( $_REQUEST['submit_s'] )) 
    {
    $submit_s = $_REQUEST['submit_s'];
    }
    
    if (empty ($story) or strlen ($story) < 4)
    {
    $smessage = <<<HTML
    <p>Вы ввели слишком короткий запрос, пожалуйста уточните его.</p>
    HTML;
    }
    
    $story = trim ( $story );
    $story = stripslashes ( $story );
    $story = htmlspecialchars ( $story );
    				
    			$search_result = $db->query ( "SELECT title, good_descr FROM " . PREFIX . "_shop WHERE MATCH(good_descr) AGAINST('$story')" );
    			
    
    if ( $db->num_rows ( $search_result ) != 0 )
    {
    	     	 $buffer = <<<HTML
    	<table cellpadding="4" cellspacing="0" border="0">
    HTML;
    
    
    	         $tpl->load_template ( 'shop/goods.tpl' );
    
    		  	 $count = 0;
    	         while ( $row = $db->get_row ( $search_result ))
    	         {
    	         	  $count++;
    	         	  $tpl->result['goods'] = "";
                      
                       if ( $count == 1 )
    	           	 {
    	           	 	  $buffer .= "<tr>";
    	           	 }
    	             
                  
                     $description = stripslashes ( $row['good_descr'] );
                     
                     if ( strlen ( $description ) >= 200 )
                     {
                     $descr = substr( $description,0,200 ) ."...";
                     }
                     else
                     {
                     $descr = $description;
                     }
                    
                     $tpl->set ( '{descr}',		$descr );
    				 
    				 $tpl->set ( '{diler}', $diler );
    
    	             $tpl->set ( '{title}', stripslashes ( $row['title'] ));
    				 
    	           	 $tpl->compile( 'goods' );
            
    
          $buffer .= "<td width=\"50%\" style=\"padding:4px\" valign=\"top\">" . $tpl->result['goods'] . "</td>";
    
    	if ( $count == 2 )
    	           	 {
    	           	 	  $buffer .= "</tr>";
    	           	 	  $count   = 0;
    	           	 }
    
    	         }
    
    			 $buffer .= <<<HTML
    	</table>
    HTML;
    
    
    	    }
    
    	    else
    
    	    {
    	    	$buffer = "По Вашему запросу не найдено ни одного товара!";
    	    }
    
    	    $tpl->load_template ( 'search.tpl' );
    	    $tpl->copy_template = $JS . $tpl->copy_template;
    	 	$tpl->set ( '{smessage}', $smessage );
    	 	$tpl->set ( '{content}', $buffer );
    	    $tpl->compile( 'content' );
    
    ?>
     
  2. z3rg

    z3rg

    Регистр.:
    2 фев 2007
    Сообщения:
    731
    Симпатии:
    336
    лучше поставь поиск от гугла и не заморачивайся потомучто лучше не сделаешь, стандартный поиск там отстой, и если чтото переделывать так полностью все
     
  3. kendo

    kendo Создатель

    Регистр.:
    8 сен 2008
    Сообщения:
    35
    Симпатии:
    1
    полностью согласен. была таже заморочка. поставил гугль поиск. все работает
     
  4. Bobrov

    Bobrov Постоялец

    Регистр.:
    7 авг 2008
    Сообщения:
    145
    Симпатии:
    13
    Вот рабочий вариант простейшего поиска по собственной таблице
    Код:
    if( ! defined( 'DATALIFEENGINE' ) ) {
    	die( "Hacking attempt!" );
    }
    
    if ( isset( $_REQUEST['story'] )) 
    {
    $story = $_REQUEST['story'];
    }
    if ( isset( $_REQUEST['submit_s'] )) 
    {
    $submit_s = $_REQUEST['submit_s'];
    }
    
    if (empty ($story) or strlen ($story) < 4)
    {
    $smessage = <<<HTML
    <p>Вы ввели слишком короткий запрос, пожалуйста уточните его.</p>
    HTML;
    }
    
    $story = trim ( $story );
    $story = stripslashes ( $story );
    $story = htmlspecialchars ( $story );
    				
    			$search_result = $db->query ( "SELECT title, good_descr FROM " . PREFIX . "_shop WHERE good_descr LIKE '%".$story."%'");
    			
    
    if ( $db->num_rows ( $search_result ) != 0 )
    {
    	     	 $buffer = <<<HTML
    	<table cellpadding="4" cellspacing="0" border="0">
    HTML;
    
    
    	         $tpl->load_template ( 'shop/goods.tpl' );
    
    		  	 $count = 0;
    	         while ( $row = $db->get_row ( $search_result ))
    	         {
    	         	  $count++;
    	         	  $tpl->result['goods'] = "";
                      
                       if ( $count == 1 )
    	           	 {
    	           	 	  $buffer .= "<tr>";
    	           	 }
    	             
                  
                     $description = stripslashes ( $row['good_descr'] );
                     
                     if ( strlen ( $description ) >= 200 )
                     {
                     $descr = substr( $description,0,200 ) ."...";
                     }
                     else
                     {
                     $descr = $description;
                     }
                    
                     $tpl->set ( '{descr}',		$descr );
    				 
    	             $tpl->set ( '{title}', stripslashes ( $row['title'] ));
    				 
    	           	 $tpl->compile( 'goods' );
            
    
          $buffer .= "<td width=\"50%\" style=\"padding:4px\" valign=\"top\">" . $tpl->result['goods'] . "</td>";
    
    	if ( $count == 2 )
    	           	 {
    	           	 	  $buffer .= "</tr>";
    	           	 	  $count   = 0;
    	           	 }
    
    	         }
    
    			 $buffer .= <<<HTML
    	</table>
    HTML;
    
    
    	    }
    
    	    else
    
    	    {
    	    	$buffer = "По Вашему запросу не найдено ни одного товара!";
    	    }
    
    		$tpl->load_template ( 'search.tpl' );
    	    $tpl->copy_template = $JS . $tpl->copy_template;
    		$tpl->set ( '{story}', $story );
    	 	$tpl->set ( '{smessage}', $smessage );
    	 	$tpl->set ( '{content}', $buffer );
    	    $tpl->compile( 'content' );
    
    ?>
     
Статус темы:
Закрыта.