表单提交保存数​​据

时间:2014-01-31 10:32:02

标签: javascript php html forms

我制作了一个只需要5个字段的表单,其他字段是可选的。

我的表单操作为空,但onSubmit为:

function validateInput()
    {
        var ifEmpty =   (document.forms['orderform'].naam.value == "" ||
                        document.forms['orderform'].woonplaats.value == "" ||
                        document.forms['orderform'].straatnaam.value == "" ||
                        document.forms['orderform'].huisnummer.value == "" ||
                        document.forms['orderform'].telefoonnummer.value == "");

        if(ifEmpty)
        {
            document.orderform.action ="index.php?page=pizzaorder";
        }else{
            document.orderform.action ="index.php?page=pizza_bestelling";
        }
    }

因此,当这5个字段中的1个为空时,操作将为index.php?page=pizzaorder,如果一切正常,则操作index.php?page=pizza_bestelling这一切都正常工作。但是,如果其中一个字段为空,它将提交给自己,即page = pizzaorder。

(我不能使用$_SERVER['PHP_SELF']的原因是因为我正在使用包含菜单。这意味着我总是在同一页面上,它只会包含基于菜单选项的不同文件。所以如果我是使用$_SERVER['PHP_SELF']我会发送到默认的index.php,这将是我的主页,这不是我想要的)

无论如何,如果其中一个字段未填充,它将发送到同一页面,其中包含空字段旁边的错误消息,这也正常工作。

if ($_SERVER["REQUEST_METHOD"] == "POST")
 {
    if (empty($_POST["naam"]))
    {$naamErr = "Vul uw naam in";}
    else
    {$naam = test_name($_POST["naam"]);}

    if (empty($_POST["woonplaats"]))
    {$woonplaatsErr = "Vul uw Woonplaats in";}
    else
    {$woonplaats = test_name($_POST["woonplaats"]);}

    if (empty($_POST["straatnaam"]))
    {$straatErr = "Vul uw straat in";}
    else
    {$straatnaam = test_name($_POST["straatnaam"]);}

    if (empty($_POST["huisnummer"]))
    {$huisnummerErr = "Vul uw Huisnummer in";}
    else
    {$huisnummer = test_name($_POST["huisnummer"]);}

    if (empty($_POST["telefoonnummer"]))
    {$telefoonErr = "Vul uw Telefoonnummer in";}
    else
    {$telefoonnummer = test_name($_POST["telefoonnummer"]);}
}

但是如果发生这种情况,所有字段都是空的,这不是我想要的。如果用户正确填写了他的所有信息,但忘记了他,那么他说,街道他只看到错误消息街道是必需的,但他的所有其他数据也是空的。唯一的区别是没有错误信息。

所以我想要的是,如果他被发送回带有错误消息的页面,其他信息也不应该是空的。

我希望我的问题有点清楚,否则请随时要求澄清!

提前致谢!

1 个答案:

答案 0 :(得分:1)

所以基本上,只要向用户显示要重新输入的表单,就需要它显示他之前输入的值。这些称为粘性表单。 因此,在表单的每个输入标记中,根据值,检查$ _POST超级全局是否为空,并在其值属性中回显它。

<input type="text" name="telefoonnummer" value="<?php echo (isset($_POST['telefoonnummer']) && !empty($_POST['telefoonnummer']))?$_POST['telefoonnummer']:'';?>"/>

为了便于阅读 -

<input type="text" name="telefoonnummer" value="
<?php 
    echo (isset($_POST['telefoonnummer']) && !empty($_POST['telefoonnummer']))?$_POST['telefoonnummer']:'';
?>
"/>