нужен скрипт поиска по базе
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
нужен скрипт поиска по базе - 2009-02-11 12:51:03.123333
|
|
|
magistr_bender
Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
|
нужен очень простой скрипт поиска по базе данных.. принцип работы такой: ввожу я слово в форму, нажимаю найти и мне выдаёт все идшники в которых встречается это слово хотябы 1 раз может у кого есть наработки готовые? возможно есть SQL команда, которая возвращает список полей, в которых хотябы раз встречается заданная фраза?
|
|
|
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 поле2 LIKE '%$text_to_search%' OR поле3 LIKE '%$text_to_search%' и т.д.
$nums=mysql_num_rows($res);
if ($nums) {
echo "Найдено: $nums<br /><br />";
while ($row=@mysql_fetch_assoc($res)) {
echo "ID={$row['id']} - text={$row['поле']}<br />";
}
}else{
echo "Не найдено";
}
|
|
|
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
|
|
|
RE: нужен скрипт поиска по базе - 2009-02-11 15:33:17.720000
|
|
|
magistr_bender
Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
|
а как можно добавить релевантность в поиск? вообще по какому принципу она работает
|
|
|
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);
|
|
|
RE: нужен скрипт поиска по базе - 2009-02-12 08:39:13.050000
|
|
|
magistr_bender
Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
|
но ведь $text_to_search может состоять необязательно из одного слова… как в таком случае быть? поидее надо разбить строку на массив и каждое слово по отдельности искать и делать выборки… задача так сказать не из просиых :)
|
|
|
RE: нужен скрипт поиска по базе - 2009-02-12 22:56:07.773333
|
|
|
azimzaim
Сообщений: 320
Оценки: 0
Присоединился: 2009-01-04 22:14:32.760000
|
Советую прочитать эту книгу http://depositfiles.com/files/bblvt8npu. На странице приблизительно 467 описан готовый класс для работы с MySQL: поиск, создание, инсерт данных, все, что хотите. А чуть ниже описано какие ключевые методы используются, то есть обычный пример тестирования. P.S. Хотя на мой взгляд, скрипт довольно таки сложный. Прочитав этот я написал свой, немножко попроще, выставлять не буду, а то скажете, что не по феншую.
|
|
|
RE: нужен скрипт поиска по базе - 2009-02-12 23:50:55.373333
|
|
|
_hel_
Сообщений: 103
Оценки: 0
Присоединился: 2008-07-09 16:00:40.600000
|
quote:
поидее надо разбить строку на массив и каждое слово по отдельности искать и делать выборки… задача так сказать не из просиых :) можно одним запросом сделать это, насколько я помню.
|
|
|
RE: нужен скрипт поиска по базе - 2009-02-13 05:48:23.970000
|
|
|
Панда
Сообщений: 232
Оценки: 0
Присоединился: 2008-03-05 07:38:35.890000
|
FULLTEXT
|
|
|
RE: нужен скрипт поиска по базе - 2009-02-13 10:32:13.633333
|
|
|
magistr_bender
Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
|
ммм… а каким образом? можете подсказать?:)
|
|
|
RE: нужен скрипт поиска по базе - 2009-02-15 00:28:27.866666
|
|
|
magistr_bender
Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
|
реализовал релевантность почитав пхп.су таким методом <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<head>
<body>
<form action="search.php" method="post">
мЮГБЮМХЕ ЛЮЦЮГХМЮ<br><input type="text" name="s" size="60" value="<?=$_POST['s']?>"><br>
<input type="submit" name="submit" value="хЯЙЮРЭ">
<input type="reset" name="reset" value="нВХЯРХРЭ"></form>
<br><br>
<?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->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<$rows) {$i++;
echo '
ID={'.$row['id'].'} - text={'.$row['name'].'}<br />';
}
}else{
echo "мХВЕЦН МЕ МЮИДЕМН";
}
mysql_close($link);
$i=0;
while ($i<$count) {$i++; $content .= "<nobr><form action=\"search.php\" method=\"post\"><input type=\"submit\" name=\"page\" value=\"$i\"><input type=\"hidden\" name=\"s2\" value=\"".$_POST['s']."\"></form></nobr>";}
$content .= "</center>";
echo $content;
}
if(isset($_POST['s'])) search(); else if(isset($_POST['s2'])) {$_POST['s']=$_POST['s2'];search();}
$time = $debag->endTimer();
echo "<center><font size=\"2\">бПЕЛЪ ГЮОПНЯЮ: $time ЯЕЙСМД</font></center>";
?></body>
</html> только почемуто каждый раз ненаходит никаких полей :( пишет пусто.. хотя задавал явно существующие слова для поиска… все индексы фултэкста стоят в нужных полях.. в чём проблемка подскажите пожалуйста.. если что могу выложить дамп демо базы
|
|
|
|
|