Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Мультиселект
 
 автор: Denandi   (12.12.2013 в 17:07)   письмо автору
 
 

Привет всем!
Народ подскажите пожалуйста, как тактичней решить задачу:
-есть мультиселект
-значения мультиселекта я записываю построчно в поле db выбранные значения.

например в селекте:
$data = array(
'1' => 'Satu',
'2' => 'Dua',
'3' => 'Tiga',
'4' => 'Ober',
);

* был выбран пункт 1 и 2

В следующий раз, желая отредактировать я захожу на страницу редактирования,
в отобразившемся селекте стоят ранее выбранные данные (позиция: 1 и 2).
Так вот, изменяя выбранные позиции в списке я отправляю новые данные в обработчик:
в правильном варианте: я бы зная id строки заменил бы старое значение на новое.
Но, как работать в данном варианте?
ведь могут
- удалить одну позицию
- добавить еще парочку..
..а если список огромный???
- и.т.д
писать страшную логику?

Напрашивается, удалять старые строки из db - и записывать заново, новые.
Но ведь это маразм!!!
как быть?

Спасибо!

  Ответить  
 
 автор: confirm   (12.12.2013 в 19:15)   письмо автору
 
   для: Denandi   (12.12.2013 в 17:07)
 

Мульти список это массив, исходное состояние этого массива можно запомнить, а потом вычесть из него измененные состояния - массива полученного вновь, вот массивы разницы и обновляйте в базе.

  Ответить  
 
 автор: Denandi   (13.12.2013 в 00:10)   письмо автору
 
   для: confirm   (12.12.2013 в 19:15)
 

..исходное состояние этого массива можно запомнить...
что значит запомнить?
я пробовал сделать штатными средствами ф. array_diff - хрень какая то получается.
если количество пунктов - уменьшается, то показ. пустой массив.
если увеличивается - тогда показывает разницу
но! если удалить и при то еще увеличить - то показывает разницу без удаленных! а те будут дальше висеть!

  Ответить  
 
 автор: confirm   (13.12.2013 в 01:28)   письмо автору
 
   для: Denandi   (13.12.2013 в 00:10)
 

А что значит запомнить мультиселект в вашем случае?

Если это его значения (id чего-то), то значит надо запоминать вновь прибывшие значения, ведь только то, что установлено, будет является выбором, а что не выбрано, то не выбрано.

Случай второй - это есть некое состояние, которые определены для этих id, и при выборе других id этим списком, нужно перевести состояние не выбранных в противоположное (сбросить). В этом случае да, надо знать что изменилось относительно первого набора. Хотя можно в базе сначала сбросить состояния всех id, а потом установить для вновь выбранных.

А вам что надо?

  Ответить  
 
 автор: Denandi   (13.12.2013 в 03:01)   письмо автору
 
   для: confirm   (13.12.2013 в 01:28)
 

>А что значит запомнить мультиселект в вашем случае?
Вопрос на вопрос, сильный ход :))

пробовал по разному, все крайне шаткое, какие то сопли получаются. проблема в том что данный массив может изменяться как в минус так и в плюс, абсолютно хаотично. поэтому опираться на id - затруднительно.

*** может проще, проверить, если изменения были - удалять из базы старое. И записывать новое.
- id разрастется таким образом до НЕприличных размеров.
насколько такой вариант критичен?
поясню,
это для каталога в ~ 6 000-10 000 з.
точнее таблица связей, куда записываются результаты атрибутов. таблица будет жирной.
Следовательно при редактировании товара будет происходить и обновление свойств.
Спасибо

  Ответить  
 
 автор: confirm   (13.12.2013 в 03:11)   письмо автору
 
   для: Denandi   (13.12.2013 в 03:01)
 

Я вас просил не о "жирности" рассказать и сколько у вас там записей, а о том, что вам надо, ибо действуете вы не так, как надо было бы, вот только понять чего конкретно вы хотите...

Исходный массив, это не то что выбрано, а массив описывающий все вхождения в него, поэтому:

>если количество пунктов - уменьшается, то показ. пустой массив.
>если увеличивается - тогда показывает разницу


просто быть не может, если понимать что на самом деле надо делать.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования