Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2010, 19:09   #1
mrgrudge
Форумчанин
 
Аватар для mrgrudge
 
Регистрация: 20.02.2010
Сообщений: 229
Печаль MySQL поиск

есть форма поиска

Код:
<div class="searchdiv">
<form action="search.php" method="post">
<div class="nav2_div"><h4>Поиск по сайту</h4></div>
<input class="searchfield" name="what" type="text" size="20" maxlength="22" />
<input class="searchbut" name="submit" type="submit" />
</form>
</div>
и есть база данных в MySQL с несколькими полями,
форма соответственно отсылает методом пост на search.php текст того что нужно найти в бд
search.php соответственно это дело принимает,проверяет
PHP код:


if (isset ($_POST['what']))   
 {
$what $_POST['what'];}           
  else {
$what "";};
if (isset (
$_POST['sub_com'] ))

{if (empty (
$what))
  {exit (
"<p class='sysinfo'>введите запрос!<br> <input name='back' type='button' value='Вернуться назад' onclick='javascript:self.back();'></p>");}
  else {   
$what htmlspecialchars($what); 
и все....и фиг его знает как находить совпадения с базой, там по сути нужно сравнивать введенноев поле с ячейками одного столбца типа text...вот может кто подсказать как поступить в данной ситуации?
думай как баг, действуй как баг, и ты найдешь баг )
mrgrudge вне форума Ответить с цитированием
Старый 17.05.2010, 19:17   #2
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

Делаешь запрос к базе. Все упирается в знание mysql.
Прочитай про 'LIKE'
Вот примерчик от меня:
PHP код:
$word 'Котяра';
$q mysql_query('SELECT * FROM names WHERE test LIKE "%'.$word.'%"'); 
А после циклом "вытягиваешь" результат=)
Все просто.
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 17.05.2010, 19:53   #3
mrgrudge
Форумчанин
 
Аватар для mrgrudge
 
Регистрация: 20.02.2010
Сообщений: 229
По умолчанию

ясно, циклом то я вытащить смогу....

$myrow = mysql_fetch_array($q);

хм....а если в $word попадет "олтичное кино" а в базе будет тока "супер кино" "перво классное кино" и т.п.? что конкретно попадет в $myrow['test']?
Ничего или все что содержит "кино"?
думай как баг, действуй как баг, и ты найдешь баг )
mrgrudge вне форума Ответить с цитированием
Старый 17.05.2010, 20:11   #4
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

найдет все совпадения со строкой "отличное кино"
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 17.05.2010, 20:33   #5
mrgrudge
Форумчанин
 
Аватар для mrgrudge
 
Регистрация: 20.02.2010
Сообщений: 229
По умолчанию

а можно как нить расковырять? ну т.е. в запросе "отличное кино"
чтоб сравнивало и по "отличное" и по "кино" ну т.е. в результат попадали след записи:
"классное кино"
"крутое кино"
"отличное пиво"
думай как баг, действуй как баг, и ты найдешь баг )
mrgrudge вне форума Ответить с цитированием
Старый 17.05.2010, 20:38   #6
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

можно. Но алгоритм будет сложнее.
вот так примерно.
PHP код:
$word 'отличное кино';
$arr explode(' '$word);
...
$end 'WHERE name LIKE "%'.$arr[0].'%" or "%'.$arr[1].'%"';
... 
Всех секретов не раскрою=)
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 17.05.2010, 20:43   #7
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

разбиваешь исходную строку на слова (причем желательно на адекватные - например длинною более 2 символов) и в запросе в цикле строишь нечто
.... аа... spein уже показал))))
кста - можно галку сделать типа искать ВСЕ слова или ЛЮБОЕ
меняя в строке or на and )))
ADSoft вне форума Ответить с цитированием
Старый 17.05.2010, 20:49   #8
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

лучше не менять, а условием выводить все в 1 параметр. В результате скорость обработки увеличится.
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Старый 17.05.2010, 20:50   #9
mrgrudge
Форумчанин
 
Аватар для mrgrudge
 
Регистрация: 20.02.2010
Сообщений: 229
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
разбиваешь исходную строку на слова например длинною более 2 символов)
вот с этого момента поподробнее если можно) честно говоря не знаю как сосчитать символы в слове..о_0
думай как баг, действуй как баг, и ты найдешь баг )
mrgrudge вне форума Ответить с цитированием
Старый 17.05.2010, 20:52   #10
spein
Программист
Форумчанин
 
Аватар для spein
 
Регистрация: 27.02.2009
Сообщений: 505
По умолчанию

Я показал, как разбить строку на слова....
there are no limits when you're software engineer
spein вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск PHP, MySQL, flash программистаов Milevshi Фриланс 4 14.05.2010 14:49
Нужна база на mySQL(поиск в последовательности по частичке кода) Serg64 Фриланс 1 26.04.2010 12:07
Здраствуйте! Как в Mysql выполнить фрагментированный поиск? Warlruss SQL, базы данных 0 08.10.2009 16:03
обновление в блоге - Работа с MySQL в С++ с использованием библиотеки mysql++ Pblog Обсуждение статей 0 16.08.2009 16:00
PHP Поиск в MySQl LeoN PHP 10 08.07.2008 07:10