Войти

Показать полную графическую версию : Проблема с регистром букв (PHP+MySQL)


soundofa
04-10-2006, 23:10
Вот, попытался написать более-менее поисковик на свой сайт, возникла проблема в строчке

if (strstr($sqltext,"$text")) {
Сдесь я сравниваю текст в mysql базе, с искомым словом.
Проблема в том, что если человек искал "Microsoft", а в тексте написанно "microsoft", то слово считается неподходящим =/
Собственно как отвязать поисковик от различения регистра букв?

Код целиком:
<html>
<head>
<title>Поиск</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<? include("root/setup.php"); ?>
<?
//Присутствует ли в поиске спец. символ?
if (strstr($text,"<")!=false) {
echo ("Некорректный запрос. Ошибка 1.");
exit;
}

//Не пустая ли строчка?
If ($text=='') {
echo ("Некорректный запрос. Ошибка 2.");
exit;
}

else

echo("
Вы искали <b>$text</b>.<br><br>
");
$id=0;
$count=0;
$ir=0;

//получение количества строк в таблице
$count_row=mysql_query ("SELECT COUNT(*) FROM ofa_wwww");
$count_row_array= mysql_fetch_array($count_row);
$count_row_array[0]=$count_row_array[0]-1;

//Соеденяемся с MySQL базой, получаем нужную нам информацию.
for ($in=0; $in<$count_row_array[0]; $in++) {
$id++;
$myquery="select id,text,razdel from ofa_wwww";
$sel=mysql_query($myquery) or die ("Error. Please contact webmaster.");
$idd = mysql_result($sel,$id,"id");
$sqltext = mysql_result($sel,$id,"text");
$sqltitle = mysql_result($sel,$id,"razdel");

//Проверяем, есть ли в строчке таблицы ofa_wwww, искомое слово.
if (strstr($sqltext,"$text")) {
$count++;
echo("
$count.
");

echo("+<A HREF='index.php?idd=$idd'>$sqltitle</a><br>");

}

}
//Если ничего не найдено.
if ($count==0) {
echo("Ничего не найдено. Попробуйте смягчить параметры поиска.");
}

?>
</body>
</html>
P.S. сильно не пинать, я только учусь ;)

soundofa
04-10-2006, 23:58
балин, stristr %)

mar
05-10-2006, 00:01
soundofa
SELECT id, text, razdel from ofa_wwww WHERE lcase(text) like '%microsoft%';

Igor_I
05-10-2006, 20:25
soundofa
И сколько строчек в базе? Просто непонятно как оно работает.

Arrest
06-10-2006, 06:41
soundofa
Может просто написать

if (strstr(strtolower($sqltext), strtolower("$text"))) {

Igor_I
06-10-2006, 21:48
soundofa
В данном случае неправильно перекладывать на плечи PHP то , что может сделать сама база. А если в базе миллион строк - цикл будет выполнятся миллион раз? То есть надо использовать WHERE
http://dev.mysql.com/doc/ - мануал, хоть и по 4 версии, но все же на русском.
количество возвращенных строк - mysql_num_rows()

mar
06-10-2006, 23:19
soundofa
Arrest
ну, собственно, тот запрос, который я выше написала можно считать иллюстрацией к объяснению Igor_I :)




© OSzone.net 2001-2012