2012-07-09 65 views
0

我和一個朋友正試圖爲我們的網站做一個評論系統,我們有一點點代碼插入到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(); 
?> 

感謝提前任何幫助!

+1

你的代碼有很多錯誤。您不得將您的JavaScript文件用作表單操作。你也不能使用重複的'ids' - >'emailerror'。對於你的Ajax請求,我會建議你使用jQuery。而且你不會在你的變量日期填充你的mySQL查詢。 – 2012-07-09 14:17:22

+1

你給了一堆代碼,並且你說「此刻數據沒有正確發送到表」。我認爲更準確地呈現實際發生的事情將使人們更有可能(並願意)幫助你。例如,現在沒有任何東西進入數據庫?你有任何錯誤消息?如果插入了什麼東西,它怎麼錯了? – Thor84no 2012-07-09 14:17:29

+0

jQuery AJAX簡化了JavaScript部分;請參閱http://api.jquery.com/jQuery.ajax/ – Don 2012-07-09 14:18:28

回答

-1

所以這可能是我,但我建議你在添加或上傳評論時不要使用任何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(); 

?> 

我希望有所幫助!與網站的其他部分祝你好運!

+1

感謝您的幫助!這使事情變得更容易。其餘的網站已經完成了)這是我們添加的最後一件事 – simonthumper 2012-07-09 16:29:22

1

此刻,你永遠不會插入你想要的值到你的查詢中。這行代碼:

$query="INSERT INTO Comments VALUES (1, email, username, content)"; 

在某些時候,它需要得到你以前收集的變量,就像這樣:

$query = "INSERT INTO Comments VALUES (1, %s, %s, %s)"; 
$query = sprintf($query, $email, $username, $content); 
0

你在PHP的$查詢whrong。你需要將變量插入它。此外,如果第一

$query = "INSERT INTO Comments VALUES (1, '" . $email ."', 
'" . $username . "', '". $content . "')"; 

也不要忘記,如果你插入一個字符串轉換爲SQL你需要添加'圍繞價值,就像我在我的例子一樣。

-1

您是否嘗試運行「localhost/commentUpload.php」?你需要看到一些錯誤。如果是這樣,你應該修復你的SQL代碼。作爲第一個答覆說。你應該使用auto_increment作爲id。