如何在单页中设置保存前和表单验证后的PHP确认对话框

how to set PHP confirmation dialog box before save and after form validation in single page

如何设置在php表单验证完成后弹出确认对话框?如果用户单击提交按钮,它应该验证用户输入,最后它会询问确认消息,如 "Do you want to save?" 以及确定和取消按钮,然后它应该将数据保存到数据库中。 请参考下面的代码。

 <?php
    error_reporting( ~E_NOTICE );
    $name_err='';
    $name='';
    $type_err='';
    $type='';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['submit'])) {

              $e = true;

        if (empty($_POST['name'])) {
            $name_err = "Please enter the Product Name";
            $e = false;
        } else {
            $name = $_POST['name'];
            // check if name only contains letters and whitespace

        }
     if (empty($_POST['type'])||$_POST['type']=="select") {
            $type_err = "Please select the Product Type";
            $e = false;
        } else {
            $type = $_POST['type'];

                   }
     $con = mysqli_connect("localhost", "root", "", "csr");
    if (!$con) {
        die('Could not connect: ' . mysql_error());
    }


}
//final check whether it is true the input will process

    if($e)
    {

        mysqli_select_db($con, "csr");

        mysqli_query($con, "insert into products(employee_id, name, type, brand, model, url, conditions, about, listedon, image_path, reserved_price, Purchased_price, buy_now_price, sale_end_date)
                                   values('$eid','$name','$type','$brand','$model','None','$condition','$about','$listedon','$imgName','$reserved_price','$Purchased_price','$buy_now_price','$sale_end_date')") or  die('Could not connect: ' . mysql_error());

        header('Location:/sellproduct/index/');
        mysqli_close($con);

    }
}
?>
 <form action=" "  method="post" class="stdform stdform2" autocomplete="off" enctype="multipart/form-data">

                    <p>
                             <input type="hidden" name="employee_id" value="" id="employee_id" />
                    </p>
                <p>
                    <label for="name" class="required">Product Name</label>
                    <span class="field">
                        <input type="text" name="name" id="name" value="<?php echo $name;?>" /><br><span class="error"><?php echo $name_err;?></span></span>

                </p>
                <p>
                    <label for="type" class="required">Product Type</label>
                    <span class="field">
                    <select name="type" id="type" minlength="2" maxlength="60">
                            <option value="select" label="Select" <?php echo ($type == "select" || empty($type) ? "selected='selected'" : "");  ?> selected disabled >Select</option>
                            <option value="Electronics" label="Electronics" <?php echo ($type == "Electronics" ? "selected='selected'" : ""); ?>>Electronics</option>
                            <option value="Appliances" label="Appliances" <?php echo ($type == "Appliances" ? "selected='selected'" : ""); ?>>Appliances</option>
 <form action=" "  method="post" class="stdform stdform2" autocomplete="off" enctype="multipart/form-data">

                    <p>
                             <input type="hidden" name="employee_id" value="" id="employee_id" />
                    </p>
                <p>
                    <label for="name" class="required">Product Name</label>
                    <span class="field">
                        <input type="text" name="name" id="name" value="<?php echo $name;?>" /><br><span class="error"><?php echo $name_err;?></span></span>

                </p>
                <p>
                    <label for="type" class="required">Product Type</label>
                    <span class="field">
                    <select name="type" id="type" minlength="2" maxlength="60">
                            <option value="select" label="Select" <?php echo ($type == "select" || empty($type) ? "selected='selected'" : "");  ?> selected disabled >Select</option>
                            <option value="Electronics" label="Electronics" <?php echo ($type == "Electronics" ? "selected='selected'" : ""); ?>>Electronics</option>
                            <option value="Appliances" label="Appliances" <?php echo ($type == "Appliances" ? "selected='selected'" : ""); ?>>Appliances</option>
 <form action=" "  method="post" class="stdform stdform2" autocomplete="off" enctype="multipart/form-data">

                    <p>
                             <input type="hidden" name="employee_id" value="" id="employee_id" />
                    </p>
                <p>
                    <label for="name" class="required">Product Name</label>
                    <span class="field">
                        <input type="text" name="name" id="name" value="<?php echo $name;?>" /><br><span class="error"><?php echo $name_err;?></span></span>

                </p>
                <p>
                    <label for="type" class="required">Product Type</label>
                    <span class="field">
                    <select name="type" id="type" minlength="2" maxlength="60">
                            <option value="select" label="Select" <?php echo ($type == "select" || empty($type) ? "selected='selected'" : "");  ?> selected disabled >Select</option>
                            <option value="Electronics" label="Electronics" <?php echo ($type == "Electronics" ? "selected='selected'" : ""); ?>>Electronics</option>
                            <option value="Appliances" label="Appliances" <?php echo ($type == "Appliances" ? "selected='selected'" : ""); ?>>Appliances</option>
</select><br><span class="error"><?php echo $type_err;?></span></span>                </p>

<p class="stdformbutton">
                    <input type="submit" class="bluishBtn button_small" name="submit" value="SAVE" id="submit">

                    <button name="cancel" id="cancel" type="button" class="greyishBtn button_small">Cancel</button>                </p>

</form>

请帮帮我

您不能直接通过 PHP 生成对话框,在您最后的 if 语句中,您应该回显一个基本的 html 和一个 javascript 重定向到另一个 php 页面接受您在参数中的输入以将其插入:

echo '

<html>
<script type="text/javascript">

function input_confirm(){

    var r = confirm("Confirm this input : '.$_POST['name'].'-'.$_POST['type'].'");
    if(r){
        window.location.href = "insert.php?type='.$_POST['type'].'&name='.$_POST['name'].'";
    }
}


</script>

<body onload="input_confirm()">
</body>

</html>

';

最佳解决方案是在客户端和服务器端进行两次验证。无需使用可以在客户端计算机上预先验证的无效数据来打扰服务器。

对于客户端验证,您需要编写一些 javascript,它将在用户单击 提交 按钮后验证表单。当然 Submit 按钮必须是标准类型按钮,你不希望它实际提交而只是调用 javascript 验证函数。如果需要,您可以使用 validate.js。

所以,验证功能在完成它的工作后,会弹出一个问题,询问是否保存数据或...不同的弹出信息,提示表单需要更正。将这两个表格放在不可见的 DIV 块中,并在需要时显示它们。 现在在一个问题中弹出 OK 按钮调用另一个 javascript 函数,该函数现在对发送所有表单数据的服务器进行 ajax 调用。

如果您的验证取决于某些数据库状态或服务器上的任何内容,您可以在验证函数中进行一次额外的 ajax 调用,以向服务器询问更多信息,甚至要求它验证某些字段即刻。这很有用,例如,如果您有注册表并想立即向用户显示昵称已被使用的信息,以便他可以在按下 Sumbit.[=10= 之前更改它。 ]

然后在服务器收到此数据后,您需要进行另一次服务器端验证以检查数据完整性和可能的​​攻击。

希望这对您有所帮助。顺便说一句,如果您需要在单个页面中执行此类操作,我真的建议您实施 jQuery 和 validate.js。