|
|
|
| Салам народ!
Задача: сортировать данных по категории и количество
Когда меняю значение формы переменная $where всегда принимает занчение answer = ' ' и переменная лимит = 10
Кто небудь обясните как вообще сортировку делат?
Может быть есть другой способ? если да то какой?
<?php
// limit;
if(!isset($_POST['limit'])) $limit = 'LIMIT 0,5';
elseif($_POST['limit'] = 10) $limit = 'LIMIT 0,10';
elseif($_POST['limit'] = 50) $limit = 'LIMIT 0,50';
elseif($_POST['limit'] = 100) $limit = 'LIMIT 0,100';
elseif($_POST['limit'] == 'all') $limit = '';
// category;
if(!isset($_POST['category_ID']) $where = "WHERE answer = ' '";
elseif($_POST['category_ID'] = 1) $where = "WHERE category_ID = " . (int)$_POST['category_ID'];
elseif($_POST['category_ID'] = 2) $where = "WHERE category_ID = " . (int)$_POST['category_ID'];
elseif($_POST['category_ID'] = 3) $where = "WHERE category_ID = " . (int)$_POST['category_ID'];
$q = "SELECT ID, title
FROM faqs ".
$where ."
ORDER BY ID
DESC
" . $limit;
$r = mysql_query($q) or die(mysql_error());
if(mysql_num_rows($r) > 0){
while($row = mysql_fetch_array($r, MYSQL_ASSOC)){
// Вывод;
}
}
?>
<form method="post">
<p>Лимит:
<select name="limit" onchange="this.form.submit()">
<option value="0">Выбрать</option>
<option value="10">10</option>
<option value="50">50</option>
<option value="100">100</option>
<option value="all">Все</option>
</select>
</p>
<!-- Категорий вообщета выводится из БД, но так для примера -->
<p>Категорий:
<select name="category_ID" onchange="this.form.submit()">
<option value="0">Выбрать</option>
<option value="1">Категория 1</option>
<option value="2">Категория 2</option>
<option value="3">Категория 3</option>
</select>
</p>
</form>
|
| |
|
|
|
|
|
|
|
для: Jovidon
(25.08.2013 в 12:02)
| | Для начала, не вдаваясь в суть вопроса, зачем:
if(!isset($_POST['category_ID']) $where = "WHERE answer = ' '";
elseif($_POST['category_ID'] = 1) $where = "WHERE category_ID = " . (int)$_POST['category_ID'];
elseif($_POST['category_ID'] = 2) $where = "WHERE category_ID = " . (int)$_POST['category_ID'];
elseif($_POST['category_ID'] = 3) $where = "WHERE category_ID = " . (int)$_POST['category_ID'];
?
Ведь ну не может быть id категории равное пустой строке и 0, то есть если она не получена либо не делаем запрос вообще, либо выводим какую либо категорию по умолчанию. Зачем масса условий здесь?
То же самое и в определении LIMIT, зачем эти все перечисление? | |
|
|
|
|
|
|
|
для: confirm
(25.08.2013 в 12:45)
| | если она не получена либо не делаем запрос вообще, либо выводим какую либо категорию по умолчанию.
По умолчанию выводиться переменная $where = "WHERE answer = ' '
Если есть переменнея категорий то переменная $where меняестя на категорий а не на WHERE answer = ' ' | |
|
|
|
|
|
|
|
для: Jovidon
(25.08.2013 в 14:12)
| | Допустим, но это зачем:
elseif($_POST['category_ID'] = 1) $where = "WHERE category_ID = " . (int)$_POST['category_ID'];
elseif($_POST['category_ID'] = 2) $where = "WHERE category_ID = " . (int)$_POST['category_ID'];
elseif($_POST['category_ID'] = 3) $where = "WHERE category_ID = " . (int)$_POST['category_ID']; | |
|
|
|
|
|
|
|
для: confirm
(25.08.2013 в 14:16)
| | аа да точно я понял что вы имели виду
<?php
$where = (!isset($_POST['category_ID']) ? "WHERE answer = ' '" : "WHERE category_ID = " . (int)$_POST['category_ID']);
?>
|
| |
|
|
|
|
|
|
|
для: Jovidon
(25.08.2013 в 14:47)
| | Тоже самое и по LIMIT. Если первый аргумент его постоянен, зачем куча условий:
<?
$limit = isset($_POST['limit']) ? $_POST['limit'] == 'all' ? '' : 'LIMIT 0,'.(int)$_POST['limit'] : '';
|
Что касается вопроса о сортировке, то какое отношение она имеет к WHERE и LIMIT? | |
|
|
|
|
|
|
|
для: confirm
(25.08.2013 в 14:54)
| | как-то без скобок для внутреннего тернарного совсем не читабельно | |
|
|
|
|
|
|
|
для: psychomc
(25.08.2013 в 15:00)
| | Да все читаемо, если уж трудно, можно и скобки, а можно и заменить на if...else. Главное, это понять, что перечисление условий бессмысленно, и если это ради конкретного второго аргумента, то какой и в этом смысл, если допускается 'all'.
А вообще, такое написание условных выражений может быть полезным. ) | |
|
|
|
|
|
|
|
для: confirm
(25.08.2013 в 14:54)
| | Понял!
Следующи раз буду внимателен в названиях темы. =)
Спасибо! | |
|
|
|