通过php将html表单数据发送到数据库而不切换页面

时间:2017-02-25 17:17:23

标签: php jquery html mysql forms

嘿伙计们,我有一张表格:

<form action="signup.php" method="post" class="cd-form">
                <p class="fieldset">
                  <input class="full-width has-padding has-border" type="text" required maxlength="15" placeholder="First Name" name="primeiro_nome" />         
              </p>
                <p class="fieldset">
                  <input class="full-width has-padding has-border"  type="text" required  maxlength="15" placeholder="Last Name" name="segundo_nome">
                </p>
                <p class="fieldset">
                  <input class="full-width has-padding has-border"  type="email" required maxlength="50"  placeholder="E-mail" name="o_email">
                </p>
                <p class="fieldset">
                    <input class="full-width" type="submit" value="Sign Up!">
                </p>        
            </form>

您可能会注意到该操作正在调用&#34; signup.php&#34; :

    <?php
 $con=new mysqli ("localhost","root","","chroniclemark");
    mysqli_set_charset($con, 'utf8mb4');
    if($con->connect_error)
    {
        echo $con->connect_errno;
        die("Database Connection Failed");
    }
    if(($_POST['primeiro_nome']) != ""){

    $sql = "INSERT INTO users (nome, sobrenome, email) 
             VALUES('{$con->real_escape_string($_POST['primeiro_nome'])}', '{$con->real_escape_string($_POST['segundo_nome'])}', '{$con->real_escape_string($_POST['o_email'])}')";
        $insert = $con->query($sql);

}
?>

这是有效的。表单中的数据将插入到我的数据库中。我遇到的问题是,在提交表单和&#34; signup.php&#34;页面打开而不是它。

我该如何解决这个问题?我非常希望有一个&#34;感谢您注册&#34;弹出同一页而不是切换到另一页。

4 个答案:

答案 0 :(得分:1)

您必须使用AJAX而不是直接提交表单
您将带有JS XMLHttpRequestFetch_API的POST请求发送到For n As Int32 = 0 To TextBox1.text - 1,获取回复并显示&#34;感谢您注册&#34;弹出

答案 1 :(得分:1)

主要有两种方法可以做到这一点。 1.您可以使用Jquery $ .ajax方法发送数据,获取响应并显示您的消息。 或者你可以简单地让自己的php页面进行处理。添加提交按钮。

<form action="signup.php" method="post" class="cd-form">更改为

<form action="" method="post" class="cd-form">

在表格后面添加以下内容。

<?php
if (isset($_POST["submit"]){
  //do your processing here
  //at the end of processing you can use echo or HTML to display a thank you message
}
?>

答案 2 :(得分:1)

您可以使用AJAX将数据保存到数据库,并在同一页面中向用户显示消息。单击按钮,请求将发送到服务器,数据将保存到数据库中,成功或失败时会返回响应,然后向用户显示消息。

<强>表格

首先将id输入到表单中的输入类型并添加消息div。

<form  method="post" class="cd-form">
            <p class="fieldset">
              <input class="full-width has-padding has-border" type="text" required maxlength="15" placeholder="First Name" id="primeiro_nome" />         
          </p>
            <p class="fieldset">
              <input class="full-width has-padding has-border"  type="text" required  maxlength="15" placeholder="Last Name" id="segundo_nome">
            </p>
            <p class="fieldset">
              <input class="full-width has-padding has-border"  type="email" required maxlength="50"  placeholder="E-mail" id="o_email">
            </p>
            <p class="fieldset">
                <input class="full-width" id='saverecords' type="button" value="Sign Up!">
            </p>        

用于向服务器发送AJAX请求的jQuery代码

添加脚本标记包括jQuery和内部点击事件获取字段的值,然后发布到php页面:

<script src=”http://code.jquery.com/jquery-3.1.1.min.js”></script>

<script type=”text/javascript”> 

$(function(){ 

    $("#saverecords").on('click', function(){ 

        var pnome  = $("#primeiro_nome").val();

        var sname  = $("#segundo_nome").val();

        var email  = $("#o_email").val();

        $.ajax({ 

          method: "POST",
          url: "saverecords.php",

          data: {"pname": pname, "sname": sname, "email": email},

         }).done(function( data ) { 
            var result = $.parseJSON(data); 

            var str = '';

            if(result == 1) {

              str = 'Signup successfull.';

            }else{
              str = 'Data could not be saved. Please try again'; 
            }

          $("#message").html(str);

      });

   }); 

</script> 

php服务器端代码:

请根据您的要求进行更改

创建一个php页面:saverecords.php  在saverecords.php中,您可以将数据插入数据库。

$conn = new mysqli($host, $username, $password, $dbname);
$pname  = $_POST['pname'];

$sname  = $_POST['sname'];

$email  = $_POST['email'];
$sql    = "insert into tablename (pname, sname, email) values (?, ?, ?)  ";

$stmt   = $conn->prepare($sql);

$stmt->bind_param('sss', $pname, $sname, $email);

  if($stmt->execute()){

     $result = 1;

  }

}

echo $result;

$conn->close();

如果您仍然遇到问题,请访问此链接,您可以找到有关如何使用jQuery Ajax与php mysqli

的详细教程

答案 3 :(得分:0)

您可以在iframe中设置操作页面,以便您的表单页面保持在最顶层

就像那样:

<form action="signup.php" method="post" class="cd-form" target="my_iframe">
            <p class="fieldset">
              <input class="full-width has-padding has-border" type="text" required maxlength="15" placeholder="First Name" name="primeiro_nome" />         
          </p>
            <p class="fieldset">
              <input class="full-width has-padding has-border"  type="text" required  maxlength="15" placeholder="Last Name" name="segundo_nome">
            </p>
            <p class="fieldset">
              <input class="full-width has-padding has-border"  type="email" required maxlength="50"  placeholder="E-mail" name="o_email">
            </p>
            <p class="fieldset">
                <input class="full-width" type="submit" value="Sign Up!">
            </p>        
        </form>


        <iframe id="my_iframe" name="my_iframe" style="display:none"></iframe>

您还可以使用jquery:

将表单数据发送到PHP页面
$(document).on('submit','.cd-form',function(e){
e.preventDefault();
$.ajax( {
url: "signup.php",
type: 'POST',
data: new FormData( this ),
cache: false,
dataType: "json",
success: function(r){
alert("data sent successfully");
}
} );
} );