Суть проблемы, есть php код формирования динамического sql запроса... Вот рез-т работы скрипта при нажатии на кнопку поиска по выбранным элементам select : SELECT * FROM `data` WHERE `country` = Italy AND `type` = Comercial AND `pricemin` = 300000 AND `pricemax` = 2000000 Нужно, чтобы пункты выборки по цене pricemin, pricemax выглядели след образом: SELECT * FROM `data` WHERE `country` = Italy AND `type` = Comercial AND `pricemin` >= 100 AND `pricemax` <= 200 Сам php-скрипт : PHP: <?php if(isset($_GET['submitButton'])) { // Пришедшие данные из SELECT $country = isset($_GET['country']) ? $_GET['country'] : 0; $type = isset($_GET['type']) ? $_GET['type'] : 0; $pricemin = isset($_GET['pricemin']) ? $_GET['pricemin'] : 0; $pricemax = isset($_GET['pricemax']) ? $_GET['pricemax'] : 0; // создаем ассоциативный массив $array = array( "`country`" => $country, "`type`" => $type, "`pricemin`" => $pricemin, "`pricemax`" => $pricemax, ); // Начальная строчка запроса $sql = "SELECT * FROM `data`"; //Создаем пустой масив для условия WHERE $sql_where = array(); //Перебираем массив foreach($array as $key => $value) { // Если есть 0 в запросе отсеиваем его if(!empty($value)) $sql_where[] = $key." = ".($value); } //Проверяем нужно ли подставлять условие WHERE в запрос if(count($sql_where) > 0) $sql .=" WHERE "; //Формируем окончательную строку запроса $sql.=" ".implode(" AND ", $sql_where); //Собственно вот что получилось в запросе echo $sql; } ?>[quote][/quote] PHP: PHP:
В самом начале скрипта добавьте: PHP: <?php $_GET['pricemin'] = 100; $_GET['pricemax'] = 200; ?> А так же измените этот блок: PHP: //Перебираем массив foreach($array as $key => $value) { // Если есть 0 в запросе отсеиваем его if(!empty($value)) $sql_where[] = $key." = ".($value); } На этот: PHP: //Перебираем массив foreach( $array as $key => $value) { // Если есть 0 в запросе отсеиваем его if(!empty($value)) { if( $key == 'pricemin') $sign = '>='; elseif( $key == 'pricemax') $sign = '<='; else $sign = '='; $sql_where[] = "$key $sign $value"; } }
как вариант проверять если в названии ключа есть слово min - использовать знак больше или равно если есть слово макс - использовать знак меньше или равно. в остальных случаях - равно.
2 neverlose , Спасиб, сработало,а цифры 100 и 200,это так для примера,они из селекта приходят,поэтому добавил только это... PHP: //Перебираем массив foreach($array as $key => $value) { // Если есть 0 в запросе отсеиваем его if(!empty($value)) { if($key == "`pricemin`") $sign = '>='; elseif($key == "`pricemax`") $sign = '<='; else $sign = '='; $sql_where[] = "$key $sign $value"; } }