Просмотр поста

.
Screamer

Ручное управление списком категорий

/*
------------------------------------------
--
-- Структура таблицы `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&amp;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&amp;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");
}

Выглядить это будет так:
Прикрепленные файлы: