|
|
|
| Доброго времени суток, перелопатил весь гугл но нигде не нашел ответа.
нужна помощь в упрощении кода(если это так можно назвать)
if (isset($_GET['b']) and isset($_GET['c']) and isset($_GET['floor'])) // если выбрано каталог бред и раздел
{$bced="WHERE catalog='".$_GET['c']."' AND brand='".$_GET['b']."' AND tip='".$_GET['floor']."' ";}
else{
if (isset($_GET['b']) and isset($_GET['c'])) // если выбрали бред и каталог
{ $bced="WHERE catalog='".$_GET['c']."' AND brand='".$_GET['b']."' ";}
else{
if (isset($_GET['floor']) and isset($_GET['b'])) // если выбрали бред и каталог Муж Жен Дет
{ $fl="WHERE tip='".$_GET['floor']."' AND brand='".$_GET['b']."' ";}
else{
if (isset($_GET['c'])){ $c="WHERE catalog='".$_GET['c']."' ";}// если выбрали каталон
else{
if (isset($_GET['b'])){ $b="WHERE brand='".$_GET['b']."' ";}//если выбрали бренд
else{
if (isset($_GET['floor'])){ $floor ="WHERE tip='".$_GET['floor']."' "; }// если выбрали каталог Муж Жен Дет
}
}
}
}
}
|
$result = mysql_query("SELECT * FROM foto_img $c $b $bced $floor $fl ORDER by id DESC LIMIT $start, $num");
|
вообще можно ли так делать?
как упростить выборку из базы таким методом? | |
|
|
|
|
|
|
|
для: sergafan
(14.03.2017 в 06:20)
| |
<?
$field = array(
'b' => 'brand',
'c' => 'catalog',
'floor' => 'tip'
);
if($post = array_intersect_key($field, $_GET)) {
//если 'brand', 'catalog', 'tip', это строковые значения или среди этого набора есть строковые значения
//то 'intval' заменить на sql экранирование и убрать array_diff() из этой операции
//вставлять непосредственно в запросы данные извне, это самоубийство
//и вообще, пора в помойку оригинальное расширение MySQL и использовать mysqli или PDO
$where = array_diff(
array_map('intval', array_combine(
array_flip($post), array_replace(
$post, array_intersect_key(
$_GET, $post
)
)
)
), array(0));
$where = 'WHERE ' . implode(' AND ', array_map(function($k, $v) {
return $k . '=' .$v;
}, array_keys($where), $where));
}
//не заставляйте лишний раз ковыряться парсер в строках, используя переменные в строке с двойными кавычкамии, что руки отсохнут написать так?
$sql = 'SELECT * FROM foto_img '.$where.' ORDER by id DESC LIMIT ' . $start .','. $num;
$result = mysql_query($sql);
|
| |
|
|
|