• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

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

Статус
В этой теме нельзя размещать новые ответы.

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' );

?>
 
лучше поставь поиск от гугла и не заморачивайся потомучто лучше не сделаешь, стандартный поиск там отстой, и если чтото переделывать так полностью все
 
лучше поставь поиск от гугла и не заморачивайся потомучто лучше не сделаешь, стандартный поиск там отстой, и если чтото переделывать так полностью все

полностью согласен. была таже заморочка. поставил гугль поиск. все работает
 
Вот рабочий вариант простейшего поиска по собственной таблице
Код:
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' );

?>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху