Ручное управление списком категорий
/*
------------------------------------------
--
-- Структура таблицы `lib`
--
CREATE TABLE IF NOT EXISTS `lib` (
`id` int(11) NOT NULL auto_increment,
`refid` int(11) NOT NULL,
`type` varchar(4) NOT NULL,
`text` mediumtext NOT NULL,
`sort` int(11) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `type` (`type`),
KEY `refid` (`refid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
id - Ид каталога
refid - ид родительского каталога
type - тип
text - имя каталога
sort - сортировка
------------------------------------------
*/
if (!isset($_POST['submit'])) {
$req = mysql_query("SELECT `id`, `text`, `sort` FROM `lib` WHERE `type` = 'cat' AND `refid` = '".$id."' ORDER BY `sort` ASC");
$total = mysql_result(mysql_query("SELECT COUNT(*) FROM `lib` WHERE `type` = 'cat' AND `refid` = '".$id."'"), 0);
if ($total > 0) {
echo '<table cellpadding="0" cellspacing="0" width="900"><tr>';
echo '<td width="50"><b>№ п/п</b></td><td><b>Имя категории</b></td><td><b>№_</b></td></tr>';
echo '<tr><td colspan="3"><form action="admin.php?act=cat&id='.$id.'" method="post"></td></tr>';
$sort_q = mysql_query("SELECT `sort` FROM `lib` WHERE `type` = 'cat' AND `refid` = '".$id."' ORDER BY `sort` ASC");
while ($sort = mysql_fetch_array($sort_q)) {
$var[] = $sort['sort'];
}
$cc = 0;
while ($cat = mysql_fetch_array($req)) {
echo '<tr><td align="center">' . $cat['sort'] . '</td>';
echo '<td><a href="admin.php?act=cat&id='.$cat['id'].'">' . $cat['text'].'</a>';
echo '<input type="hidden" name="id'.$cc.'" value="'.$cat['id'].'" /></td>';
echo '<td align="left"><select name="sort'.$cc.'">';
for ($i = 0; $i < count($var); $i++) {
echo '<option value="'.$var[$i].'">'.$var[$i].'</option>';
}
echo '</select></td></tr>';
$cc++;
}
echo '<tr><td colspan="3"><input type="hidden" name="total" value="'.$cc.'" /><input name="submit" type="submit" value="Упорядочить" /></form></td></tr>';
echo '</table>';
} else {
echo 'Категории отсутствуют';
}
} else {
$cc = intval($_POST['total']);
//--------------------------------//
//Проверяем на одинаковые позиции //
//--------------------------------//
for ($c = 0; $c < $cc; $c++) {
$t = $c-1;
if (intval($_POST["sort$c"]) == intval($_POST["sort$t"])) {
echo 'Ошибка';
exit;
};
unset($t);
}
//Задаем сортировку
for ($i = 0; $i < $cc; $i++) {
mysql_query("UPDATE `lib` SET `sort` = '" . intval($_POST["sort$i"]) . "' WHERE `id` = '". intval($_POST["id$i"]) . "'");
}
header ("location: admin.php?act=cat&id=$id");
}Выглядить это будет так: