У меня есть форма HTML, который имеет 20 раскрывающееся поле, генерируемое функцией, как показано ниже ....проверки в PHP для выпадающего меню
<?php
$sub_1 = subject_show (subject_1, $scl_unique_id, $cls_sec_bat);
if ($sub_1)
{?>
<tr>
<td><?php echo $sub_1;?></td>
<td><select name="subject_1" id="subject_1" style="min-width:100px">
<?php
if(isset($subject_1)){?>
<option value="<?php echo $subject_1; ?>" selected="selected"><?php echo $subject_1; ?></option>
<?php }else{ ?>
<option value="<?php echo $sub_1;?>" disabled="disabled" selected="selected"><?php echo $sub_1;?></option>
<?php } ?>
<option value="<?php echo MAR_ABS;?>"><?php echo MAR_ABS;?></option>
<option value="<?php echo MAR_NA;?>"><?php echo MAR_NA;?></option>
<?php
for ($i=0; $i<=100; $i++)
{
echo '<option value="'.$i.'">'.$i.'</option>';
}
?>
</select></td>
</tr>
<?php
}
?>
В коде, если функция имеет значение на $ SUB_1 то выпадающее поле, напечатанное на выходе html с именем subject_1. Если это не будет напечатано.
Тот же код у меня 20 раз. Если функция имеет значение в $ sub_2 или $ sub_3 или $ sub_4 до $ sub_20, поле напечатано с именем subject_2 или subject_3 или subject_4 до subject_20.
Любое поле выпадающего меню может быть напечатано в зависимости от выхода пользователя и функции.
Когда время чтения, я читаю все 20 имен, как
if (isset($_POST['save_exit']))
{
$roll_number = strtoupper(trim(implode(' ', preg_split('/\s+/', $_POST["roll_number"]))));
$subject_1 = $_POST["subject_1"];
$subject_2 = $_POST["subject_2"];
$subject_3 = $_POST["subject_3"];
$subject_4 = $_POST["subject_4"];
$subject_5 = $_POST["subject_5"];
$subject_6 = $_POST["subject_6"];
$subject_7 = $_POST["subject_7"];
$subject_8 = $_POST["subject_8"];
$subject_9 = $_POST["subject_9"];
$subject_10 = $_POST["subject_10"];
$subject_11 = $_POST["subject_11"];
$subject_12 = $_POST["subject_12"];
$subject_13 = $_POST["subject_13"];
$subject_14 = $_POST["subject_14"];
$subject_15 = $_POST["subject_15"];
$subject_16 = $_POST["subject_16"];
$subject_17 = $_POST["subject_17"];
$subject_18 = $_POST["subject_18"];
$subject_19 = $_POST["subject_19"];
$subject_20 = $_POST["subject_20"];
Я не хочу пользователю представить пустой выпадающий список, так что я wrinting одобрению,
if(empty(subject_1))
{
say error
}
if(empty(subject_2))
{
say error
}
Я wrting это 20 раз для всех предметов.
Проблема заключается в том, что у пользователя есть только три субъекта с именем типа subject_1 и subject_2 и subject_3 на форуме. Это даст ошибку для всех остальных 17 предметов.
Как я могу прочитать подтверждение только предметов, доступных на форме?
Пожалуйста, дайте мне знать, если это не ясно.
Пожалуйста, пост пример того, что форма HTML выглядит как после того, как PHP делает это (из исходного кода страницы) , Это крик для рефакторинга с использованием синтаксиса '' [] 'массива PHP в атрибутах' name = 'элемента формы. –
Я правильно разместил код формы. Пожалуйста, дайте мне знать, что вы хотите ??? как я могу это получить .. – user2642907
Вам нужно проверить, был ли элемент формы опубликован, но значение пустое - 'isset ($ _ POST [" subject _ # "])'/'$ subject_1 == '''. Таким образом, ваш 'if' может быть -' if (isset ($ _ POST ["subject_1"] && empty ($ subject_1)) {сообщение об ошибке} ' – Sean