Не отмеченные флажки и скрытая проблема ввода - PullRequest
1 голос
/ 25 ноября 2010


У нас есть форма для редактирования: мы заполняем ее переменным количеством флажков (все зависит, скажем, от того, сколько фотографий у нас в статье, которую мы собираемся редактировать).
Все флажки по умолчанию "проверены" , и если ничего не происходит, связанные данные (наши изображения в этом случае) остаются нетронутыми.
Хотя, если мы снимаем галочку с одного, мы действительно хотим не сохранять изображение в отредактированном видеопубликовать и удалить его из нашей базы данных.

Я знаю, что не отмеченные флажки не публикуются, и что у меня есть один обходной путь:
поместите прямо перед флажком скрытое поле с тем же именем .. таким образом, если флажок не установлен, все еще можно опубликоватьскрытый ввод.
, но у меня такая ситуация:

/*i'm querying the database to load all the article's data and I check if  */
/* there's any picture so I build, with a while loop, an associated checkbox*/
 <input type="checkbox" name="picture[]" value="$row['pic_id]"/>$row['pic_name'] 

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

еще раз спасибо Luca

Ответы [ 2 ]

3 голосов
/ 25 ноября 2010

Почему бы вам не проверить его на стороне сервера?

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

Так что вам не нужно добавлять какие-либо хаки JavaScript или скрытые входные данные.

1 голос
/ 25 ноября 2010

На стороне сервера вы можете использовать следующий подход:

$array_of_ids_to_delete=array_diff($array_with_all_ids, $posted_ids);

$array_with_all_ids должно быть уже доступно, потому что, я полагаю, вы используете его для вывода всех флажков.$posted_ids представляет массив изображений [].

После этого вам нужно только запустить foreach на $array_of_ids_to_delete и избавиться от этих изображений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...