Тема: пошук по БД

Доброго дня! в роботі з БД потрібно створити "розумний пошук" але не знаю як правильно зробити((
є кілька полів і потрібно по черзі перевіряти їх.
якщо вводжу всі дані для пошуку - все працює, PHP виносить дані з бд.
якщо котресь поле пусте - не працює. як створити запит, щоб пошук працював так:
якщо поле не пусте - шукаєм по даних в бд, а якщо пусте - то рахується, що в полі може бути будь-яке значення і виводить всі результати по даному полю(враховуючи інші умови)
приклад: шукаю по 2 полях петро, 20р.
якщо введено імя, то шкає всі імена і не важливо вік

2

Re: пошук по БД

Збирайте запит динамічно. Ви, власне, щойно описали, як саме, то в чому проблема довести оце

petrogorobets написав:

якщо поле не пусте - шукаєм по даних в бд, а якщо пусте - то рахується, що в полі може бути будь-яке значення

до рівня окремих умов пункту WHERE?

3

Re: пошук по БД

$query = "SELECT `id`, `gofromK`, `gofromС`, `toK`, `toС`, `DATEgo`, `TIMEgo`,  `KM`, `Login`  FROM `reis`
WHERE  `gofromK`='$gofromKsear'  AND `gofromС`='$gofromСsear' AND `toK`='$toKsear' AND `toС`='$toСsear' AND `DATEgo`='$DATEgosear'";

якщо $gofromKsear пусте.як прописати, щоб виводило дані відповідно до інших умов, а з $gofromKsear підключало всі дані

4

Re: пошук по БД

П.3.8. Правил бачили?
Ну і ви, мабуть, якісь мінімальні курси PHP проходили ж, правда? Ну, з задачками на кшталт "ввести ім'я і вивести "Привіт, Петро!" чи "замінити всі літери a в стрічці на цифру 6"? В чому проблема зробити це тут - сформувати такий запит (просто стрічку), як вам треба?

5

Re: пошук по БД

Хоча, звісно, ви можете всюди повписувати в умови

WHERE  ($gofromKsear='' OR `gofromK`='$gofromKsear' ) AND ($gofromСsear'='' OR `gofromС`='$gofromСsear' )

і т.д.

6

Re: пошук по БД

Гадаю, щось типу цього

<?php

//потрібні поля
$sql_fields = ['gofromK', 'gofromС', 'toK', 'toС', 'DATEgo'];

//////тест вхідних полів, без фільтрів від SQL INJ
$_POST['gofromС'] = 'testgsdfgdfg';
$_POST['DATEgo'] = 'cvccvcv'; //

$sql_query = 'SELECT `id`, `gofromK`, `gofromС`, `toK`, `toС`, `DATEgo`, `TIMEgo`,  `KM`, `Login` FROM `reis`';

$i = 0;

foreach ($sql_fields as $current_field) {

    if(isset($_POST[$current_field]) && !empty($_POST[$current_field])) {

        $i++;

        $sql_query .= ($i == 1) ? " WHERE `" . $current_field . "` = '" . $_POST[$current_field] . "'" : " AND `" . $current_field . "` = 
        '" . $_POST[$current_field] . "'";
    }
}

echo $sql_query;
Подякували: koala1