Jump to content
  • 0

Поиск


Funtik44
 Share

Question

Recommended Posts

  • 0

Попробую упростить задачу:

Есть список из 280 объектов и к ним есть описание. Пользователь вводит название объекта и на странице появляется определенный контент. Это не поиск по сайту, это поиск по 280 объектам.

Link to comment
Share on other sites

  • 0
Ну наверное - "но боюсь вам это не по зубам будет, это далеко не для начинающего."! Поэтому хотелось бы попроще.

а попроще не получится. а как же защита бд от взлома? а релавантность, а время выполнения на запрос, нагрузка и т.д. и т.п...

Link to comment
Share on other sites

  • 0

Ну, если уж совсем просто, то делаем запрос типа

SELECT * FROM `table` WHERE `description` LIKE '%введённый запрос%'

и далее выводим результаты. Посложнее, но немного эффективнее:

SELECT * FROM `table` WHERE `description` LIKE '%". str_replace(" ", "%' OR `description` LIKE '%", 'введённый запрос'). "%'";

Ну а про релевантность — там надо уже читать. В указанной товарищем rus статье про это есть. Еще есть sphinx — он хорош, но с ним надо много и основательно разбираться.

Link to comment
Share on other sites

  • 0

Вот что получилось, что здесь не правильно, подскажите пожалуйста?

<?php include ("config.php");
$_POST['search'] = substr(htmlspecialchars(trim($_POST['search'])), 0, 100);
$res = mysql_query("SELECT id, placename, description from places where '%$_POST['search']%'", $db);
if (!$res) {echo "Запрос не прошел."; exit(mysql_error());}
$myrow = mysql_fetch_array($res);
?>
.
.
.
<body>
.
.
<input id="inputtext" type="text" name="search" />
.
.
</body>

Link to comment
Share on other sites

  • 0
Всё получилось, спасибо.

А в чем опасность простого поиска (такого как у меня), без релевантности, sphinx и других приблуд?

1) $search = mysql_real_escape_string($_POST['search']);

2) "SELECT `id`,`placename`,`description` from `places` where `description` like '%".$_POST['search']."%'"

3) почитайте про sql инъекции.

Edited by rus
Link to comment
Share on other sites

  • 0

Появились следующие проблеммы:

1. В Mozill'e, Chrome и Oper'e скрипт поиска не отрабатывает (хотя в IE всё идеально):

<?php include ("config.php");
$search = mysql_real_escape_string($_POST['search']);
$res = mysql_query("SELECT `id`,`placename`,`description` from `places` where `description` like '%".$_POST['search']."%'", $db);
if (!$res) {echo "Запрос не прошел."; exit(mysql_error());}
$myrow = mysql_fetch_array($res);
?>

2. В Mozill'e, Chrome и Oper'e сайт не работает если я перехожу по прямому адресу (http://site.ru), если же открываю локальный адрес (file:///W:/home/site.ru/www/index.php), то все работает (за исключением поиска). И еще в Chrome при переходе на страницу со скриптом, он открывает не страницу, а код отображает на экране.

Ребят, не подскажите, в чем тут может быть дело?

Edited by Funtik44
Link to comment
Share on other sites

  • 0

И еще, есть такой метод (я прочитал) борьбы со взломом - усечение входных параметров (' + LeftStr(id, 4) + '), это куда добавлять и как это работает, точнее как правильно добавить вот сюда:

$res = mysql_query("SELECT `id`,`placename`,`description` from `places` where `description` like '%".$_POST['search']."%'", $db);

Link to comment
Share on other sites

  • 0

все что можно защитить вы уже защитили, тут имхо более ничего не надо, а вот поле description надо сделать индексным, то есть доступным для поиска и делается это через phpmyadmin.

Link to comment
Share on other sites

  • 0

Не могу добавить значение INDEX полю description? Как это сделать в phpmyadmin? Пробовал запрос написать, тоже не получается.

Какие-нибудь еще поля нужно индексировать и у меня 3 поля имеют PRIMARY, это правильно?

d227b9364ffa.jpg

Мне кажется я тут накосячил, наверное только одно поле с индексом должно быть в таблице...

Edited by Funtik44
Link to comment
Share on other sites

  • 0

Может это глюк такой. Справа он светится неактивным, а внизу в "Деталях" написано, что поле проиндексированно.

PS Сколько полей в одной таблице должно быть уникальными и первичными?

Link to comment
Share on other sites

  • 0
Может это глюк такой. Справа он светится неактивным, а внизу в "Деталях" написано, что поле проиндексированно.

PS Сколько полей в одной таблице должно быть уникальными и первичными?

уникальное на то и уникальное что оно одно и что такого больше нет.

обычно первичный ключ и автоинкремент (автоматический подсчет и прибавление на один) ставят для поля id - идентификатор, по которому определяют страницу и ее позицию.

Link to comment
Share on other sites

  • 0
Появились следующие проблеммы:

1. В Mozill'e, Chrome и Oper'e скрипт поиска не отрабатывает (хотя в IE всё идеально):

<?php include ("config.php");
$search = mysql_real_escape_string($_POST['search']);
$res = mysql_query("SELECT `id`,`placename`,`description` from `places` where `description` like '%".$_POST['search']."%'", $db);
if (!$res) {echo "Запрос не прошел."; exit(mysql_error());}
$myrow = mysql_fetch_array($res);
?>

2. В Mozill'e, Chrome и Oper'e сайт не работает если я перехожу по прямому адресу (http://site.ru), если же открываю локальный адрес (file:///W:/home/site.ru/www/index.php), то все работает (за исключением поиска). И еще в Chrome при переходе на страницу со скриптом, он открывает не страницу, а код отображает на экране.

Ребят, не подскажите, в чем тут может быть дело?

1)Можете дать полный код с HTML?

2)Потому что в первом случае вы открываете адрес,а во втором просто файл и здесь апач и php не будут работать.

Link to comment
Share on other sites

  • 0
Появились следующие проблеммы:

1. В Mozill'e, Chrome и Oper'e скрипт поиска не отрабатывает (хотя в IE всё идеально):

<?php include ("config.php");
$search = mysql_real_escape_string($_POST['search']);
$res = mysql_query("SELECT `id`,`placename`,`description` from `places` where `description` like '%".$_POST['search']."%'", $db);
if (!$res) {echo "Запрос не прошел."; exit(mysql_error());}
$myrow = mysql_fetch_array($res);
?>

2. В Mozill'e, Chrome и Oper'e сайт не работает если я перехожу по прямому адресу (http://site.ru), если же открываю локальный адрес (file:///W:/home/site.ru/www/index.php), то все работает (за исключением поиска). И еще в Chrome при переходе на страницу со скриптом, он открывает не страницу, а код отображает на экране.

Ребят, не подскажите, в чем тут может быть дело?

Относительно первого, переведенный вами код выполняется на стороне сервера и браузер его не как получить не может(если вэб-сервер работает).

Относительно второго я так понимаю вы пользуетесь дэнвером, попробуйте перезагрузить компьютер и запустить дэнвер... И все должно заработать с поиском по адресу http://site.ru. Запись такова типа "file:///W:/home/site.ru/www/index.php" является допступом к файлу на прямую без всяких вэб серверов а значит ваш пхп код не работает...

Link to comment
Share on other sites

  • 0
Запись такова типа "file:///W:/home/site.ru/www/index.php" является допступом к файлу на прямую без всяких вэб серверов а значит ваш пхп код не работает...

о, а я это и не заметил :)

конечно же не будет работать. создайте в папке home папку site.ru а в ней папку www и в эту папку закиньте ваш индексный файл, после запуска денвера, наберите адрес вашего сайта типа: site.ru и он откроется. :)

Link to comment
Share on other sites

  • 0
о, а я это и не заметил :)

конечно же не будет работать. создайте в папке home папку site.ru а в ней папку www и в эту папку закиньте ваш индексный файл, после запуска денвера, наберите адрес вашего сайта типа: site.ru и он откроется. :)

Так я так и делаю. У меня есть следующая папка и файл W:\home\site.ru\www\index.php В IE я набираю site.ru и он работает, в остальных делаю тоже самое, он не работает(((

Link to comment
Share on other sites

  • 0
Так я так и делаю. У меня есть следующая папка и файл W:\home\site.ru\www\index.php В IE я набираю site.ru и он работает, в остальных делаю тоже самое, он не работает(((

Непонял что за проблема. Объясните подробнее.

Link to comment
Share on other sites

  • 0
Непонял что за проблема. Объясните подробнее.

Проблемма в следующем:

в IE набираю http://site.ru - всё работает отлично, сайт грузится. Тоже самое делаю в Mozilla, Chrome и Opera - пишется, что невозможно отобразить страницу!

PS если ввожу W:\home\site.ru\www\index.php то работает везде.

PPS Стоит Denwer.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy