Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не работает поиск
 
 автор: Stasycat   (27.02.2008 в 18:02)   письмо автору
 
 

У меня на сайте есть поиск товара. Он ищет название из таблицы MySQL и выдаёт результаты. Проблема в том, что он ищет только полное вхождение, т.е. слово должно закончится.
Пример: если ищу "мыши", то выводятся только названия "мышей", а мне нужно, чтобы туда попадали и названия "мышиный", "мыши-звери" и т.д.
А при вводе слова "мыш" он вообще ничего не выводит!

Вот код:

<?php     
        $link 
mysql_connect("mysql.root5.ru""dbu_monyc_2""werbnm"
        or die(
"Не соединилось!!!"); 
        
mysql_select_db("db_monyc_3") or die("Не найдена БД");              

        
$query "select * from materialy order by material";
        
$result mysql_query($query) or die($query);
        
$row mysql_fetch_array($result);
        
        
$poisk$_POST['poisk'];                     
                         
$poisk trim($poisk);
             
            ...

              echo 
"Вы искали: <span class='page_name'>$poisk</span>";
             echo 
"<br><br>";
              while (
$row mysql_fetch_array($result))
                    {     
                     
$mat $row['material']; 
                     
$id $row['id_materiala']; 
                     
$ed_izm$row['ed_izm']; 
                     
$cost $row['primer']; 
                     
$mat=strtolower($mat);
                     
$poisk=strtolower($poisk);
              
                     if((
stristr($mat$poisk)!=False))
                             {
                             
вывод результатов  }
    
            


И ещё - почему не работает преобразование в ниж. регистр?

   
 
 автор: mihdan   (27.02.2008 в 18:06)   письмо автору
 
   для: Stasycat   (27.02.2008 в 18:02)
 

>не работает преобразование в ниж. регистр
установите русскую локаль setlocale()


<?
setlocale
(LC_ALL'ru_RU.CP1251');
?> 




<?
if((stristr($mat$poisk)!=False))
                             {
                             
вывод результатов  
?>


Это по вашему поиск? Это просто сравнение. Пошарьте поиск

   
 
 автор: Stasycat   (28.02.2008 в 09:05)   письмо автору
 
   для: mihdan   (27.02.2008 в 18:06)
 

А что это - русскуя локаль?

Я до этого уже делала на другом сайте такой поиск, но было это год назад, версии php и mysql, видимо, были другие. Мой поиск всего лишь должен проверять - входит ли искомое слово в название товара (всего один столбец таблицы). На прошлом сайте получалось.

А все другие поиски, которые я встречала, осуществляют "Поиск по сайту" или в текстовых файлах. Но это не то.

Посоветуйте, как по-другому решить эту задачу, без примитивного вхождения подстроки?

   
 
 автор: Fighter   (28.02.2008 в 10:42)   письмо автору
 
   для: Stasycat   (28.02.2008 в 09:05)
 

Используй регулярные выражения типа



$query_tovar=mysql_query("select * from tovar");

for($i=0;$i<=mysql_num_rows($query_tovar);$i++)
{
$all_tovar=mysql_fetch_array($query_tovar);

$_1=strtolower($poisk); //Перевод в нижний регистр запрос от пользователя
$_2=strtolower($all_tovar["name"]); //Перевод в нижний регистр имени товара из базы

if(@ereg("$_1",$_2)==true) // ereg ищит именно вхождение в строку, проверяем есть ли вхождение
{
echo "Результат";
}
}

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования