Вопрос про "выше,ниже"

Benderlio

Новичок
Вопрос про "выше,ниже"

есть вывод списка названий из базы...
необходимо что бы можно было поднимать значения выше, ниже
сортировка своего рода...
сейчас реализовно так: есть в базе поле, при нажатии поднять выше значение, просто значение увеличиваеться на 1 и т.д. пока оно не станет выше чем преидущее...
ерунда вообщем, подскажите, пожалуйста, как сделать правильно
 
Benderlio, самое простое - менять значения местами.
 
Правильно, это не выше ниже, а перенести туда-то (в начало, под нужный элемент)

Посмотрю я, как вы будете сортировать список на полсотни элементов, кликая выше-ниже.
 
ну в том то и дело что список не такой уж большой
около 10 значений всего
 
Benderlio, тебя никто не заставляет писать правильно, делай через ж..., если так хочется :-)
 
akd
да уже сделал как ты посоветовал...
премного благодарен :)

-~{}~ 14.02.07 11:44:

Автор оригинала: kruglov
Правильно, это не выше ниже, а перенести туда-то (в начало, под нужный элемент)

Посмотрю я, как вы будете сортировать список на полсотни элементов, кликая выше-ниже.
мда, вот и настал момент когда это мне понадобилось...

как это реализовать? можно пример...
потому как я вижу это на данный момент то прийдеться передергивать всю таблицу, если необходимо вставить запись между записями с номерами 1 и 2 например, то все последующие номера прийдеться увеличить
или как ? разъясните плиз
 
baev
здорово...
мне кажеться что так получаемое число будет достаточно велико (количество символов) через несколько итераций... как это скажется на скорости сортировки по полю с такими числами ?
 
Benderlio, baev шутил. придётся передёргивать, благо можно сделать одним запросом.
 
AmdY
а как именно?
т.е. сортировать в массиве а потом проапдейтить нужные поля ?
или как ? может есть пример :)
 
т.е. сортировать в массиве а потом проапдейтить нужные поля ?
- можно и так.
Можно, что-то вроде UPDATE `table` SET `sort`=`sort`+1 WHERE `sort`>1
Можно посмотреть готовые решения, не хочется посылать в google.com , но может у самого появится желание посмотреть.
 
Benderlio
Двинуть запись наверх:
PHP:
//Узнаем id записи, выше которой будем поднимать
$query1 = "SELECT id, my_order FROM club WHERE my_order > '$order' ORDER BY my_order ASC limit 1";
$result1 = mysql_query($query1);
while ($row = mysql_fetch_array($result1))
	{
	$r_id = $row["id"];
	$r_order = $row["my_order"];
    }

//Апдейтим запись которая уйдет вниз
$query2 = "UPDATE club SET my_order = '$order' WHERE id = '$r_id'";
$query3 = "UPDATE club SET my_order = '$r_order' WHERE id = '$id'";
$result2 = mysql_query($query2);
$result3 = mysql_query($query3);

Вниз:
PHP:
//Узнаем id записи, выше которой будем поднимать
$query1 = "SELECT id, my_order FROM club WHERE my_order < '$order' ORDER BY my_order DESC limit 1";
$result1 = mysql_query($query1);
while ($row = mysql_fetch_array($result1))
	{
	$r_id = $row["id"];
	$r_order = $row["my_order"];
    }

//Апдейтим запись которая уйдет вниз
$query2 = "UPDATE club SET my_order = '$order' WHERE id = '$r_id'";
$query3 = "UPDATE club SET my_order = '$r_order' WHERE id = '$id'";
$result2 = mysql_query($query2);
$result3 = mysql_query($query3);
 
А можно было посмотреть на десяток готовых решений - в каждом движке форума есть сортировка подфорумов.
 
Ну неужели неинтересно самостоятельно придумать алгоритм?
Почему обязательно надо просить или искать готовые решения?
Все-таки это не решение волновых уравнений методом прогонки, а элементарная задача "здесь сложить, здесь вычесть"
 
Автор оригинала: kruglov
Ну неужели неинтересно самостоятельно придумать алгоритм?
Почему обязательно надо просить или искать готовые решения?
Все-таки это не решение волновых уравнений методом прогонки, а элементарная задача "здесь сложить, здесь вычесть"
Придумывать свое всегда интересно. Придумал, посмотрел как у других и выбрал наиболее подходящий вариант.
 
Сверху