2015-05-27 3 views
0

Интересно, как я могу убедиться, что флажок установлен на обратной стороне, если, например, кто-то оставляет пустое поле адреса, он должен убедиться, что пользователю не нужно снова заполнять всю форму. В этом случае я генерирую 31 флажок. Это действительно расстраивает.Как установить флажки для проверки в цикле?

$output_checkbox = ''; 
$checked = ''; 
for ($i=1; $i <= 31; $i++) { 
    if (isset($_POST['dagen'])) { 
     foreach ($_POST['dagen'] as $dag) { 
      if ($dag == $i) { 
       $checked . $i = 'checked'; 
      } 
     } 
    } 
    $output_checkbox .= '<input type="checkbox" name="dagen[]" value="' . $i . '" id="day_' . $i . '"' . $checked . ' /><label for="day_' . $i . '">Dag ' . $i . '</label>'; 
} 

Вот форма, но там не проблема:

<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post"> 
<div> 
<label for="email">Email:</label> 
<input id="email" type="text" name="email" value="<?php if(isset($_POST['email'])) { echo $_POST['email'];} ?>" /> 
</div> 
<div> 
<label for="month">Maand:</label> 
    <select id="month" name="month"> 
     <?php echo $output; ?> 
    </select> 
</div> 
<div> 
Dagen: 
<?php echo $output_checkbox; ?> 
</div> 
<input type="submit" name="btnSend" value="Verzenden" /> 
</form> 

Вот пример того, как я обычно делаю это, но это намного проще, так как он выходит из базы данных:

$output = ''; 
while ($row = $result->fetch_array(MYSQLI_BOTH)) { 
$selected = ''; 
if (isset($_POST['month']) && $_POST['month'] == $row['id']) { 
    $selected = 'selected'; 
} 
$output .= '<option value="' . $row['id'] . '"' . $selected . '>' . $row['naam'] . '</option>'; 
} 
+1

Может обеспечить немного больше деталей, форма, которую вы используете для публикации, код для получения сообщения. и т. д. Как правило, вы можете получить доступ к переменной $ _POST на почте, и она должна содержать всю информацию, необходимую для установки необходимых флажков ... – HappyCoder

ответ

0

Что-то вроде этого:

$output_checkbox = ''; 
for ($i=1; $i <= 31; $i++) { 
    if (isset($_POST['dagen'])) { 
     foreach ($_POST['dagen'] as $dag) { 
      if ($dag == $i) { 
       $checked = 'checked'; 
      } 
      else{ 
       $checked = ''; 
      } 
      $output_checkbox .= '<input type="checkbox" name="dagen[]" value="' . $i . '" id="day_' . $i . '"' . $checked . ' /><label for="day_' . $i . '">Dag ' . $i . '</label>'; 

     } 
    } 
} 
+0

Это не решение, так как оно будет печататься только в том случае, если опубликовано, и оно предоставит все флажки между первым выбранным и последним выбранным, отмеченным –

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