У меня есть следующий код:
$sortorder = $_GET['sort'];
switch($sortorder)
{
case "modulea":
$result2 = db_query("SELECT * FROM {vanqueue_registrations} WHERE isactive=1 ORDER BY `cleanmodule` ASC");
case "moduled":
$result2 = db_query("SELECT * FROM {vanqueue_registrations} WHERE isactive=1 ORDER BY `cleanmodule` DESC");
case "typea":
$result2 = db_query("SELECT * FROM {vanqueue_registrations} WHERE isactive=1 ORDER BY `cleantype` ASC");
var_dump($result2);
case "typed":
$result2 = db_query("SELECT * FROM {vanqueue_registrations} WHERE isactive=1 ORDER BY `cleantype` DESC");
default:
$result2 = db_query("SELECT * FROM {vanqueue_registrations} WHERE isactive=1");
}
while($result = mysql_fetch_assoc($result2))
{
var_dump($result);
$value .= "<tr><td><center>" . $result['cleanmodule'] . "</center></td><td><center>" . $result['cleantype'] . "</center></td><td><center>" . $directions[$result['direction']] . "</center></td></tr>";
}
Как вы можете видеть, он принимает переменную GET и, в зависимости от ее значения, выполняет определенный запрос. (Не волнуйтесь, это только тестовый код, я, очевидно, проверю ввод позже).
Моя проблема: выполняется правильный запрос, но mysql_fetch_assoc
, похоже, переупорядочивает строки таким образом, который я не хочу.
Я тестирую случай typea
, и когда я выполняю страницу, выполняется этот вызов var_dump
- я могу увидеть результат на странице. Поэтому коммутатор определенно работает.
Но var_dump
внутри оператора while
выводит строки, упорядоченные первичным ключом в таблице, а не по моему запросу, cleantype.
Как я могу сделать mysql_fetch_assoc
вывод строк так, как я их заказывал?
ТИА.
Вы забыли использовать break
в конце всех ваших случаев...
Следовательно, ваш запрос default
всегда выполнялся последним.