如果表单在提交过程中显示错误,如何显示正确填写的字段值


How to show correctly filled fields value if the form shows errors during submission?

我使用以下代码创建表单。表单有文本字段、复选框、下拉菜单和文本区域。如果表单填写正确,我可以在提交过程中显示文本字段值,并向未正确填写的字段显示错误消息。我想对复选框、下拉框和文本区域做同样的操作。如果复选框勾选"是",则如果表单在提交表单期间包含未填写或填写错误的字段,则表单应显示选中的复选框"是"。我保存的字段值如下:

$sender = $_POST["sendername"];
$name_title = $_POST["name_title"];
$pick_up_yes = $_POST["pick_up_yes"];
$pick_up_no = $_POST["pick_up_no"];
$special_req = $_POST["special_req"];

验证:

if(empty($sender)){
 //Blank string, add error to $errors array.        
 $errors['sendername'] = "Please enter your name!";
        }
if($name_title === none){
 //if selected is none, add error to $errors array.        
 $errors['name_title'] = "Please select the title of your name!";
}
if (($pick_up_yes != yes) && ($pick_up_no != no)){
 //Blank string, add error to $errors array.        
 $errors['pick_up_no'] = "Please let us know your airport pick up requirement!";
}

HTML表单:

<div class="form-label">Title</div>
    <div class="form-input">
        <select name="name_title" class="name-title-input">     
            <option value="none" selected="selected">Select Title</option>
            <option value="Mr">Mr</option>
            <option value="Mrs">Mrs</option>
            <option value="Miss">Miss</option>
        </select>
    </div>
<div class="error-msg">
    <?php if(isset($errors['name_title'])) { echo '<span style="color: red">'.$errors['name_title'].'</span>'; } ?>
    </div>  
<div class="form-label">Name</div>
<div class="form-input">
    <input type="text" name="sendername" value="<?PHP if(!empty($errors)) { echo $sender;} ?>" />
    <div class="error-msg">
        <?php if(isset($errors['sendername'])) { echo '<span style="color: red">'.$errors['sendername'].'</span>'; } ?>
    </div>
</div>
<div class="form-label">I need Airport pick-up</div>
    <div class="form-input">
        <input type="checkbox" name="pick_up_yes" value="yes" />Yes 
        <input type="checkbox" name="pick_up_no" value="no" />No
<div class="error-msg">
<?php if(isset($errors['pick_up_no'])) { echo '<span style="color: red">'.$errors['pick_up_no'].'</span>'; } ?>
</div>
</div>
<div class="form-label">Write us in details if you have any special requirement</div>
    <div class="form-input">​
    <textarea name="special_req" value="<?PHP if(!empty($errors)) { echo $special_req;} ?>"></textarea>
    </div>

只有当我再次看到表单时表单提交有错误时,我才会保存"sendername"值。当表单显示错误时,如何获取所选复选框、下拉列表和文本区域的保存/选定值?

我可能会做的一件事是更改

 if($name_title === none){

if($name_title == "none"){

或者将其设为空值,并使用空引号。

还有

if (($pick_up_yes != yes) && ($pick_up_no != no)){

可以是

if ($pick_up_yes == ""){

如果您将值设置为1表示是,0表示无

要完成你想要的,比如

<?php 
    if($_POST['inputName'] == 'myInputValue'){
        $checked = 'checked';
    }
    else{
        $checked = '';
    }
    if($_POST['inputName2'] == 'myInputValue2'){
        $checked2 = 'checked';
    }
    else{
        $checked2 = '';
    }
    if($_POST['inputName3'] == 'myInputValue3'){
        $selected3 = 'selected';
        $selected4 = '';
    }
    else if($_POST['inputName3'] == 'myInputValue4'){
        $selected4 = 'selected';
        $selected3 = '';
    }
    else{
        $selected = '';
    }
?>
<input type='checkbox' <?= $checked;?> name='inputName' value='myInputValue'/>
<input type='checkbox' <?= $checked2;?> name='inputName2' value='myInputValue2'/>
<select name='inputName3'>
    <option <?= $selected3; ?> value='myInputValue3'> pick </option>
    <option <?= $selected4; ?> value='myInputValue4'> me </option>
</select>
<textarea name='inputName4'> <?= $special_req; ?> </textarea>

关键是知道您的值在输入中的填充位置,并回显以前通过表单发布的值:-)