Intereting Posts
Внутренняя ошибка сервера (ошибка HTTP 500) после установки phpmyadmin в определенном домене Вызов функции класса PHP на моей странице PHP – создание одного изображения из изображений Возврат случайного значения из массива с вероятностью, пропорциональной его значению laravel uuid не отображается в запросе Расшифровка зашифрованного текста в PHP Как установить переменную на странице PHP, передать ее в файл CSS и присвоить ее одному атрибуту CSS? PDO не может сравнивать mysql ENUM с использованием целых чисел в подготовленных операциях Каков оптимальный номер запроса MYSQL в php-скрипте? Угловые ошибки анализа синтаксиса ajax и php Клиент PHP Socket – обнаружение отключения сервера PHP Если else указывает, что запись в базе данных пуста, будет отображаться изображение по умолчанию XMLHttpRequest в службе обслуживания Как отображать содержимое страницы WordPress? вставить массив в MySQL DB (неожиданный T_STRING)

$ _POST с переменным количеством входов?

Как настроить систему, которая считывает данные $ _POST, которые поступают из формы с определенным пользователем количеством входов? Могу ли я использовать индекс, такой как $ _POST [1] или что-то подобное? (например, создавать / удалять страницы, отправлять изменения и обрабатывать ввод на столько страниц, сколько пользователь решает, что они хотят)

В вашей форме создайте свои входные переменные с именами, заканчивающимися квадратными скобками:

<input name="lines[]" type="text"><br> <input name="lines[]" type="text"><br> <input name="lines[]" type="text"><br> 

Вы можете добавить столько, сколько вам нужно, или создать их на лету в javascript.

Когда форма отправляется, данные будут отображаться в виде массива в $ _POST:

 echo $_POST['lines'][0]; echo $_POST['lines'][1]; echo $_POST['lines'][2]; 

Вы должны сделать что-то вроде этого:

 foreach($_POST as $k => $v){ // The action you want to perform for each input } 

Чтобы сделать более продвинутое решение, я думаю, нам нужно немного больше информации о том, что именно это, вы хотите достичь 🙂

Вы можете создать массив полей, используя имя, например, переменные [], а затем пропустить их с помощью цикла foreach.

Установка переменной с квадратными скобками устанавливает ее как массив, который позволяет вам перебирать их. Если вам нужны имена переменных, вы можете передавать их динамически, написав их в квадратных скобках. НАПРИМЕР:

 <input type="text" name="variables[variableName-one]" /> <input type="text" name="variables[variableName-two]" /> 

Преимущество использования этого метода заключается в том, что вы можете использовать имена ключей массива (variableName-one и т. Д.) В своем коде, установив ключ в цикле foreach. Похожий на:

 foreach($_POST['variables'] as $variableName => $variable){ echo $variableName.' was set as '.$variable; } 

В противном случае вы можете оставить его пустым, и вы можете получить к ним доступ, например, например:

 $_POST['variables'][1] 

Я не знаю, полностью ли я понял ваш вопрос

 foreach ($_POST as $key=>$value) { doSomething($key,$value); } 

Где в $ key вы нашли имя ввода и значение $ value его значение. Конечно, вы не можете слишком обобщать это. Например, если есть флажок и этот флажок не проверяется, вы не получите его в массиве сообщений.

если у вас есть несколько входов с массивом типа name: вы получите их как массив.

 foreach ($_POST as $key=>$value) { if(is_array($value)){ foreach($value as $key2=>$value2){ doSomethingOther($key,$key2,$value2); } } else { doSomething($key,$value); } } 

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