Как я могу установить отдельные переменные в PHP l oop из формы? - PullRequest
1 голос
/ 11 июля 2020

Например: у меня есть основная форма c HTML, как показано ниже:

<div class="form-group">
    <label class="control-label" for="checkboxes" name="industry">How would you classify your business?</label>

    <div class="checkbox">
        <label for="checkboxes-0">
            <input type="checkbox" name="checkboxes" id="checkboxes-0">
            Nonprofit
        </label>
    </div>
    <div class="checkbox">
        <label for="checkboxes-1">
            <input type="checkbox" name="checkboxes" id="checkboxes-1">
            Service
        </label>
    </div>

Это всего лишь фрагмент, это не полная форма

Я хочу разобрать форму множественного выбора на переменные в PHP. Для каждого имени в такой форме, как «Некоммерческая организация», «Служба», если пользователь выбирает, например, «Некоммерческая организация», я хочу создать переменную для некоммерческой организации и установить ее на 1, а переменную для «услуги» установить равной 0. .

Я понимаю, что мне нужно использовать al oop вот так

if(isset($_POST['submit'])) {
    $industry = $_POST['checkboxes'];
}

Но как мне l oop через метки и установить переменные, которые пользователь выбирает, на 1 а остальные равны 0?

Ответы [ 2 ]

0 голосов
/ 11 июля 2020

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

HTML

<form method="post">
<div class="form-group">
 <label class="control-label" for="checkboxes" name="industry">How would you classify your business?</label>
<div class="checkbox">
 <label for="checkboxes-0">
     <input type="checkbox" name="nonprofit" id="checkboxes-0" value="nonprofit">
     Nonprofit
 </label>
</div>
<div class="checkbox">
<label for="checkboxes-1">
   <input type="checkbox" name="service" id="checkboxes-1" value="service">
     Service
</label>
</div>
   <button type="submit" name="submit">Submit</button>
</div>
</form>

PHP

if (isset($_POST['submit'])) {
 foreach ($_POST as $key => $value) {
  if ($value != null) {
   $result[] = $value; 
   }
  }
   foreach ($result as $value1) {
    $values[] = $value1; 
   }
 
 foreach ($values as $value2) {
  echo '$'.$value2.'= 1<br>';
 }
}

Вывод

Если пользователь выбирает Nonprofit

$nonprofit= 1

Если выбрано Service

$service= 1

Если выбраны оба

$nonprofit= 1
$service= 1
0 голосов
/ 11 июля 2020

В одну сторону. Сначала определите скрытый ввод для каждого, который может быть переопределен флажком, и для каждого требуются name и value:

    <input type="hidden" name="Nonprofit" value="0">
    <input type="checkbox" name="Nonprofit" id="checkboxes-0" value="1">
    <input type="hidden" name="Service" value="0">
    <input type="checkbox" name="Service" id="checkboxes-1" value="1">

Затем вы можете получить доступ к $_POST['Nonprofit'], который будет иметь значение 0 или 1 et c ...

Другой способ, зная, что может быть отправлено, - это отправить массив:

    <input type="checkbox" name="check[Nonprofit]" id="checkboxes-0" value="1">
    <input type="checkbox" name="check[Service]" id="checkboxes-1" value="1">

Затем объедините то, что отправлено, с массивом 0:

$checks = ['Nonprofit' => 0, 'Service' => 0];
$checks = array_merge($checks, $_POST['check']);

Затем вы можете получить доступ к $checks['Nonprofit'], который будет иметь значение 0 или 1 et c ...

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