Точно търсене в mysql

PHP:
$ex = explode(' ', $string);
foreach ($ex as $val)
{
$search .= "'$val' OR `zaglavie` LIKE ";
}
$search = substr($search, 0, -15);
//echo $search;
$data = mysql_query("SELECT * FROM `table` WHERE (`zaglavie` LIKE ".$search.")");             


$rezultati = mysql_num_rows($data);
if($rezultati == NULL || $rezultati == 0){
        echo '<center>Търсенето на <b>'.$string.'</b> не откри резултати.</center>  ';
}else{
echo " <center>Намерени са <b> $rezultati </b> резултата на <b> $string </b></center> <br> ";

while($row = mysql_fetch_array($data)){
:idea:

Ако не пробвай така:
PHP:
$ex = explode(' ', $string);
foreach ($ex as $val)
{
$search .= "'%$val%' OR `zaglavie` LIKE ";
}
$search = substr($search, 0, -15);
//echo $search;
$data = mysql_query("SELECT * FROM `table` WHERE `zaglavie` LIKE ".$search."");             


$rezultati = mysql_num_rows($data);
if($rezultati == NULL || $rezultati == 0){
        echo '<center>Търсенето на <b>'.$string.'</b> не откри резултати.</center>  ';
}else{
echo " <center>Намерени са <b> $rezultati </b> резултата на <b> $string </b></center> <br> ";

while($row = mysql_fetch_array($data)){
 
Полето е varchar, това проблем ли е?
PHP:
$data = mysql_query("SELECT * FROM table WHERE ime LIKE '%$string%'");

Така изкарва резултати.. :shock:
 
webdeveloper каза:
Полето е varchar, това проблем ли е?
PHP:
$data = mysql_query("SELECT * FROM table WHERE ime LIKE '%$string%'");

Така изкарва резултати.. :shock:
Не е проблем varchar.
Сега видях. Ти променил ли си това:
PHP:
$ex = explode(' ', [color=red]$string[/color])
:idea:
 
webdeveloper каза:
Какво трябва да му се промени? :idea:
:shock:
Слагаш променливата която е за търсенето. Тоест: Ако имаш $q = $_GET['q']; или $q = $_POST['q']; там слагаш вместо $string - $q.
Но сега като се замисля, не е това проблема, защото ти нали каза, че този резултат го имаш в базата данни. :idea:
 
Прбовах и следното:

PHP:
$data = mysql_query("SELECT * FROM table WHERE zaglavie LIKE 'море'");

И изписва, че няма резултати. В кирилицата ли ще е проблема?

$data = mysql_query("SELECT * FROM table WHERE zaglavie LIKE '%$string%'");

Макар, че тук стринга също е на кирилица и няма проблем...
 
Не мога да намеря проблема..
Пробва ли като сложиш:
PHP:
mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER SET utf8");
:idea:
 
Аз го намерих, без проценти не намира резултати, но ако има проценти намира.

Тоест така неще:

$search .= "'$val' OR `zaglavie` LIKE "; а така намира:

$search .= "'%$val%' OR `zaglavie` LIKE ";

Но сега проблема е точно с тия проценти... Първите резултати, които ми изкарва изобщо нямат нищо общо с търсенето, защото тоя процент малко скапва нещатата...
 
Поразрових се из гугъл и това ми върши чудесна работа за сега:

PHP:
$data = mysql_query("SELECT * FROM tableWHERE MATCH(zaglavie) AGAINST ('$string+' IN BOOLEAN MODE)");


Благодаря на всички благоволили да ударят едно рамо. :)
 
webdeveloper каза:
Поразрових се из гугъл и това ми върши чудесна работа за сега:

PHP:
$data = mysql_query("SELECT * FROM tableWHERE MATCH(zaglavie) AGAINST ('$string+' IN BOOLEAN MODE)");


Благодаря на всички благоволили да ударят едно рамо. :)

Поздравления - това и аз не го бях чувал още.

Дано не ти се наложи утре да преместиш тая система на PostgreSQL, че ще я започнем всички отначало. :)
 

Back
Горе