Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

нужен скрипт поиска по базе

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> нужен скрипт поиска по базе
Имя
Сообщение << Старые топики   Новые топики >>
нужен скрипт поиска по базе - 2009-02-11 12:51:03.123333   
magistr_bender

Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
нужен очень простой скрипт поиска по базе данных..
принцип работы такой:
ввожу я слово в форму, нажимаю найти и мне выдаёт все идшники в которых встречается это слово хотябы 1 раз

может у кого есть наработки готовые?

возможно есть SQL команда, которая возвращает список полей, в которых хотябы раз встречается заданная фраза?
Post #: 1
RE: нужен скрипт поиска по базе - 2009-02-11 13:18:24.820000   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
$text_to_search='текст для поиска'; $res=mysql_query("SELECT * FROM таблица WHERE поле LIKE '%$text_to_search%'"); или если надо искать в нескольких полях, то: WHERE поле LIKE '%$text_to_search%' OR&nbsp;поле2 LIKE '%$text_to_search%'&nbsp; OR поле3 LIKE '%$text_to_search%' и т.д. $nums=mysql_num_rows($res); if ($nums) {&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; echo "Найдено: $nums&lt;br /&gt;&lt;br /&gt;"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while ($row=@mysql_fetch_assoc($res)) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo "ID={$row['id']} - text={$row['поле']}&lt;br /&gt;"; &nbsp;&nbsp;&nbsp;&nbsp; } }else{ &nbsp;&nbsp;&nbsp;&nbsp; echo "Не найдено"; }
Post #: 2
RE: нужен скрипт поиска по базе - 2009-02-11 13:33:34.883333   
magistr_bender

Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
на самом деле хватило бы и просто
"SELECT * FROM таблица WHERE поле LIKE '%$text_to_search%'"
))))
спс +2
Post #: 3
RE: нужен скрипт поиска по базе - 2009-02-11 15:33:17.720000   
magistr_bender

Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
а как можно добавить релевантность в поиск? вообще по какому принципу она работает
Post #: 4
RE: нужен скрипт поиска по базе - 2009-02-12 05:29:49.233333   
TurboXaker

Сообщений: 385
Оценки: 0
Присоединился: 2008-05-23 01:05:40.516666
quote:

а как можно добавить релятивность в поиск? вообще по какому принципу она работает

SELECT * FROM таблица WHERE поле LIKE '%$text_to_search%'выбирает все записи из таблица где в поле встречается $text_to_search

тока настоятельно перед этим рекомендую обработать $text_to_search на защиту от SQL-инъекций:
$text_to_search = mysql_real_escape_string($text_to_search);
Post #: 5
RE: нужен скрипт поиска по базе - 2009-02-12 08:39:13.050000   
magistr_bender

Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
но ведь $text_to_search может состоять необязательно из одного слова… как в таком случае быть?
поидее надо разбить строку на массив и каждое слово по отдельности искать и делать выборки… задача так сказать не из просиых :)
Post #: 6
RE: нужен скрипт поиска по базе - 2009-02-12 22:56:07.773333   
azimzaim

Сообщений: 320
Оценки: 0
Присоединился: 2009-01-04 22:14:32.760000
Советую прочитать эту книгу http://depositfiles.com/files/bblvt8npu.&nbsp; На странице приблизительно 467 описан готовый класс для работы с MySQL: поиск, создание, инсерт данных, все, что хотите. А чуть ниже описано какие ключевые методы используются, то есть обычный пример тестирования.

P.S. Хотя на мой взгляд, скрипт довольно таки сложный. Прочитав этот я написал свой, немножко попроще, выставлять не буду, а то скажете, что не по феншую.
Post #: 7
RE: нужен скрипт поиска по базе - 2009-02-12 23:50:55.373333   
_hel_

Сообщений: 103
Оценки: 0
Присоединился: 2008-07-09 16:00:40.600000
quote:

поидее надо разбить строку на массив и каждое слово по отдельности искать и делать выборки… задача так сказать не из просиых :)

можно одним запросом сделать это, насколько я помню.
Post #: 8
RE: нужен скрипт поиска по базе - 2009-02-13 05:48:23.970000   
Панда

Сообщений: 232
Оценки: 0
Присоединился: 2008-03-05 07:38:35.890000
FULLTEXT
Post #: 9
RE: нужен скрипт поиска по базе - 2009-02-13 10:32:13.633333   
magistr_bender

Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
ммм… а каким образом?
можете подсказать?:)
Post #: 10
RE: нужен скрипт поиска по базе - 2009-02-15 00:28:27.866666   
magistr_bender

Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
реализовал релевантность почитав пхп.су таким методом

&lt;html&gt; &lt;head&gt; &lt;meta http-equiv="Content-Type" content="text/html; charset=windows-1251"&gt; &lt;head&gt; &lt;body&gt; &lt;form action="search.php" method="post"&gt; мЮГБЮМХЕ ЛЮЦЮГХМЮ&lt;br&gt;&lt;input type="text" name="s" size="60" value="&lt;?=$_POST['s']?&gt;"&gt;&lt;br&gt; &lt;input type="submit" name="submit" value="хЯЙЮРЭ"&gt; &lt;input type="reset" name="reset" value="нВХЯРХРЭ"&gt;&lt;/form&gt; &lt;br&gt;&lt;br&gt; &lt;?php class Debug { public function startTimer() { global $starttime; $mtime = microtime (); $mtime = explode (' ', $mtime); $mtime = $mtime[1] + $mtime[0]; $starttime = $mtime; } public function endTimer() { global $starttime; $mtime = microtime (); $mtime = explode (' ', $mtime); $mtime = $mtime[1] + $mtime[0]; $endtime = $mtime; $totaltime = round (($endtime - $starttime), 5); return $totaltime; } } $debag = new Debug; $debag-&gt;startTimer(); function search () { /* яНЕДХМЕМХЕ, БШАНП ад */ $rows=10; $link = mysql_connect("localhost", "root", "i like marina") or die("мЕ ЯНЕДХМХКНЯЭ!!!"); mysql_select_db("managment") or die("мЕ МЮИДЕМЮ ад"); mysql_query("SET NAMES 'cp1251';"); $text_to_search=$_POST['s']; // if ($id=mysql_query("SELECT id FROM company_list WHERE name LIKE '%$text_to_search%'")) if ($id=mysql_query("SELECT id MATCH name AGAINST ('".$text_to_search."')+MATCH descr AGAINST ('".$text_to_search."') as relev FROM db_gorod_dn_ua ORDER BY relev DESC")) { $count=0; while ($row=@mysql_fetch_assoc($id)) $count++; if ($count%10 != 0) $count = intval($count/$rows)+1; else $count = intval($count/$rows); if(isset($_POST['page'])) $page = $_POST['page']; else $page=1; $page1 = $page*$rows-$rows; $page2 = $page1 + $rows; // $res=mysql_query("SELECT * FROM company_list WHERE name LIKE '%$text_to_search%' LIMIT ".$page1.", ".$page2); $res=mysql_query("SELECT * MATCH name AGAINST ('".$text_to_search."')+MATCH descr AGAINST ('".$text_to_search."') as relev FROM db_gorod_dn_ua ORDER BY relev DESC LIMIT ".$page1.", ".$page2); while ($row=@mysql_fetch_assoc($res) and $i&lt;$rows) {$i++; echo ' ID={'.$row['id'].'} - text={'.$row['name'].'}&lt;br /&gt;'; } }else{ echo "мХВЕЦН МЕ МЮИДЕМН"; } mysql_close($link); $i=0; while ($i&lt;$count) {$i++; $content .= "&lt;nobr&gt;&lt;form action=\"search.php\" method=\"post\"&gt;&lt;input type=\"submit\" name=\"page\" value=\"$i\"&gt;&lt;input type=\"hidden\" name=\"s2\" value=\"".$_POST['s']."\"&gt;&lt;/form&gt;&lt;/nobr&gt;";} $content .= "&lt;/center&gt;"; echo $content; } if(isset($_POST['s'])) search(); else if(isset($_POST['s2'])) {$_POST['s']=$_POST['s2'];search();} $time = $debag-&gt;endTimer(); echo "&lt;center&gt;&lt;font size=\"2\"&gt;бПЕЛЪ ГЮОПНЯЮ: $time ЯЕЙСМД&lt;/font&gt;&lt;/center&gt;"; ?&gt;&lt;/body&gt; &lt;/html&gt; только почемуто каждый раз ненаходит никаких полей :( пишет пусто.. хотя задавал явно существующие слова для поиска…
все индексы фултэкста стоят в нужных полях.. в чём проблемка подскажите пожалуйста.. если что могу выложить дамп демо базы
Post #: 11
Страниц:  [1]
Все форумы >> [Веб-программинг] >> нужен скрипт поиска по базе







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.