VANHALEN
Новичок
Столкнулся с не совем обычным случаем. Имею скрипт меню
Хреновина в том что поле position по умолчанию вообще не заполнено. В админке, в управлении меню сдлано просто тупо перетягивание пункта меню при помощи jqwery. Как перетянешь, сразу записываются в массив все новые позиции и заносятся в базу. Когда похожая ситуация была у меня в фотоальбоме - это было круто. Что отсортировано, то отсортировано, а что добавилось и не трогалось (тоесть новые фотки) - появляется наверху. А вот как бы с меню нужда обратная. То, что добавилось позже, должно быть в конце меню.
Собственно надо спросить мускул так.. Сначала сортируется все пункты меню, где заполнено поле position, потом вниз добавляются все пункты в которых position пустое и они в свою очередь сортируются по id. Можно ли как нибудь не сильно меняя логику и не сильно извращаясь? Сейчас кстати второе условие в результате вообще лесом идёт.. Меняю направление сортировки в нём и ничего не происходит.
PHP:
function menu($group)
{
$result = mysql_query("SELECT * FROM `menu` WHERE `group` = $group ORDER BY `position` ASC, `id` DESC");
while ($row = mysql_fetch_array($result))
{
$tree[] = array('name' => $row['menu'], 'id' => $row['id'], 'pid' => $row['pid'], 'page' => $row['page']);
}
function get_tree($tree, $pid)
{
$html = '';
foreach ($tree as $row)
{
if ($row['pid'] == $pid)
{
$html .= '<li><a href="'.$row['page'].'">'.$row['name'].'</a>';
$html .= '' . get_tree($tree, $row['id']);
$html .= '</li>' . "\n";
}
}
return $html ? '<ul>'.$html.'</ul>' . "\n" : '';
}
echo '<div id="menu">'.get_tree($tree, 0).'</div>';
}
Собственно надо спросить мускул так.. Сначала сортируется все пункты меню, где заполнено поле position, потом вниз добавляются все пункты в которых position пустое и они в свою очередь сортируются по id. Можно ли как нибудь не сильно меняя логику и не сильно извращаясь? Сейчас кстати второе условие в результате вообще лесом идёт.. Меняю направление сортировки в нём и ничего не происходит.