smolyakov770
@smolyakov770
Веб Дизайнер Верстальщик

Как сделать поиск из базы на php?

Как сделать поиск по на сайте что бы по запросу выдавал именно тот результат.
Сильно не ругайтесь могу не правильно сформировать вопрос
Есть допусти 3 поля
первое поле через которую мы можем найти марку авто.
второе поле через которую мы можем найти деталь
третье поле через которую выбираем город

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

Чевствую написал как то не совсем понятно)

вот код запроса в базу на поиск
$sql = "SELECT `id`, `model`, `detal`, `data`, `prosmotry`, `gorod`, `oblast`
      FROM `auto` WHERE `detal` LIKE '%$query%'
      OR `model` LIKE '%$query%' OR `gorod` LIKE '%$query%'";


Ищет только по марке и выдает столько результатов сколько есть в базе
  • Вопрос задан
  • 652 просмотра
Пригласить эксперта
Ответы на вопрос 2
@MadridianFox
Web-программист, многостаночник
Надо динамически формировать строку запроса в зависимости от заполненных полей поиска. Ищете только по марке? Ок сделайте запрос ... were model='%$model%'. Ищете по марке и детали? Ок
... were model like '%$model%' AND detal like '%$detal%'
и т.д.

Вы же сейчас используете OR вместо AND и в запросе есть пустые поля. Т.е. если вы не указываете деталь, у вас получается ... were model like '%$model%' OR detal like '%%' -- этому условию соответствуют все записи.
Ответ написан
it_monk
@it_monk
Разработчик в oncloud.ru
$name = mysql_real_escape_string($_GET['name']);
$detailModel = mysql_real_escape_string($_GET['detail_model']);
$city = mysql_real_escape_string($_GET['city']);

$sql = "SELECT `id`, `model`, `detal`, `data`, `prosmotry`, `gorod`, `oblast`" . 
        "FROM `auto` WHERE `detal` LIKE '%$name%'" . 
        ($detailModel ? " AND `model` LIKE '%$detailModel%'" : "") . 
        ($city ? " AND `gorod` LIKE '%$city%'" : "");


Использовал в примере mysql_real_escape_string, но этот метод устарел, используйте вместо этого подстановку параметров в mysql запрос, не забывайте о sql-инъекциях, иначе окажете себе и вашим пользователям медвежью услугу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы