约会表单-错误消息后的奇怪结构


Appointment form - strange stucture after error message

我的预约表格有问题。当客户填写表格,但必填字段为空时,此字段将收到错误消息。这很好用。问题是,这个页面上的不同选择菜单会有一个奇怪的结构。如果出现此问题,将发送错误的日期。如果你愿意,你可以在这里测试表格;http://www.o-vita.nl/afspraak.php.

形式:

          <form action="afspraak_verstuur.php" method="post" name="contact_form">
                <table width="300" border="0">
                        <tr>
                        <td class="tabform">Naam*:</td>
                        <td>&nbsp;</td>
                        </tr>
                        <tr>
                        <td colspan="2">
                                                                          <select name="aanhef" type="text" class="text_aanhef" value="Selecteer uw aanhef" />
                     <option value="Aanhef">Aanhef</option>
                    <option value="Mevr.">Mevr.</option>
                    <option value="Dhr.">Dhr.</option>
                    </select>
    <?php echo (isset($_SESSION['aanhef'])) ? $_SESSION['aanhef'] : ""; ?>
                                <input name="name" type="text" class="text_naam" value="<?php echo (isset($_SESSION['name'])) ? $_SESSION['name'] : ""; ?>" /></td>
                </tr>
                <?php if (in_array('name', $_GET['error'])) { ?>
                <tr>
                        <td colspan="2">
                                <font color="red">Er is geen naam ingevuld</font>
                        </td>
                </tr>
                <?php } ?>

                        <tr>
                        <td class="tabform">E-mail*:</td>
                                <td>&nbsp;</td>
                        </tr>
                        <tr>
                                <td colspan="2">
                                        <input name="email" type="text" class="text_veld" value="<?php echo (isset($_SESSION['email'])) ? $_SESSION['email'] : ""; ?>" />
                                </td>
                        </tr>
                        <?php if (in_array('email', $_GET['error'])) { ?>
                <tr>
                        <td colspan="2">
                                <font color="red">Er is geen e-mailadres ingevuld</font>
                        </td>
                </tr>
                <?php } ?>
                        <tr>

                        <tr>
                        <td class="tabform">Adres:</td>
                                <td>&nbsp;</td>
                        </tr>
                        <tr>
                                <td colspan="2">
                                        <input name="adres" type="text" class="text_veld" value="<?php echo (isset($_SESSION['adres'])) ? $_SESSION['adres'] : ""; ?>" />
                                </td>
                        </tr>
                        <?php if (in_array('adres', $_GET['error'])) { ?>
                <tr>
                        <td colspan="2">
                                <font color="red">Er is geen adres ingevuld</font>
                        </td>
                </tr>
                <?php } ?>
                        <tr>

                                <tr>
                        <td class="tabform">Postcode:</td>
                                <td>&nbsp;</td>
                        </tr>
                        <tr>
                                <td colspan="2">
                                        <input name="postcode" type="text" class="text_veld" value="<?php echo (isset($_SESSION['postcode'])) ? $_SESSION['postcode'] : ""; ?>" />
                                </td>
                        </tr>
                        <?php if (in_array('postcode', $_GET['error'])) { ?>
                <tr>
                        <td colspan="2">
                                <font color="red">Er is geen postcode ingevuld</font>
                        </td>
                </tr>
                <?php } ?>
                        <tr>

            <tr>
                        <td class="tabform">Woonplaats:</td>
                                <td>&nbsp;</td>
                        </tr>
                        <tr>
                                <td colspan="2">
                                        <input name="woonplaats" type="text" class="text_veld" value="<?php echo (isset($_SESSION['woonplaats'])) ? $_SESSION['woonplaats'] : ""; ?>" />
                                </td>
                        </tr>
                        <?php if (in_array('woonplaats', $_GET['error'])) { ?>
                <tr>
                        <td colspan="2">
                                <font color="red">Er is geen woonplaats ingevuld</font>
                        </td>
                </tr>
                <?php } ?>
                        <tr>

                        <tr>
                        <td class="tabform">Telefoon*:</td>
                                <td>&nbsp;</td>
                        </tr>
                        <tr>
                                <td colspan="2">
                                        <input name="telefoon" type="text" class="text_veld" value="<?php echo (isset($_SESSION['telefoon'])) ? $_SESSION['telefoon'] : ""; ?>" />
                                </td>
                        </tr>
                        <?php if (in_array('telefoon', $_GET['error'])) { ?>
                <tr>
                        <td colspan="2">
                                <font color="red">Er is geen telefoonnummer ingevuld</font>
                        </td>
                </tr>
                <?php } ?>
                        <tr>
            <tr>
                        <td class="tabform">Datum*:</td>
                                <td>&nbsp;</td>
                        </tr>
                        <tr>
                                <td colspan="2">
                                        <select name="dag" type="text" class="text_dag" value="Selecteer een dag" />
                    <option value="maandag">maandag</option>
                    <option value="dinsdag">dinsdag</option>
                    <option value="woensdag">woensdag</option>
                    <option value="donderdag">donderdag</option>
                    <option value="vrijdag">vrijdag</option>
                    <option value="zaterdag">zaterdag</option>
                    </select>
    <?php echo (isset($_SESSION['dag'])) ? $_SESSION['dag'] : ""; ?>
                    <select name="dag_nummer" type="text" class="text_dag_nummer" value="1" />
                    <option value="1">1</option>
                    <option value="2">2</option>
                    <option value="3">3</option>
                    <option value="4">4</option>
                    <option value="5">5</option>
                    <option value="6">6</option> 
                    <option value="7">7</option>
                    <option value="8">8</option>
                    <option value="9">9</option>
                    <option value="10">10</option>
                    <option value="11">11</option>
                    <option value="12">12</option>
                    <option value="13">13</option>
                    <option value="14">14</option>
                    <option value="15">15</option>
                    <option value="16">16</option>
                    <option value="17">17</option>
                    <option value="18">18</option> 
                    <option value="19">19</option>
                    <option value="20">20</option>
                    <option value="21">21</option>
                    <option value="22">22</option>
                    <option value="23">23</option>
                    <option value="24">24</option>
                    <option value="25">25</option>
                    <option value="26">26</option>
                    <option value="27">27</option>
                    <option value="28">28</option>
                    <option value="29">29</option>
                    <option value="30">30</option>
                    <option value="31">31</option>
                    </select>
    <?php echo (isset($_SESSION['dag_nummer'])) ? $_SESSION['dag_nummer'] : ""; ?>
                    <select name="maand" type="text" class="text_maand" value="Januari" />
                    <option value="januari">januari</option>
                    <option value="februari">februari</option>
                    <option value="maart">maart</option>
                    <option value="april">april</option>
                    <option value="mei">mei</option>
                    <option value="juni">juni</option>
                    <option value="juli">juli</option>
                    <option value="augustus">augustus</option>
                    <option value="september">september</option>
                    <option value="oktober">oktober</option>
                    <option value="november">november</option>
                    <option value="december">december</option>
                    </select>
      <?php echo (isset($_SESSION['maand'])) ? $_SESSION['maand'] : ""; ?>
                                </td>
                        </tr>
                        <?php if (in_array('datum', $_GET['error'])) { ?>
                <tr>
                        <td colspan="2">
                                <font color="red">Er is geen datum ingevuld</font>
                        </td>
                </tr>
                <?php } ?>
                        <tr>

            <tr>
                        <td class="tabform">Tijd*:</td>
                                <td>&nbsp;</td>
                        </tr>
                        <tr>
                                <td colspan="2">
                                        <input name="tijd" type="text" class="text_veld" value="<?php echo (isset($_SESSION['tijd'])) ? $_SESSION['tijd'] : ""; ?>" />
                                </td>
                        </tr>
                        <?php if (in_array('tijd', $_GET['error'])) { ?>
                <tr>
                        <td colspan="2">
                                <font color="red">Er is geen tijd ingevuld</font>
                        </td>
                </tr>
                <?php } ?>
                        <tr>

            <tr>
                        <td class="tabform">Opmerking:</td>
                                <td>&nbsp;</td>
                        </tr>
                        <tr>
                                <td height="60" colspan="2">
                                        <textarea name="opmerking" type="text" class="text_comments" rows="4" value="" /><?php echo (isset($_SESSION['opmerking'])) ? $_SESSION['opmerking'] : ""; ?></textarea>
                                </td>
                        </tr>
                        <?php if (in_array('opmerking', $_GET['error'])) { ?>
                <tr>
                        <td colspan="2">
                                <font color="red">Er is geen opmerking ingevuld</font>
                        </td>
                </tr>
                <?php } ?>
                                    <tr>
            <td class="tabform">
                Nieuwsbrief ontvangen?
                  <br /><input name="newsletter" type="radio" id="news_true" value="Ja" checked="checked" /> 
                <label for="news_true">Ja</label>
                <input type="radio" name="newsletter" id="news_false" value="Nee" />
                <label for="news_false">Nee</label>
            </td>
            <td>&nbsp;</td>
        </tr>
        <?php if (in_array('name', $_GET['error'])) { ?>
        <tr>
            <td colspan="2">
                Er is geen nieuwsbrief vermelding ingevuld
            </td>
        </tr>
        <?php } ?>

                        <tr>
                                <td colspan="2" class="verzenden">
                                        <input name="verzenden" type="image" id="verzenden" src="img/verzenden.png" alt="Verzenden" title="Verzenden" />
                                </td>
                        </tr>
                </table>
        </form>

以下是发送邮件的脚本:

 <?php
error_reporting(0);
session_start();

if ("post" === strtolower($_SERVER['REQUEST_METHOD'])) {
    $aanhef = $_POST['aanhef'];
    $name = $_POST['name'];
    $email = $_POST['email'];
    $adres = $_POST['adres'];
    $postcode = $_POST['postcode'];
    $woonplaats = $_POST['woonplaats'];
    $telefoon = $_POST['telefoon'];
    $dag = $_POST['dag'];
    $dag_nummer = $_POST['dag_nummer'];
    $maand = $_POST['maand'];
    $tijd = $_POST['tijd'];
    $opmerking = $_POST['opmerking'];
    $newsletter = $_POST['newsletter'];
    $_SESSION['aanhef'] = $aanhef;
    $_SESSION['name'] = $name;
    $_SESSION['email'] = $email;
    $_SESSION['adres'] = $adres;
    $_SESSION['postcode'] = $postcode;
    $_SESSION['woonplaats'] = $woonplaats;
    $_SESSION['telefoon'] = $telefoon;
    $_SESSION['dag'] = $dag;
    $_SESSION['dag_nummer'] = $dag_nummer;
    $_SESSION['maand'] = $maand;
    $_SESSION['tijd'] = $tijd;
    $_SESSION['opmerking'] = $opmerking;
    $_SESSION['newsletter'] = $newsletter;
    if (empty($name) || empty($email) || empty($telefoon) || empty($tijd)) {
        if (empty($name)) {
            $errors[] = "name";
        }
        if (empty($email)) {
            $errors[] = "email";
        }
        if (empty($telefoon)) {
            $errors[] = "telefoon";
        }
        if (empty($tijd)) {
            $errors[] = "tijd";
        }
        header("Location: afspraak.php?error[]=" .implode('&error[]=', $errors));
        exit;
} else {
// send mail if (post) parameters are correct
if (mail(
    'tim-luijten@hotmail.com', 
    'Afsprakenformulier o-vita.nl', 
    "Er is contact opgenomen via het afsprakenformulier. Zie onderstaande gegevens: 'n'n
    Naam: {$aanhef} {$name} 'n
    E-mailadres: {$email} 'n
    Adres: {$adres} 'n
    Postcode: {$postcode} 'n
    Woonplaats: {$woonplaats} 'n
    Telefoonnummer: {$telefoon} 'n
    Datum: {$dag} {$dag_nummer} {$maand} 'n
    Tijd: {$tijd} 'n
    Opmerking: {$opmerking} 'n
    Nieuwsbrief ontvangen: {$newsletter} 'n"         
                ,
    "From: {$email} 'r'n"
  ))
 {
     $_SESSION['aanhef'] = "";
     $_SESSION['name'] = "";
     $_SESSION['email'] = "";
     $_SESSION['adres'] = "";
     $_SESSION['postcode'] = "";
     $_SESSION['woonplaats'] = "";
     $_SESSION['telefoon'] = "";
     $_SESSION['dag'] = "";
     $_SESSION['dag_nummer'] = "";
     $_SESSION['maand'] = "";
     $_SESSION['tijd'] = "";
     $_SESSION['opmerking'] = "";
     $_SESSION['newsletter'] = "";
     header("Location: bedankt_afspraak.php");
        exit;
           } else {
    //display a message that the message failed to send.
   }
}
    }

header("Location: afspraak.php");
?>

我现在有这样的:

    <?php $days = array(
    1 => 1,
    2 => 2,
    3 => 3,
etc
etc
    // ...
);
echo '<select name="dag_nummer" type="text" class="text_dag_nummer">' . "'n";
foreach ($days as $value => $text) {
    echo '<option value="' . $value . '"';
    if (isset($_POST['dag_nummer']) && $_POST['dag_nummer'] == $value) {
        echo ' selected="selected"';
    }

    echo '>' . $text . "</option>'n";
}
echo "</select>'n";
 ?>

但是,它仍然会在下拉框后显示所选的值,而不是所需的值。。。查看我的屏幕截图:http://piclair.com/data/gpjal.jpg

看起来您希望错误页面显示用户以前为下拉菜单选择的选项。这应该使用以下方法来完成:

<option value="10" selected="selected">10</option>

你需要用程序处理这个选择:

$days = array(
    1 => 1,
    // ...
);
echo '<select name="dag_nummer" type="text" class="text_dag_nummer">' . "'n";
foreach ($days as $value => $text) {
    echo '<option value="' . $value . '"';
    if (isset($_POST['dag_number']) && $_POST['dag_number'] == $value) {
        echo ' selected="selected"';
    }
    echo '>' . $text . "</option>'n";
}
echo "</select>'n";

这应该取代您的echo (isset($_SESSION['dag_number'])) ...逻辑。

还要注意这个构造的<select>元素的结构——<option>元素嵌套在内部。

就在名为"aanhef"的<select>元素之后,有一行:

<?php echo (isset($_SESSION['aanhef'])) ? $_SESSION['aanhef'] : ""; ?>

这一行是在菜单后面打印一些额外的文本,从屏幕截图来看,这看起来像是你不想要的。与其在菜单之后打印文本,我认为您可能需要测试每个<option>元素,看看它是否与$_SESSION['aanhef']值匹配,如果匹配,请将属性selected="selected"附加到该标记中。

还要注意,<select>元素当前在结束标记的内部有一个斜杠,如下所示:<select />。这个斜杠不应该存在,因为<select>标记不是自关闭的。