поиск по БД
Пробовал писать поиск по базе, вот что получилось:
$search=$_GET["ins"];
$skey=preg_replace("/[^\w\x7F-\xFF]/", " ", $search);
$skey=trim($skey);
$key = preg_split ("/[\s]+/", $skey);
$kol_vo=sizeof($key);
$query="SELECT * FROM Table WHERE ";
for ($i=0;$i <= $kol_vo-2; $i++) {$query="$query name_razdel LIKE '$key[$i]' OR "; };
$query="$query name_razdel LIKE '$key[$i]'";
echo $query;
$result = mysql_query($query,$db);
echo "<table border=1>\n";
echo "<tr><td>Name</td></tr>\n";
while ($myrow = mysql_fetch_row($result))
{
printf("<tr><td bgcolor=#66ffff>%s</td></tr>\n", $myrow[0]);
}
echo "</table>\n";
Это не работает как хотелось, т.е. выводит строки в которые входит хотя бы одно из слов.
В данном случае выводит только при полном соответствии да и то только с одним словом :(
Может кто подскажет почему.
Заранее благодарен.
Цитата:
Originally posted by Stasyan
Сразу предупреждаю, я слабоват в PHP .
Пробовал писать поиск по базе, вот что получилось:
$search=$_GET["ins"];
$skey=preg_replace("/[^\w\x7F-\xFF]/", " ", $search);
$skey=trim($skey);
$key = preg_split ("/[\s]+/", $skey);
$kol_vo=sizeof($key);
$query="SELECT * FROM Table WHERE ";
for ($i=0;$i <= $kol_vo-2; $i++) {$query="$query name_razdel LIKE '$key[$i]' OR "; };
$query="$query name_razdel LIKE '$key[$i]'";
echo $query;
$result = mysql_query($query,$db);
echo "<table border=1>\n";
echo "<tr><td>Name</td></tr>\n";
while ($myrow = mysql_fetch_row($result))
{
printf("<tr><td bgcolor=#66ffff>%s</td></tr>\n", $myrow[0]);
}
echo "</table>\n";
Это не работает как хотелось, т.е. выводит строки в которые входит хотя бы одно из слов.
В данном случае выводит только при полном соответствии да и то только с одним словом :(
Может кто подскажет почему.
Заранее благодарен.
Сразу предупреждаю, я слабоват в PHP .
Пробовал писать поиск по базе, вот что получилось:
$search=$_GET["ins"];
$skey=preg_replace("/[^\w\x7F-\xFF]/", " ", $search);
$skey=trim($skey);
$key = preg_split ("/[\s]+/", $skey);
$kol_vo=sizeof($key);
$query="SELECT * FROM Table WHERE ";
for ($i=0;$i <= $kol_vo-2; $i++) {$query="$query name_razdel LIKE '$key[$i]' OR "; };
$query="$query name_razdel LIKE '$key[$i]'";
echo $query;
$result = mysql_query($query,$db);
echo "<table border=1>\n";
echo "<tr><td>Name</td></tr>\n";
while ($myrow = mysql_fetch_row($result))
{
printf("<tr><td bgcolor=#66ffff>%s</td></tr>\n", $myrow[0]);
}
echo "</table>\n";
Это не работает как хотелось, т.е. выводит строки в которые входит хотя бы одно из слов.
В данном случае выводит только при полном соответствии да и то только с одним словом :(
Может кто подскажет почему.
Заранее благодарен.
name_razdel LIKE '%".$key[$i]."%'
все остольное так же думую все заработает :)
Код:
$search=$_GET["ins"];
$skey=preg_replace("/[^\w\x7F-\xFF]/", " ", $search);
$skey=trim($skey);
$key = preg_split ("/[\s]+/", $skey);
$kol_vo=sizeof($key);
$query="SELECT * FROM Table WHERE ";
for ($i=0;$i <= $kol_vo-2; $i++) {$query.="locate(\"$key[$i]\",name_razdel)>0 OR "; };
$query.=" locate(\"$key[$i]\",name_razdel)>0";
echo $query;
$result = mysql_query($query);
echo "<table border=1>\n";
echo "<tr><td>Name</td></tr>\n";
while ($myrow = mysql_fetch_row($result))
{
printf("<tr><td bgcolor=#66ffff>%s</td></tr>\n", $myrow[0]);
}
echo "</table>\n";
$skey=preg_replace("/[^\w\x7F-\xFF]/", " ", $search);
$skey=trim($skey);
$key = preg_split ("/[\s]+/", $skey);
$kol_vo=sizeof($key);
$query="SELECT * FROM Table WHERE ";
for ($i=0;$i <= $kol_vo-2; $i++) {$query.="locate(\"$key[$i]\",name_razdel)>0 OR "; };
$query.=" locate(\"$key[$i]\",name_razdel)>0";
echo $query;
$result = mysql_query($query);
echo "<table border=1>\n";
echo "<tr><td>Name</td></tr>\n";
while ($myrow = mysql_fetch_row($result))
{
printf("<tr><td bgcolor=#66ffff>%s</td></tr>\n", $myrow[0]);
}
echo "</table>\n";
Спасибо за помощь. Разобрался, теперь все работает как надо 8)