2013-04-11 3 views
0

У меня было register_globals повернуто ON (я знаю - плохо плохо плохо ужасно плохо), и теперь я меняю его, и конкретное приложение - это моя коллекция DVD. Добавление DVD представляет собой набор флажков для жанров/категорий (т. Е. Драма, комедия и т. Д.). Каждый жанр выходит из таблицы базы данных, поэтому я могу добавлять новые жанры по мере необходимости. Проблема здесь в том, что она генерирует свое имя поля (имя checkbox) из аббревиатуры в этой таблице db.Доступ к динамическим переменным из формы

IE у меня будет:

<input type="checkbox" name="drama" />Drama 
<input type="checkbox" name="bio" />Biography 
(etc) 

Так что я делал до того, как, с помощью сценария, который сделал запись, он будет работать по списку имен аббревиатур и, если оно соответствует входной ($_POST['drama']), это указывает на то, что этот DVD попадает в эту категорию.

Настоящая проблема теперь, когда глобальные переменные превратились off, как я могу динамически собирать эти $_POST values? Я попытался пробегаю по базе данных и выплевывая каскадный переменную пытается объявить их в этом формате:

$drama=$_POST['drama'];

Это не сработал, потому что я перепутать функции с переменными, и он сделал ужасный беспорядок.

Надеюсь, у кого-то есть ответ на то, как я могу читать в $_POST array и использовать его.

+0

можно увидеть код до сих пор? – showdev

+1

Выключить глобальные регистры регистра. В противном случае другие отключат вас;) –

+0

Да, некоторые из ваших старых кодов очень помогли ... Я не могу получить четкое представление о вашей цели. –

ответ

1

Смотрите этот пример:

foreach ($_POST as $key => $value) { 

    echo "name: $key, value: $value<br />"; 

} 
2

Учитывая некоторые галочки, как это:

<input type="checkbox" name="genre[]" value="drama" /> 
<input type="checkbox" name="genre[]" value="comedy" /> 
<input type="checkbox" name="genre[]" value="mystery" /> 

вы бы в конечном итоге с $_POST['genre'] быть массивом. Asuming драма и тайна проверяются прочь, вы бы в конечном итоге с

$_POST['genre'] = array(
    0 => 'drama', 
    1 => 'mystery' 
); 

Помните, что непроверенные флажков не помещайте с формой, так что если вы получите запись в $_POST['genre'], он был выбран в форме.

Чтобы проверить, была выбрана категория, в вашей БД, вы могли бы сделать что-то вроде

if (in_array('drama', $_POST['genre'])) { 
    ... drama is selected 
} 
+0

Это правильный подход ... «Имя» не должно использоваться как 'value' ... –

Смежные вопросы