制作一个网站评论系统
我和一个朋友正试图为我们的网站做一个评论系统,我们有一点点代码插入到MySQL数据库的值,然后被读取和显示为评论,但是目前数据没有正确发送到表格。我们对ajax,php和mysql都很新,所以它可能只是一个愚蠢的错误! :P制作一个网站评论系统
的HTML:
<form id="postComment" action="Comments.js" method="post">
<input type="email" name="email" onchange="checkEmail();" id="email" /> </br>
<div id ="emailerror">
<p id="emailerror"> </p>
</div> </br>
<input type="text" name="username" id="username" /> </br>
<input type="text" name="content" id="content" /> </br>
<input type="button" value="submit" onclick="commentUpload();" />
</form>
JavaScript文件:
function commentUpload() //uploads comment to sQl table
{
var email = document.getElementById("email").value //gets the user's email
var username = document.getElementById("username").value //gets the user's username
var content = document.getElementById("content").value //gets the comment content
// var articleName = document.getElementById("articleName") gets the article name
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","commentUpload.php?email=" + email + "&username=" +username + "&content="+content,true);
xmlhttp.send();
}
而且PHP:
<?php
$email=mysql_real_escape_string($_GET['email']);
$username=mysql_real_escape_string($_GET['username']);
$content=mysql_real_escape_string($_GET['content']);
$query="INSERT INTO Comments
VALUES (1, email, username, content)";
mysql_query($query);
mysql_close();
?>
感谢提前任何帮助!
所以这可能是我,但我建议你在添加或上传评论时不要使用任何javascript; ajax可以提供一些非常强大的代码,但是在从客户端的数据库查询时使用它可能会更好,而不是在服务器端插入数据库!
您的HTML代码应直接跳转到PHP,而不是像之前编程的那样通过AJAX进行转换。而不是使用一些javascript来改变$ _POST和$ _GET,你可以简单地改变HTML中的方法。
<form id="postComment" action="comments.php" method="get">
接下来,您必须确保包含到数据库的连接。 w3Schools has a nice tutorial on establishing connections。同时,您还必须确保使用句点将从$ _GET获得的参数连接到查询字符串中。
<?php
$email =mysql_real_escape_string($_GET['email']);
$username = mysql_real_escape_string($_GET['username']);
$content = mysql_real_escape_string($_GET['content']);
$connect = mysql_connect("server","name","password");
if (!$con) {die('Unable to connect..!!';}
mysql_select_db("database", $connect);
$query = "insert into Comments values (1,'" . $email
."', '" . $username . "', '". $content . "')";
mysql_query($query);
mysql_close();
?>
我希望有所帮助!与网站的其他部分祝你好运!
感谢您的帮助!这使事情变得更容易。其余的网站已经完成了)这是我们添加的最后一件事 – simonthumper 2012-07-09 16:29:22
此刻,你永远不会插入你想要的值到你的查询中。这行代码:
$query="INSERT INTO Comments VALUES (1, email, username, content)";
在某些时候,它需要得到你以前收集的变量,就像这样:
$query = "INSERT INTO Comments VALUES (1, %s, %s, %s)";
$query = sprintf($query, $email, $username, $content);
你在PHP的$查询whrong。你需要将变量插入它。此外,如果第一
$query = "INSERT INTO Comments VALUES (1, '" . $email ."',
'" . $username . "', '". $content . "')";
也不要忘记,如果你插入一个字符串转换为SQL你需要添加'围绕价值,就像我在我的例子一样。
您是否尝试运行“localhost/commentUpload.php”?你需要看到一些错误。如果是这样,你应该修复你的SQL代码。作为第一个答复说。你应该使用auto_increment作为id。
你的代码有很多错误。您不得将您的JavaScript文件用作表单操作。你也不能使用重复的'ids' - >'emailerror'。对于你的Ajax请求,我会建议你使用jQuery。而且你不会在你的变量日期填充你的mySQL查询。 – 2012-07-09 14:17:22
你给了一堆代码,并且你说“此刻数据没有正确发送到表”。我认为更准确地呈现实际发生的事情将使人们更有可能(并愿意)帮助你。例如,现在没有任何东西进入数据库?你有任何错误消息?如果插入了什么东西,它怎么错了? – Thor84no 2012-07-09 14:17:29
jQuery AJAX简化了JavaScript部分;请参阅http://api.jquery.com/jQuery.ajax/ – Don 2012-07-09 14:18:28