Перейти к содержимому

Сервис обмена электронных валют


"Хороший" поиск по сайту

#1 xilgiz

xilgiz
  • Пользователь
  • 155 сообщений
  • Репутация: 0
0

Отправлено 04 Апрель 2011 - 17:59

Всем привет. Надеюсь, пишу там, куда надо :D
Я постави поиск по сайту у себя, но я думаю, что он плохой...

<p align="center" class="title">Поиск по сайту</p>


<form action="view_search.php" method="post" name="form11">
<p class="search_t">Поисковый запрос должен быть не менее 4-х символов</p>
<p><input name="search" type="text" size="25" maxlength="40" />
<input class="search_b" name="submit_s" type="submit" value="ИСКАТЬ" />

</p>
</div>


И сам view_search.php:
<?php 	


$result2 = mysql_query("SELECT title,author,date,des,view,adres,id,rating,q_vote, cat FROM lessons WHERE MATCH(des) AGAINST('$search')",$db);

if (!$result2)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору x.i.n.ru@inbox.ru <br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}

if (mysql_num_rows($result2) > 0)

{
$myrow2 = mysql_fetch_array($result2);
}

else
{
echo "<p>По запросу ничего не найдено.</p>";
exit();
}

do
{

$r=intval($myrow2["rating"]/$myrow2["q_vote"]);


if ($myrow2["cat"]==1)
{
printf ("<p><br><table align='center'>

<tr>
<td class='post_title'>
<p class='title_a'><a href='v_lessons_audio.php?id=%s'>%s</a></p>
<p class='post_adds'>Дата добавления: %s&nbsp; &nbsp;
Автор урока: %s</p></td>
</tr>

<tr>
<td>%s <p class='post_view'>Скачивании: %s&nbsp; &nbsp; Рейтинг : <img src='img/%s.gif'></p></td>
</tr>

</table><br><br></p>",$myrow2["id"],$myrow2["title"], $myrow2["date"],$myrow2["author"],$myrow2["des"], $myrow2["view"], $r);
}
if ($myrow2["cat"]==2)
{
printf ("<p><br><table align='center'>

<tr>
<td class='post_title'>
<p class='title_a'><a href='v_lessons_video.php?id=%s'>%s</a></p>
<p class='post_adds'>Дата добавления: %s&nbsp; &nbsp;
Автор урока: %s</p></td>
</tr>

<tr>
<td>%s <p class='post_view'>Скачивании: %s&nbsp; &nbsp; Рейтинг : <img src='img/%s.gif'></p></td>
</tr>

</table><br><br></p>",$myrow2["id"],$myrow2["title"], $myrow2["date"],$myrow2["author"],$myrow2["des"], $myrow2["view"], $r);
}
}
while ($myrow2 = mysql_fetch_array($result2));


?>
</div>



Жду комментов))))

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 06 Апрель 2011 - 16:11

xilgiz,
1) Писали данный скрипт как-будто неопытные, либо давно. Сейчас register_globals стараются отключать, поэтому обращение к POST-переменной просто $search может не прокатить.
2) В запросе к базе данных нет защиты от инъекций, дырка на пустом месте (это огромная оплошность), нужно входные данные от пользователя обезопасить с помощью, допустим, функции mysql_real_escape_string().
3) Для поиска по полю des нужно проиндексировать его индексом FULLTEXT

В остальном ничего криминального. Обычный поиск на основе баз данных и полнотекстового поиска.
  • 0

#3 xilgiz

xilgiz
    Topic Starter
  • Пользователь
  • 155 сообщений
  • Репутация: 0

Отправлено 07 Апрель 2011 - 07:56

Ну вот, я знал, что это уже отстало)))) я скопировал этот поисковик. А где нормальный можно скачать?))
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 07 Апрель 2011 - 14:50

xilgiz, почему же отстало, многие пользуются подобным поиском. Я просто указал недочеты.
Если вы не настроите скрипт поиска, у вас ни один из них ничего искать не будет. Вы в предыдущем (тот что здесь указали) поиске настройку проводили? Поле поиска меняли?

Вообще показали бы свой сайт. Как я понял это ресурс ручной работы, т.е. движков никаких не используете. А контент, по которому хотите производить поиск, лежит у вас в базе данных так?
  • 0

#5 xilgiz

xilgiz
    Topic Starter
  • Пользователь
  • 155 сообщений
  • Репутация: 0

Отправлено 09 Апрель 2011 - 16:39

Да, я учусь только))) Не знаю, поисковик то ищет, но меня смущает то ,что длиннее 4-х букв только ищет
  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 10 Апрель 2011 - 21:20

xilgiz, полнотекстовый поиск в СУБД MySQL игнорирует так называемые "общеупотребительные" слова. К ним относятся слишком короткие слова ( по умолчанию состоящие меньше, чем из 4-х символов), а также слова, встречающиеся, по крайней мере, в половине записей.
За минимальное количество символов слова, которое может участвовать в полнотекстовом поиске, отвечает системная переменная ft_min_word_len, значение по умолчанию которой = 4. Вряд ли вам кто-либо даст изменить данную системную переменную, конечно если у вас не VDS или collocations.
  • 0

#7 Wildcoder

Wildcoder
  • Пользователь
  • 13 сообщений
  • Репутация: 0

Отправлено 19 Апрель 2011 - 00:40

Ну если хочется совсем уж крутой поиск со всеми наворотами - можно использовать Sphynx (C++), Solr(Java) и подобные движки.
  • 0


Оформление форума – IPBSkins.ru