Перемещение по таблице

Печать RSS
472

Ж
Автор
Пацак
0
20. Я пока ещё ни как не делаю...мне надо получить алгоритм...а дальше я уже разберусь что менять...ид или занчение полей...это не трудноsmile
Изменил: Жека (25.01.2010 / 19:01)

2000 лет д.н.э.
0
Я же тебе сказал, делай еще одно полей как человек тебе предложил и сортируй по нему, его и меняй. А ид трогать ненадо, если конечно ключ.
Д

Быдлокодер со стажем
0
поясню немного понятнее, автор, если ты будешь менять ид или название разделы то выйдет что тема была в общение например, а окажется в новостях
Ж
Автор
Пацак
0
я пошёл на пролом...трудным путёмsmile всётаки добил!
Меня сегодня вечером осинилоsmile
<?php
//основная функция
function change_link($act,$link_id) { 
if($act=="up") { //last ID
$sql=mysql_query("SELECT max(`id`) FROM `link` WHERE `id` < '".$link_id."'");
$initial_id=$link_id; $finite_id=mysql_result($sql,0); } 
else  //next ID
{ $sql=mysql_query("SELECT `id` FROM `link` WHERE `id` > '".$link_id."' LIMIT 1;");
$initial_id=mysql_result($sql,0); $finite_id=$link_id; }
//посылаем запрос
$sql_link=mysql_query("UPDATE `link` AS `a`,
                              `link` AS `b`,
                              `link` AS `c`,
                              `link` AS `d` 
                       SET    `a`.`id`='null',
                              `b`.`id`=`c`.`id`,
                              `c`.`id`=`d`.`id` 
                       WHERE  `a`.`id`='".$initial_id."' 
                       AND    `b`.`id`='".$finite_id."' 
                       AND    `c`.`id`='".$initial_id."' 
                       AND    `d`.`id`='".$finite_id."'");
return ($sql_link) ? TRUE : FALSE; //ответ запроса
} 
Изменил: Жека (25.01.2010 / 21:56)
Ж
Автор
Пацак
0
<?php
//результат
if(isset($_GET['msg'])) {
echo ($_GET['msg']!="err") ? 'Раздел успешно сдвинут!<br>' 
                           : 'Ошибка!<br>';
}
//обработка
if($_GET['act']!="" && $_GET['link_id']!=""){ 
if(change_link($_GET['act'],intval($_GET['link_id']))) 
{ Header("Location: test.php?msg=ok"); } 
	else 
{ Header("Location: test.php?msg=err"); }
}
//вывод
$sql=mysql_query("SELECT * FROM `link` ORDER BY `id`");
while($dan=mysql_fetch_array($sql)) { 
echo '<a href="test.php?id='.$dan['id'].'">'.$dan['name'].'</a><br>';
echo '<a href="test.php?act=up&link_id='.$dan['id'].'">[вверх]</a> ';
echo '<a href="test.php?act=down&link_id='.$dan['id'].'">[вниз]</a><hr>';
}
?>
За код сильно не пинайтеsmile
Изменил: Жека (25.01.2010 / 22:01)
Ж
Автор
Пацак
0
23. Лан, покажи как сделать сортировку по доп. полю..и как птом его изменять...я чёта не допру...я делал давно ещё что-то подбное с доп. полем но тогда у меня не чё не вышло..хз...я мозг спалил сеsmile

Дух
0
26. MaNGOS cms, mysql_query("SELECT * FROM `table` ORDER BY `number` ASC");
Ж
Автор
Пацак
0
27. Да это я знаю...кароче...меня не совсем поняли...или я туплю, но всё равно всем спасибоsmile
Тему можно клосед. Всё что мне нужно было я понял. visavi
Изменил: Жека (25.01.2010 / 22:31)

2000 лет д.н.э.
0
<?php
if(isset($_GET['getup'])){ // подьем
$exist = $sql->query("SELECT id,level FROM link WHERE id = '".abs(intval($_GET['getup']))."';")->fetch_assoc(); // текущая запись
if($exist['id']!=""){
$get = $exist['level']+1; // запись сверху
$sql->query("UPDATE link SET level = level-1 WHERE level = '".$get."';"); // опускаем верхнюю запись
$sql->query("UPDATE link SET level = level+1 WHERE id = '".$exist['id']."';"); // поднимаем текущую запись
}else{ echo'dont exist row'; }
теперь кажись понял что автор хочет.. Код на скорую руку, можно и короче, чисто для примера.
Вывод сортировать: ..ORDER BY level ASC..
Изменил: ramzes (26.01.2010 / 01:46)

Дух
0
гг. Самое элементарное в этом случае - сортировка разделов по времени. Таким образом можно обойтись всего лишь одним запросом -
update table set time=$time where id=$id;
при этом мы имеем неудобство в том плане, что перемещение раздела возможно только в одном направлении. Но зато реализация этого дела ограничивается вышеуказанной строкой
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск