[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Перемещение строки в таблице на единицу.
Treat
Есть список строк выведенных из базы данных (id, title), к каждой записи подключена радиокнопка, чтобы можно было выбрать определенную запись:
Код
$result=mysql_query("SELECT id,title FROM content");
while ($a=mysql_fetch_array($result))
{echo ("<input type='radio' name='id' value='".$a['id']."'> ".$a['title']."<br>");}

Над одной из записью необходимо совершить действие перемещения позиции вверх или вниз на одну единицу (если вверх, то поменять местами с предыдущим; если вниз, то со следующим за выбранным).
Было бы просто, если после прочих манипуляций (удаления например) над списком записей, все id имели вид {1,2,3,4,5...}, но они становятся совсем разными, как организовать подобный алгоритм?
Подскажите, если кто-нибудь сталкивался с таким.



Спустя 20 минут, 33 секунды (28.08.2008 - 12:54) zona7o написал(а):
я правильно понял, что с инпутами надо совершать действия?

Спустя 31 минута, 48 секунд (28.08.2008 - 13:26) Treat написал(а):
Цитата(zona7o @ 28.8.2008, 9:54) [snapback]47197[/snapback]
я правильно понял, что с инпутами надо совершать действия?

да, тип submit.
кнопки уже прикручены и работают, остались только алгоритмы перемещения в обработчике.

Спустя 1 час, 31 минута, 47 секунд (28.08.2008 - 14:57) zona7o написал(а):
в общем я не совсем понял, что должно происходить.

вот идет:
Код
<input type='radio' name='id[]' value='1'>1
<input type='radio' name='id[]' value='2'>2
<input type='radio' name='id[]' value='3'>3
<input type='radio' name='id[]' value='4'>4

что с ними должно происходить? они должны меняться местами по нажатию чего-то? то есть 2 - на место 3, 3 на место второго?

Спустя 12 минут, 56 секунд (28.08.2008 - 15:10) Treat написал(а):
Цитата(zona7o @ 28.8.2008, 11:57) [snapback]47209[/snapback]
в общем я не совсем понял, что должно происходить.

вот идет:
Код
<input type='radio' name='id[]' value='1'>1
<input type='radio' name='id[]' value='2'>2
<input type='radio' name='id[]' value='3'>3
<input type='radio' name='id[]' value='4'>4

что с ними должно происходить? они должны меняться местами по нажатию чего-то? то есть 2 - на место 3, 3 на место второго?

да, только вот id могут быть разными 28,25,38,46,50, что делать, тут уже на единицу не убавишь не прибавишь.

Спустя 8 минут, 7 секунд (28.08.2008 - 15:18) zona7o написал(а):
а.. понял. у меня так это делается.
обработчик обрабатывает массив значений по следующему принципу:
Код
$i=1;
foreach ($_POST['id'] as $value)
    $id[$i++]=$value;


в итоге будем иметь массив $id c порядковыми 1,2,3,4,5..


Спустя 17 часов, 47 минут, 10 секунд (29.08.2008 - 09:06) Treat написал(а):
Цитата(zona7o @ 28.8.2008, 12:18) [snapback]47216[/snapback]
а.. понял. у меня так это делается.
обработчик обрабатывает массив значений по следующему принципу:
Код
$i=1;
foreach ($_POST['id'] as $value)
    $id[$i++]=$value;


в итоге будем иметь массив $id c порядковыми 1,2,3,4,5..

а что дальше?
не совсем понятно, откуда $value?

Спустя 56 минут, 42 секунды (29.08.2008 - 10:02) zona7o написал(а):
смотри.
Код
$result=mysql_query("SELECT id,title FROM content");
while ($a=mysql_fetch_array($result))
{echo ("<input type='radio' name='id' value='".$a['id']."'> ".$a['title']."<br>");}

выполнился этот код, что дальше?
это все же на обработчик попадается. или нет?

Спустя 2 минуты, 5 секунд (29.08.2008 - 10:04) Treat написал(а):
а как например получить id предыдущего или следующего элемента? Если один id нам известен,т.к. передался от формы.
foreach у меня что-то не работает...

Спустя 1 час, 11 минут, 38 секунд (29.08.2008 - 11:16) Treat написал(а):
да, через form action="operations.php"
Вообще я вот ещё такой алгоритм придумала:
1) получаем один id, того элемента, который хотим сместить($id=$_GET['id']).
2) если вверх на один, то надо получить предыдущий id из базы и поменять их местами.
3) если вниз на один, то надо получить следующий id из базы и поменять их местами.
Как поменять местами:
1-для вверх:
если id(формы) > id(базы), то сортируем по убыванию,
если id(формы) < id(базы), то сортируем по возрастанию.
2-для вниз:
если id(формы) > id(базы), то сортируем по возрастанию,
если id(формы) < id(базы), то сортируем по убыванию.

Только как это реализовать, я не все функции знаю sad.gif


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.