Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2016, 09:11   #1
shked02
Пользователь
 
Регистрация: 24.01.2012
Сообщений: 14
По умолчанию поиск по базе

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

PHP код:
$a=htmlspecialchars(strip_tags(addslashes($_GET['a'])));
$s=htmlspecialchars(strip_tags(addslashes($_GET['s'])));
$d=htmlspecialchars(strip_tags(addslashes($_GET['d'])));
$f=htmlspecialchars(strip_tags(addslashes($_GET['f'])));
require(
'config.php'); 
$tabla mysql_query("SELECT * FROM mash WHERE a='$a' AND s='$s' AND d='$d' AND f='$f");
while (
$registro mysql_fetch_array($tabla)) {

echo 
$registro["a"];
echo 
$registro["s"];
echo 
$registro["d"];
echo 
$registro["f"];

так правильно при условии что переменные a s d f заполнены. но если будут пустые то запрос и будет искать точное совпадения, а нужно что бы при пустом значении переменной запрос пропускал это условие. я то понимаю что нужно использовать else if но как это сделать правильнее. гет переменных у меня аж 15 штук.
shked02 вне форума Ответить с цитированием
Старый 07.01.2016, 09:37   #2
shked02
Пользователь
 
Регистрация: 24.01.2012
Сообщений: 14
По умолчанию

а прокатит ли если я повтыкаю в запрос бд типа такого
if($a=''){} else {echo "a=\'$a\'";}

SELECT * FROM mash WHERE if($a=''){} else {echo "a=\'$a\'";} AND if($s=''){} else {echo "s=\'$s\'";} ");
shked02 вне форума Ответить с цитированием
Старый 07.01.2016, 09:52   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от shked02 Посмотреть сообщение
так правильно при условии что переменные a s d f заполнены. но если будут пустые то запрос и будет искать точное совпадения, а нужно что бы при пустом значении переменной запрос пропускал это условие. я то понимаю что нужно использовать else if но как это сделать правильнее. гет переменных у меня аж 15 штук.
PHP код:
// псевдо-GET
$_GET = array(
    
'a' => 23,
    
'b' => 'some string',
    
'c' => '',
    
'd' => 56,
    
'e' => 'another string',
    
'f' => '',
    
'g' => 42,
);

$sql "SELECT * FROM `mash`"// начало SQL-запроса
$where = array(); // массив условий

foreach ($_GET as $key => $value) {
    
// проверяем пустые значения
    
if(!empty($value)) {
        
// заполняем массив условий
        
$where[] = " `" $key "` = '" mysql_real_escape_string($value) . "' ";
    }
}
if(!empty(
$where)) {
    
// добавляем условия в SQL-запрос
    
$sql .= " WHERE " implode("AND"$where);
}
echo 
$sql;
// вывод:
// SELECT * FROM `mash` WHERE `a` = '23' AND `b` = 'some string' AND `d` = '56' AND `e` = 'another string' AND `g` = '42'
// в запросе нет пустых значений 
Andkorol вне форума Ответить с цитированием
Старый 07.01.2016, 10:49   #4
shked02
Пользователь
 
Регистрация: 24.01.2012
Сообщений: 14
По умолчанию

Andkorol спасибо. то что и нужно.
shked02 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск по базе данных q123ser87 Помощь студентам 1 03.05.2012 13:59
поиск по базе alexander1111 БД в Delphi 4 10.02.2012 20:34
Поиск по базе niziriska PHP 5 02.09.2010 06:33
Поиск по базе Антон Шестаков БД в Delphi 1 22.01.2008 20:32
Поиск по базе Таня84 БД в Delphi 3 09.02.2007 10:53