Ручное управление сортировкой каталогов из базы 2
- <?php
- /*
- ------------------------------------------
- --
- -- Структура таблицы `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` = '" . $_POST["sort$i"] . "' WHERE `id` = '". $_POST["id$i"] . "'");
- }
- header ("location: admin.php?act=cat&id=$id");
- }
- ?>
Еще один велосипед только выглядит он так http://upwap.ru/1528559