2

我是 php 新手,我是新来的,我不知道用这么长的方式问一个问题对我来说是否合适。如果这不是这里的做法,我很抱歉。

  • 我有以下用于输入问题的代码,它有四个选择。
  • 在文本框中输入 4 个选项,每个选项对应一个单选按钮。
  • 从这 4 个中单击的按钮将是 $correct 的值
  • $difflevel、$agegroup 和 $catId 又是一组单选按钮的值。

以下是我的代码

    if(isset($_POST['submit']))
    {

    extract($_POST);
    $question=mysqli_real_escape_string($con,$question);
    $option[0]=mysqli_real_escape_string($con,$option[0]);
    $option[1]=mysqli_real_escape_string($con,$option[1]);
    $option[2]=mysqli_real_escape_string($con,$option[2]);
    $option[3]=mysqli_real_escape_string($con,$option[3]);

    mysqli_query($con,"insert into questions(question, op1,op2,op3,op4,correct,difflevel,ageGroup,catId) values
    ('$question','$option[0]','$option[1]','$option[2]','$option[3]',$correct,$difflevel,$ageGroup,$catId)") or die("Some error");

    $questionId = mysqli_insert_id($con);

    if($_POST['catId']=="")//QUESTIONS MUST CONTAIN AT LEAST ONE CATEGORY
        die("Please select category of the question entered.");

    if($_POST['difflevel']=="")//DIFFICULTY LEVEL SHOULD BE SET
        die("Please select difficulty of the question entered.");

    if($_POST['ageGroup']=="")//AGEGROUP SHOULD BE SET
        die("Please select age group of the question entered.");

    if($_POST['correct']=="")//CORRECT ANSWER SHOULD BE SET
        die("Please select correct answer for the question entered.");
    }

由于所有字段都是强制性的,如果不是所有字段都被填写(或单击),我需要一个错误报告。现在,当错误发生时,它被带到一个新页面,因此我输入的所有内容都丢失了,我必须再次输入它们。因此,与其转到下一页,是否可以显示一个带有错误的弹出窗口,以便我可以更正错误并从我停止的地方继续?非常感谢任何帮助。提前致谢。

4

3 回答 3

1

如果您允许用户通过单击提交按钮来发布表单,则页面将重定向到表单标签的操作参数。然后,您将丢失表单上所有输入的数据。使用这种方法可以解决这个问题,但它有点古怪。

但不是使用标准 html 表单元素发布表单,而是使用 AJAX 发布表单,然后页面将不会重定向/刷新,并且所有之前输入的表单数据都将被保留。然后解析响应文本并相应地放置相应的错误消息。

这是一个例子:

<form>
    <input type="text" id="someText" value="" /><br />
    <button id="submit_button">Submit</button>
</form>

<script type="text/javascript">

$(function(){
    $("#submit_button").click(function(){
        var someText = $("#someText").val();
        $.post("/handle_ajax.php",{someText:someText},function(resp){
            if(resp !== "OK"){
                alert("ERROR OCCURED "+resp)
            }
        });
    });
});

</script>

这是非常简单的 php ajax 处理程序

<?php

if(empty($_POST["someText"])){
    echo "someText field cannot be left blank";
}else{
    echo    "OK";
}

?>

现在,如果您想要花哨,而不是警告错误消息,请将所有错误消息以漂亮的 html 形式放入表单中,如果一切正常,则清除它们。

于 2013-09-05T11:50:10.870 回答
0

使用 JavaScriptalert

    <?php
if(isset($_POST['submit']))
{

    extract($_POST);
    $question=mysqli_real_escape_string($con,$question);
    $option[0]=mysqli_real_escape_string($con,$option[0]);
    $option[1]=mysqli_real_escape_string($con,$option[1]);
    $option[2]=mysqli_real_escape_string($con,$option[2]);
    $option[3]=mysqli_real_escape_string($con,$option[3]);

    mysqli_query($con,"insert into questions(question, op1,op2,op3,op4,correct,difflevel,ageGroup,catId) values
    ('$question','$option[0]','$option[1]','$option[2]','$option[3]',$correct,$difflevel,$ageGroup,$catId)") or die("Some error");

    $questionId = mysqli_insert_id($con);

    if($_POST['catId']=="")//QUESTIONS MUST CONTAIN AT LEAST ONE CATEGORY
        echo "<script>alert('Please select category of the question entered.')</script>";
    exit;
        //die("Please select category of the question entered.");

    if($_POST['difflevel']=="")//DIFFICULTY LEVEL SHOULD BE SET
        echo "<script>alert('Please select difficulty of the question entered')</script>";
    exit;

    if($_POST['ageGroup']=="")//AGEGROUP SHOULD BE SET
        echo "<script>alert('Please select age group of the question entered.')</script>";
    exit;

    if($_POST['correct']=="")//CORRECT ANSWER SHOULD BE SET
        echo "<script>alert('Please select correct answer for the question entered.')</script>";
    exit;
}
于 2013-09-05T11:47:16.517 回答
0

您可以使用 java 脚本验证。因此,如果有人尝试在未填写必填字段的情况下提交表单,您可以弹出警告消息。jQuery 验证库完美地处理了这个问题。

于 2013-09-05T11:48:42.010 回答