Funtik44 Posted September 14, 2010 Report Share Posted September 14, 2010 Добрый день всем.Необходимо написать функционал поиска по БД MySQl и вывода запрашиваемого контента на страницу. Вы не могли бы дать ссылку на пример? Quote Link to comment Share on other sites More sharing options...
0 rus Posted September 14, 2010 Report Share Posted September 14, 2010 да пожалуйста, но боюсь вам это не по зубам будет, это далеко не для начинающего. Quote Link to comment Share on other sites More sharing options...
0 Funtik44 Posted September 14, 2010 Author Report Share Posted September 14, 2010 Попробую упростить задачу:Есть список из 280 объектов и к ним есть описание. Пользователь вводит название объекта и на странице появляется определенный контент. Это не поиск по сайту, это поиск по 280 объектам. Quote Link to comment Share on other sites More sharing options...
0 rus Posted September 14, 2010 Report Share Posted September 14, 2010 и что вам мешает ее выполнить? ссылку я дал. Quote Link to comment Share on other sites More sharing options...
0 Funtik44 Posted September 14, 2010 Author Report Share Posted September 14, 2010 Ну наверное - "но боюсь вам это не по зубам будет, это далеко не для начинающего."! Поэтому хотелось бы попроще. Quote Link to comment Share on other sites More sharing options...
0 rus Posted September 14, 2010 Report Share Posted September 14, 2010 Ну наверное - "но боюсь вам это не по зубам будет, это далеко не для начинающего."! Поэтому хотелось бы попроще.а попроще не получится. а как же защита бд от взлома? а релавантность, а время выполнения на запрос, нагрузка и т.д. и т.п... Quote Link to comment Share on other sites More sharing options...
0 Veseloff Posted September 14, 2010 Report Share Posted September 14, 2010 Ну, если уж совсем просто, то делаем запрос типаSELECT * FROM `table` WHERE `description` LIKE '%введённый запрос%'и далее выводим результаты. Посложнее, но немного эффективнее:SELECT * FROM `table` WHERE `description` LIKE '%". str_replace(" ", "%' OR `description` LIKE '%", 'введённый запрос'). "%'";Ну а про релевантность — там надо уже читать. В указанной товарищем rus статье про это есть. Еще есть sphinx — он хорош, но с ним надо много и основательно разбираться. Quote Link to comment Share on other sites More sharing options...
0 Funtik44 Posted September 14, 2010 Author Report Share Posted September 14, 2010 Вот что получилось, что здесь не правильно, подскажите пожалуйста?<?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> Quote Link to comment Share on other sites More sharing options...
0 rus Posted September 14, 2010 Report Share Posted September 14, 2010 $search = substr(htmlspecialchars(trim($_POST['search'])), 0, 100);а почему POST? у тебя вроде GET получается. Quote Link to comment Share on other sites More sharing options...
0 user Posted September 14, 2010 Report Share Posted September 14, 2010 "SELECT id,placename,description from places where description like '%".$_POST['search']."%'" Quote Link to comment Share on other sites More sharing options...
0 Funtik44 Posted September 14, 2010 Author Report Share Posted September 14, 2010 (edited) Всё получилось, спасибо. А в чем опасность простого поиска (такого как у меня), без релевантности, sphinx и других приблуд? Edited September 14, 2010 by Funtik44 Quote Link to comment Share on other sites More sharing options...
0 rus Posted September 14, 2010 Report Share Posted September 14, 2010 (edited) Всё получилось, спасибо. А в чем опасность простого поиска (такого как у меня), без релевантности, sphinx и других приблуд?1) $search = mysql_real_escape_string($_POST['search']);2) "SELECT `id`,`placename`,`description` from `places` where `description` like '%".$_POST['search']."%'"3) почитайте про sql инъекции. Edited September 14, 2010 by rus Quote Link to comment Share on other sites More sharing options...
0 Funtik44 Posted September 15, 2010 Author Report Share Posted September 15, 2010 (edited) Появились следующие проблеммы: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 September 15, 2010 by Funtik44 Quote Link to comment Share on other sites More sharing options...
0 Funtik44 Posted September 15, 2010 Author Report Share Posted September 15, 2010 И еще, есть такой метод (я прочитал) борьбы со взломом - усечение входных параметров (' + LeftStr(id, 4) + '), это куда добавлять и как это работает, точнее как правильно добавить вот сюда:$res = mysql_query("SELECT `id`,`placename`,`description` from `places` where `description` like '%".$_POST['search']."%'", $db); Quote Link to comment Share on other sites More sharing options...
0 rus Posted September 15, 2010 Report Share Posted September 15, 2010 все что можно защитить вы уже защитили, тут имхо более ничего не надо, а вот поле description надо сделать индексным, то есть доступным для поиска и делается это через phpmyadmin. Quote Link to comment Share on other sites More sharing options...
0 Funtik44 Posted September 15, 2010 Author Report Share Posted September 15, 2010 (edited) Не могу добавить значение INDEX полю description? Как это сделать в phpmyadmin? Пробовал запрос написать, тоже не получается.Какие-нибудь еще поля нужно индексировать и у меня 3 поля имеют PRIMARY, это правильно?Мне кажется я тут накосячил, наверное только одно поле с индексом должно быть в таблице... Edited September 15, 2010 by Funtik44 Quote Link to comment Share on other sites More sharing options...
0 rus Posted September 15, 2010 Report Share Posted September 15, 2010 а, ну он у вас не активен, наверное уже сделали его индексным?справа значок молнии. Quote Link to comment Share on other sites More sharing options...
0 Funtik44 Posted September 15, 2010 Author Report Share Posted September 15, 2010 Может это глюк такой. Справа он светится неактивным, а внизу в "Деталях" написано, что поле проиндексированно.PS Сколько полей в одной таблице должно быть уникальными и первичными? Quote Link to comment Share on other sites More sharing options...
0 rus Posted September 15, 2010 Report Share Posted September 15, 2010 Может это глюк такой. Справа он светится неактивным, а внизу в "Деталях" написано, что поле проиндексированно.PS Сколько полей в одной таблице должно быть уникальными и первичными?уникальное на то и уникальное что оно одно и что такого больше нет.обычно первичный ключ и автоинкремент (автоматический подсчет и прибавление на один) ставят для поля id - идентификатор, по которому определяют страницу и ее позицию. Quote Link to comment Share on other sites More sharing options...
0 Funtik44 Posted September 15, 2010 Author Report Share Posted September 15, 2010 Спасибо большое, а на сообщение №13 Вы не могли бы ответить? Quote Link to comment Share on other sites More sharing options...
0 user Posted September 15, 2010 Report Share Posted September 15, 2010 Появились следующие проблеммы: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 не будут работать. Quote Link to comment Share on other sites More sharing options...
0 stars Posted September 15, 2010 Report Share Posted September 15, 2010 Появились следующие проблеммы: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" является допступом к файлу на прямую без всяких вэб серверов а значит ваш пхп код не работает... Quote Link to comment Share on other sites More sharing options...
0 rus Posted September 15, 2010 Report Share Posted September 15, 2010 Запись такова типа "file:///W:/home/site.ru/www/index.php" является допступом к файлу на прямую без всяких вэб серверов а значит ваш пхп код не работает...о, а я это и не заметил конечно же не будет работать. создайте в папке home папку site.ru а в ней папку www и в эту папку закиньте ваш индексный файл, после запуска денвера, наберите адрес вашего сайта типа: site.ru и он откроется. Quote Link to comment Share on other sites More sharing options...
0 Funtik44 Posted September 15, 2010 Author Report Share Posted September 15, 2010 о, а я это и не заметил конечно же не будет работать. создайте в папке home папку site.ru а в ней папку www и в эту папку закиньте ваш индексный файл, после запуска денвера, наберите адрес вашего сайта типа: site.ru и он откроется. Так я так и делаю. У меня есть следующая папка и файл W:\home\site.ru\www\index.php В IE я набираю site.ru и он работает, в остальных делаю тоже самое, он не работает((( Quote Link to comment Share on other sites More sharing options...
0 alexandr.coder Posted September 15, 2010 Report Share Posted September 15, 2010 Так я так и делаю. У меня есть следующая папка и файл W:\home\site.ru\www\index.php В IE я набираю site.ru и он работает, в остальных делаю тоже самое, он не работает(((Непонял что за проблема. Объясните подробнее. Quote Link to comment Share on other sites More sharing options...
0 Funtik44 Posted September 15, 2010 Author Report Share Posted September 15, 2010 Непонял что за проблема. Объясните подробнее.Проблемма в следующем:в IE набираю http://site.ru - всё работает отлично, сайт грузится. Тоже самое делаю в Mozilla, Chrome и Opera - пишется, что невозможно отобразить страницу!PS если ввожу W:\home\site.ru\www\index.php то работает везде. PPS Стоит Denwer. Quote Link to comment Share on other sites More sharing options...
Question
Funtik44
Добрый день всем.
Необходимо написать функционал поиска по БД MySQl и вывода запрашиваемого контента на страницу. Вы не могли бы дать ссылку на пример?
Link to comment
Share on other sites
29 answers to this question
Recommended Posts
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.