|
|
|
| Кто сталкивался с такой задачей.
Имеем меню например
меню 1
меню 2
меню 3
меню 4
Рядом с каждым разделом меню input text для ввода позиции.
Как реализовать если в середине я поставлю позициюю для меню 2, что бы остальные соотвественно передвинулсь на еденичку | |
|
|
|
|
|
|
|
для: vale1487
(29.06.2010 в 20:32)
| | непонял вопрос | |
|
|
|
|
 37.8 Кб |
|
|
для: deadmanr
(29.06.2010 в 20:37)
| | пример прикрепил, то есть что бы изменить позициию для 1 строки, а все остальные соотвественно подвинулись при необходимости
В джумла, например меню так же сортируется , нажимаешь кнопку и оно либо поднимается на одну позицию,если нужно опускается | |
|
|
|
|
|
|
|
для: vale1487
(29.06.2010 в 20:32)
| | Что означает "в середине я поставлю позицию для меню 2"?
У меню 2 нет середины. Если речь о "перед ним новый элемент", который получит позицию 2, а остальные надо сместить, это одно. А если изменить позицию элемента 2, то это уже иное. | |
|
|
|
|
|
|
|
для: sim5
(30.06.2010 в 09:29)
| | например есть 3 элемент с индексом позиционировния
элемент позиция 1
элемент позиция 2
элемент позиция 3
если я меняю позицию у элемента 2 на 3, как должна происходить смена позиции у других элементов , если они должны сместиться на одну. | |
|
|
|
|
|
|
|
для: vale1487
(30.06.2010 в 11:51)
| | >например есть 3 элемент с индексом позиционировния
>
>
>элемент позиция 1
>элемент позиция 2
>элемент позиция 3
>
>если я меняю позицию у элемента 2 на 3, как должна происходить смена позиции у других элементов , если они должны сместиться на одну.
Если Вы меняете позицию у элемента 2 на 3, то должны также поменять пред этим позицию у элемента 3 на 4, а пред тем - у 4 на 5 и т.д. | |
|
|
|
|
|
|
|
для: Trianon
(30.06.2010 в 12:07)
| | Почему перед, а не после?
Поменяли позицию у элемента, а у тех, у которых позиция больше, добавляем 1. | |
|
|
|
|
|
|
|
для: Лена
(30.06.2010 в 12:29)
| | потому что иначе будет ситуация, когда позиции двух соседних элементов окажутся равными.
Допускает ли это модель - неизвестно, так что лучше перестраховаться. | |
|
|
|
|
|
|
|
для: vale1487
(30.06.2010 в 11:51)
| | Вы сами понимаете то, что пишите - например есть 3 элемент....?
Есть 3 элемента! А то понапишите, и потом не понять, чего вам надо.
Изменить позицию не сложно, вопрос в том, что делать при этом с освободившейся позицией, то есть:
позиция 1
позиция 2
позиция 3
позиция 4
......
меняем поцизую 2 на 3, получаем:
позиция 1
позиция 3 //бывшая 2
позиция 4 //бывшая 3
позиция 5 //бывшая 4
а позиции 2 после этой опрерации не будет.
Вам именно так надо? | |
|
|
|
|
|
|
|
для: sim5
(30.06.2010 в 12:13)
| | вроде все верно | |
|
|
|
|
|
|
|
для: vale1487
(30.06.2010 в 13:31)
| | Ну если так, то проблем нет, делайте запрос:
"UPDATE table SET pos=pos+1 WHERE pos > шаг - 1"
а изменямой позиции
"UPDATE table SET pos=pos+шаг WHERE pos = текушая"
но тогда получатся "дыры" в позициях.
PS. Может быть нужно смещение позиций? То есть, восстановление порядка при смещении. Например:
1 2 3 4 5 6
Если сместить 2 на позицию 3 (то есть 2 станет 3, 4 станет 5, и т.д.), то получим 1 3 4 5 6 7, а потом восстановить порядок (то есть 1 2 3...), то после смещения и получения новых номеров, вычитаем из них единицу и получаем опять 1 2 3 4 5 6.
Из этого следует, что если шаг смещения равен 1, то производить такую земену нет смысла. А вот если 2 переместить на позицию 4 (шаг равен 2, больше 1), то тогда позиции от 4 и выше не изменяются, позиция 3 получает поцию текущую минус 1, а позиция 2 позицию текущую плюс шаг минус 1. | |
|
|
|
|
|
|
|
для: sim5
(30.06.2010 в 13:42)
| | да второй вариант тоже интересен, но непрост конечно для понимания | |
|
|
|
|
|
|
|
для: vale1487
(30.06.2010 в 13:55)
| | А что тут понимать? Пусть надо сдинуть позициую 2 на позицию 6 (то есть поместить после позиции 5) в списке:
1 2 3 4 5 6 7 8 9
Получаем шаг изменения:
S = 5 - 2;
Новый номер позииции 2:
N = 2 + S
Изменяем номера позиций у позиций больше 2 и меньше или равно N, вычитая из их текущих позиций 1.
Позиции 2 устанавливаем позицию равную N.
При обратном смещении (снизу вверх), наборот - изменяются нежестоящие позиции. | |
|
|
|