PHP单页提交失败,没有错误

时间:2015-11-19 22:45:48

标签: php

php单一提交失败,页面保持不变,数据也没有添加到数据库中。当我单击取消按钮时,我将重定向到新表单,因为它应该工作。

如何让提交工作并将表单数据添加到数据库?下面是php和表单html代码,附上的是表单图片

<div class="form-group">
                <label for="s_fname">First name</label> *
                <input type="text" class="form-control" placeholder="First name"> 
                <label for="s_lname">Last name</label> *
                <input type="text" class="form-control" placeholder="Last name"> 
                <label for="s_mname">Middle name</label>
                <input type="text" class="form-control" placeholder="Middle name">
                <label for="s_dob">Date of Birth</label> *
                <input type="text" class="form-control" placeholder="DD/MM/YYYY"> 
                <label for="g_phone">Phone Number</label> *
                <input type="text" class="form-control" placeholder="Phone number"> 
                <label for="g_email">Email</label> *
                <input type="text" class="form-control" placeholder="Email address"> 
                <label for="entry_year">Entry level</label> *
                <input type="text" class="form-control" placeholder="Entry level"> 
            </div>

            <div class="row text-right">
                <input type="submit" name="submit" value="Save" class="btn btn-default" /> 
                &nbsp 
                <button type="button" class="btn btn-default" aria-label="Left Align"><a href="new_student.php">Cancel</a></button>
            </div>

<?php 
if (isset($_POST['submit'])) {
    # process the form

    $s_fname = $_POST["s_fname"];
    $s_lname = $_POST["s_lname"];
    $s_mname = $_POST["s_mname"];
    $s_dob = $_POST["s_dob"];
    $g_phone = $_POST["g_phone"];
    $g_email = $_POST["g_email"];
    $entry_year = $_POST["entry_year"];

    $query  = "insert into students (s_fname, s_lname, s_mname, s_dob, g_phone, g_email, entry_year) ";
    $query .= "values ('{$s_fname}', '{$s_lname}', '{$s_mname}', {$s_dob}, {$g_phone}, {$g_email}, {$entry_year})";

    $result = mysqli_query($connection, $query);

    if ($result) {
        # successful
        redirect_to("student.php");
    } else {
        # failure
        redirect_to("new_student.php");
    }
}
?>

Form

3 个答案:

答案 0 :(得分:0)

  1. 为您的元素添加名称。
  2. 确保表单方法为&#34; post&#34;不是&#34;得到&#34;。

答案 1 :(得分:0)

梅纳 -

我发现此代码存在一些问题:

  1. 您在元素中没有此HTML。您将希望将整个包装在一个元素中,并确保将其作为POST而不是GET提交。请在此处查看有关表单的W3C文档:http://www.w3schools.com/html/html_forms.asp

  2. 由于Don's Panic提及,您的表单输入字段没有名称,因此不会随表单一起提交。请参阅上面有关输入字段的name属性的链接。

  3. 除非你出于安全原因发出它(如果你这样做,请打电话!),你需要一个有效的mysqli连接。有关如何创建连接的说明,请参阅PHP手册:http://php.net/manual/en/function.mysqli-connect.php

  4. 最后,你重定向到student.php或new_student.php页面的php代码将不起作用,除非你在其他地方专门创建了这些函数,因为它们没有构建到PHP中。请参阅此处的标题函数的PHP手册,以正确重定向您的用户:http://php.net/manual/en/function.header.php

  5. 否则,其他一切看起来都应该有效!

答案 2 :(得分:0)

问题似乎在于你的HTML。表单中的输入未命名。而且,如果那是整个代码,那么一些非常关键的部分就是错误。您没有将表单控件括在&lt; form&gt;中。标签。您需要执行此操作并将表单操作定义为SELF。因此,您的代码应如下所示:

<form name="myform" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<!--
   Your other form elements go here as in
   <input name="some name" class="some class" type="text" />
-->
</form>

如果表单提交没有达到php代码,那应该有用。