2012-07-02 53 views
0

添加到MySQL数据库我有以下的HTML表单:显示弹出消息一直使用HTML表单

<html> 
<body> 
<form action="insert.php" method="post"> 
Firstname: <input type="text" name="firstname" /> 
Lastname: <input type="text" name="lastname" /> 
Age: <input type="text" name="age" /> 
<input type="submit" /> 
</form> 
</body> 
</html> 

这是PHP文件:

<?php 
$con = mysql_connect("localhost","peter","abc123"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("my_db", $con); 

$sql="INSERT INTO Persons (FirstName, LastName, Age) 
VALUES 
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')"; 

if (!mysql_query($sql,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    } 
echo "1 record added"; 

mysql_close($con); 
?> 

如何获得在提交记录后显示2秒钟的弹出消息,该记录例如说“添加记录”

+2

正如PHP手册['mysql_query()'](http: //php.net/manual/en/function.mysql-query.php)函数:*不推荐使用这个扩展名。相反,[MySQLi](http://www.php.net/manual/en/book.mysqli.php)或[PDO_MySQL](http://www.php.net/manual/en/ref.pdo-应该使用mysql.php)扩展名。另请参见[MySQL:选择API](http://www.php.net/manual/en/mysqlinfo.api.choosing.php)指南和[相关FAQ](http://www.php.net/manual /en/faq.databases.php#faq.databases.mysql.deprecated)* – eggyal

+1

**您的代码容易受到SQL注入攻击**您真的应该使用[prepared statements](http:/ /stackoverflow.com/a/60496/623041),将您的变量作为参数传递给其中,而这些参数不针对SQL进行评估。如果你不知道我在说什么,或者如何解决它,请阅读[Bobby Tables]的故事(http://stackoverflow.com/questions/332365/xkcd-sql-injection-please-explain) 。 – eggyal

+0

是@eggyal感谢您指出这一点,这实际上是一个示例代码,我实际上在寻找的是如何在提交记录后得到弹出消息 – dames

回答

1

请尝试以下操作。你也可以加强它。

在你的表单页面用PHP添加CSS的弹出

//adduser.php 
#popup { 
    visibility: hidden; 
    background-color: red; 
    position: absolute; 
    top: 10px; 
    z-index: 100; 
    height: 100px; 
    width: 300px 
} 

和您的弹出DIV

//still adduser.php 
<div id="popup"> 
    Record added successfully 
</div> 

输出这一成功

//still adduser.php - probably at the bottom of the page 
<?php 
    $recordAdded = false; 

    if(isset($_GET['status'] && $_GET['status'] == 1) 
     $recordAdded = true; 

    if($recordAdded) 
    { 
    echo ' 
     <script type="text/javascript"> 
     function hideMsg() 
     { 
      document.getElementById("popup").style.visibility = "hidden"; 
     } 

     document.getElementById("popup").style.visibility = "visible"; 
     window.setTimeout("hideMsg()", 2000); 
     </script>'; 
    } 
?> 

后脚本取消隐藏弹出式视窗显示消息,然后在2秒后隐藏它

可以加强与jQuery的动画,并用CSS股利

UPDATE:

这是假设你会改变你的.html包含表单文件.php

//insert.php 
if (!mysql_query($sql,$con)) 
{ 
    //die('Error: ' . mysql_error()); 
} 
else 
{ 
    // 1 record added 
    //if number of rows affected > 0 
    header("Location: backtoform.php?status=1"); //redirects back to form with status=1 
} 

也可以尝试在评论中提到的建议的jQuery/Ajax方法

+0

谢谢@tcoder,但我会把div放在html文件中?以及我将脚本放在PHP文件中的位置?我是一个新手,所以你的帮助是非常感谢 – dames

+0

这将是你想要显示你的通知。由于您使用的是html页面,这使得这个答案无效,所以我认为Ajax就是这种情况。如果它是一个php页面,重定向到这个页面(包含表单的地方),成功/失败状态就是我所做的。您现在可以使用状态显示通知。 AJAX更好 – codingbiz

+0

那么在什么情况下,我会应用您给出的第一个答案 – dames

1

您正在寻找的与PHP无关,因为它是客户端...

有2种方法可以做到这一点:

  • 后提交渲染弹出和×时间与JavaScript之后将其删除...
  • 提交与AJAX(JavaScript)的形式,并解析结果,并在javascript中添加弹出窗口。
+0

好的,谢谢你知道我该如何做到这一点? – dames