完成表格后感谢您留言

时间:2016-06-08 18:38:44

标签: php html5

我有一个Bootstrap表单,在完成表单后我想保留在同一页面中,并在提交按钮下面显示一条感谢信息。

这是我的HTML代码

<div id="form">
<div class="row">
<div class="col-md-12"><h3>RESTA IN CONTATTO</h3>
<form id="form_members" role="form" data-toggle="validator" novalidate action="form-data.php" method="POST">
<div class="form-group">
<label for="firstname" class="control-label">Nome</label>
<input type="text" class="form-control" name="firstname" id="name" placeholder="Inserisci il Nome" required>
</div>
<div class="form-group">
<label for="lastname" class="control-label">Cognome</label>
<input type="text" class="form-control" name="lastname" id="lastname" placeholder="Inserisci il Cognome" required>
</div>
<div class="form-group">
<label for="email" class="control-label">Email</label>
<input type="email" class="form-control" name="email" id="email" placeholder="Enter the Email" data-error="Inserire email valida" required>
<div class="help-block with-errors"></div>
</div>
<div class="form-group">
<div class="checkbox">
<label>
<input type="checkbox" id="terms" required data-error="Devi essere d'accordo con i termini di condizione d'uso">Privacy
</label>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary" name="submit" id="submit" onclick="this.form.clear()" value="submitmessage">Registrati</button>
</div>
</form>
<div id="submitmessage"></div>

和我的PHP代码

<?php
$link = mysqli_connect("","","")  or die("failed to connect to server !!");
mysqli_select_db($link,"");
if(isset($_POST['submit']))
{
$errorMessage = "";
$firstname=$_POST['firstname'];
$lastname=$_POST['lastname'];
$email=$_POST['email'];

// Validation will be added here

if ($errorMessage != "" ) {
echo "<p class='message'>" .$errorMessage. "</p>" ;
}



else{
//Inserting record in table using INSERT query
$insqDbtb="INSERT INTO `test`.`members`
(`firstname`, `lastname`, `email`) VALUES ('$firstname', '$lastname', '$email')";
mysqli_query($link,$insqDbtb) or die(mysqli_error($link));
}
}
?>

2 个答案:

答案 0 :(得分:0)

首先通过将结果分配给变量来检查插入是否实际发生,即:

$res=mysqli_query($link,$insqDbtb);

现在,在你的表单下面你可以添加以下php代码,你可以在if语句中使用这个变量来回应不同的东西:

if($_POST && $res)
{/*this code is executed if form is submitted and insert worked*/
 echo ' <div class="alert alert-success" role="alert">
            Grazie per esserti registrato!
        </div>';
}
elseif ($_POST && !$res)
{ /*you can write a different message if insert did not happen*/
echo '<div class="alert alert-danger" role="alert">
           <strong>Oh no!</strong> Provaci ancora
     </div>';

 }

请注意,这可能仅在您使用php处理表单并且脚本位于同一页面上时才有效,因此您还需要修改表单,如下所示: <form action="register.php" method="post" accept-charset="utf-8"> (其中register.php代表你文件的名称) 和提交按钮如下:

<input type="submit" name="submit" value="Submit" id="submit_button" class="btn btn-primary" />

然后在页面顶部,在为连接设置参数后,您输入以下语句:

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 

您可以在此处进行所有表单验证。会发生什么情况是第一次进入文件时它将通过GET进行,所以没有任何反应,在您提交表单后,您访问相同的文件但使用POST,以便提交验证。

答案 1 :(得分:0)

要提交表格并保持同一页面,您有两个可能性:
A)正如其他人建议您使用Ajax的那样 B)对用户具有相同可见结果的另一种可能性是,当您提交表单时,您将返回同一页面,因此用户将看到相同的页面,但根据他已提交的天气将显示不同的内容形式与否 要实现第二种解决方案,您可以执行以下操作:
1)在你的头脑中你建立了连接(你有的PHP是可以改进的,但作为第一次尝试应该做的工作)
2)在您的页面中,您将表单添加以下修改:

<form action="FILNAME.php" method="post" accept-charset="utf-8">

<input type="submit" name="submit" value="Submit" id="submit" class="btn btn-default" />

当用户点击按钮时,表单会被提交到同一页面。

3)现在您需要检查您的页面是否第一次被访问(即获取GET)或者在提交表单之后,所以在您希望显示消息的位置时,请输入以下if语句:< BR />

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 
}

3)在这个括号中,你把所有的php都用来验证表格,并在验证你的插入命令后

$insqDbtb="INSERT INTO `test`.`members`(`firstname`, `lastname`, `email`) VALUES ('$firstname', '$lastname', '$email')";
$res = mysqli_query($link, $insqDbtb); 

4)如果查询创建了一个新行,您可以写下感谢信息:

if (mysqli_affected_rows($link) === 1) {echo '<div class="alert alert-success"><h3>Thanks!</h3><p>Thank you for registering! </p></div>';

如果不是,您可以写一个警报而不是

我从Larry Ullman的一本书中学到了这个方法,你可以免费找到带有例子的脚本 here