2017-02-14 11 views
0

Я пытаюсь ознакомиться с php, и у меня возникает проблема при обработке формы. Это для книжной библиотеки. Где каждая книга может иметь более одного жанра, база данных отформатирована так, чтобы иметь отношение «много ко многим».
Я смог отобразить несколько жанров, связанных с одной книгой, просмотрев таблицу и создав новый ассоциативный массив всех имен жанра и пар идентификаторов, связанных с одной книгой. Затем я снова прокручиваю этот массив, чтобы отображать несколько выпадающих списков с помощью тэтов select html со всеми жанрами в качестве параметров и тем, которые связаны с выбранной книгой.
Вот как я решил отображать данные, но теперь, когда дело доходит до процесса редактирования или добавления информации о книге, я не могу понять, как бы я пошел о представлении формы, где у меня есть несколько значений с одним и тем же именем (в этом примере , "genre_id"). Должен ли я создавать отдельные страницы или отдельные материалы (запрос POST)? Могу ли я представить массив, а затем расшифровать его на странице обработки, и если да, то как?
Я не уверен, как поделиться своим кодом по этому вопросу, так как это скорее вопрос «как будет выглядеть этот код?». Как я к этому подхожу? Как отсортировать эти значения?Как обрабатывать обработку разных значений с тем же именем - php form

ответ

0

В html вы можете назвать свои элементы, такие как name = 'myFromElement []'. Затем вы можете использовать JS, чтобы позволить пользователю добавлять столько из этих входов, сколько им хотелось бы. PHP распознает элементы как члены массива $ _POST ['myFormElement']. Затем вы можете получить доступ ко всем данным, перейдя через $ _POST ['myFormElement'].

См: $_POST Array from html form

+0

Это полезно спасибо. html - это имя = "genre_id []" для каждого из выбранных тегов (теперь работает с 2 жанрами). На странице обработки формы, когда я делаю print_r ($ _ POST); он дает 1 значение для «genre_id», но при попытке выполнить цикл и echo $ _POST ["genre_id"] он говорит о недопустимом аргументе, а $ _POST ["genre_id []"] дает неопределенную ошибку индекса. Я пытаюсь несколько разных способов прокрутки с тем же результатом. Я думаю, что только одна из значений - это выполнить фактический запрос POST. –

+0

nevermind Я вижу, как его массив! Благодаря! –

0

при добавлении таких параметров, вы должны использовать флажки - чем вы можете легко добавлять много значения для них. Пример:

<label for="option1">Gender 1</label><input id="option1" name="gender[1]" value="y" type="checkbox" /> 
<label for="optionX">Gender X</label><input id="optionX" name="gender[x]" value="y" type="checkbox" /> 

Позже в PHP вы можете просто Foreach на этом элементы:

if(isset($_POST['gender'])({ 
foreach($_POST['gender'] as $id => $val){ 
echo $id.' '.$val.'<br />'; 
} 
} 

В этом примере все гендерная идентификатор из другой таблицы будет $id переменной. В label вы должны указать имя там. optionX и gender[x] не должны иметь такой же «х» - значение в label элемент for="option1" должен совпадать id в input