2016-06-08 52 views
0

我有一個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)); 
} 
} 
?> 
+1

[小博]( http://bobby-tables.com/)說[你的腳本存在SQL注入攻擊風險。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in -php)瞭解[MySQLi]的[prepared](http://en.wikipedia.org/wiki/Prepared_statement)語句(http://php.net/manual/en/mysqli.quickstart.prepared-statements.php )。即使[轉義字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! –

+1

'mysqli_connect()'需要4個參數,而不是3. –

+1

如果你想留在同一頁面,你需要AJAX從PHP返回成功消息。 –

回答

0
如果

首先檢查您的插入實際分配結果給一個變量,即發生:

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

現在,在表單下面,您可以添加以下php代碼,並且您可以在if語句中使用此變量來回顯差異erent事情: <form action="register.php" method="post" accept-charset="utf-8"> (其中註冊:

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處理表單和腳本是在同一頁上,所以你還需要修改您的形式是這樣,這可能只是工作。 PHP矗立在你的文件的名稱) 和這樣的提交按鈕:在你的頁面的頂部

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

然後,已設置的參數,你把下面的語句連接後:

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

你可以把所有的表單驗證放在這裏。會發生什麼是您第一次訪問該文件時,將通過GET進行訪問,因此在您提交表單之後,您將訪問同一個文件,但是通過POST進行驗證,因此不會發生任何事情。

+0

對不起,但我不明白我必須分配變量的第一部分? 我是新的PHP e和MySql,所以要耐心=) 順便說一下,表單正在工作,但我只需要改進謝謝信息,一旦提交,我想留在同一頁面。 –

0

提交表單,並保持在同一頁上有兩個possibilites:
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或GET)或表單提交後,因此您希望顯示的消息的位置您將以下if語句:

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厄爾曼瞭解到這種方法,你可以找到例子腳本免費 here