от
У меня есть выпадающий список в форме с опцией «Да» или «Нет», если пользователь выбирает «Нет», появляется скрытый Div с текстовым полем для заполнения пользователем. Если пользователь нажимает «Да», он просто перемещается к следующему вопросу. Я получаю неопределенную ошибку индекса на вопросы, которые пользователь выбирает «Да», когда скрытый div не отображается. Вот мой index.php, который содержит форму и скрытый div

    
        1. Are the Team Players Wearing Gloves for the correct procedure? 
        
    
    

$reason1 = $_POST['reason1']; $attachment1 = $_FILES['attachmentFile1']["name"]; $question2 = $_POST['question2']; if($question2 ==''){ $data['error'] = "question 2 missing"; echo json_encode($data); exit(); } $reason2 = $_POST['reason2']; $attachment2 = $_FILES['attachmentFile2']["name"]; $question3 = $_POST['question3']; if($question3 ==''){ $data['error'] = "question 3 missing"; echo json_encode($data); exit(); }
Поэтому, если пользователь выбирает «Да» для вопроса 1 и «Нет» для вопроса 2, я получаю ошибку «Неопределенный индекс: reason2» на странице post.php, как показано ниже ...
"
Notice: Undefined index: reason1 in D:\inetpub\wwwroot\SMT_24_Point_Check\newAudit.php on line 17

Notice: Undefined index: attachmentFile1 in D:\inetpub\wwwroot\SMT_24_Point_Check\newAudit.php on line 18

             

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

2 Ответы

0 голосов
от
Вы получаете ошибку «Undefined index», потому что если ответ «нет», вы даже не генерируете входные данные в вашей DOM, поэтому эта переменная post не будет существовать. Быстрое решение для этого будет следующим: Вместо строк вроде:
$reason2 = $_POST['reason2'];
Пытаться:
if(isset($_POST['reason2'])) {
    $reason2 = $_POST['reason2'];
} else {
    $reason2 = '';
}
Или то же самое, но более коротким и элегантным способом:
$reason2 = ($_POST['reason2']) ? $_POST['reason2'] : ''
Другим решением для этого будет всегда включать ввод HTML, но сначала скрыть его с помощью
display: none;
- затем сделать его видимым в зависимости от ответа пользователя. Таким образом,
$_POST['reason2']
всегда будет существовать и будет пустым, если он не установлен.     
0 голосов
от
Это то, что происходит, когда вы выбираете Да для опции 1, для скрытого поля нет значения
reason1
, так что вы можете сделать что-то подобное в post.php Первая проверка с помощью функции
isset()
имеет значение
reason1
или не имеет этого значения
if(isset($_POST['reason1'])) {
    $reason1 = $_POST['reason1'];
} else {
    $reason1 = 0; `//Better to pass a value in here for future refernces`
}
Затем, когда вы выбираете
No
для option2 и оставляете его пустым (я вижу, что вы написали i как необязательный), так что у него также нет значения. Так что вы можете сделать то же самое, что и для
$reason1
, как это.
if(isset($_POST['attachmentFile1'])) {
        $attachmentFile1= $_POST['attachmentFile1'];
    } else {
        $attachmentFile1= 0; `//Better to pass a value in here for future refernces`
    }
Спасибо     
...