名前とコメントの 2 つのフィールドからなる単純なコメント システムを作成することに成功しました。ユーザーが値を挿入して送信を押すと、Ajax を使用して現在のページにコメントを追加するだけです (ページ全体をロードする必要はありません)。
ここで、 「コメントの削除」機能も追加する必要がありますが、それをどのように実装できるかわかりません。
以下のコードを見ると、ページをロードするときに既存のコメントをすべて出力し、新しいコメントを追加するときに、次のサブコードで HTML コードにコメントを追加しただけであることがわかります。
document.getElementById("result").innerHTML += "<font color='red' size='5'>" + str + "</font>";;
すべてのコメントの値を保持する配列を宣言し、それぞれに「アクティブ」な値を追加することを考えました。この値が true の場合、現在のコメントを出力します。それ以外の場合は出力しません。
私はそれを実装することに成功していません。その上、それはまったく良い解決策ですか? このソリューションは、ユーザーが送信を押すたびにすべてのコメントをもう一度出力するためです。
助言がありますか?
よろしくお願いします。
これは私のコードです:
main.php
<html>
<head>
<title> </title>
<script language="Javascript" src="ajax.js"> </script>
</head>
<body>
<h1 align="center"><font color="#000080">Welcome, </font></h1>
<p align="center"><font color="#000080">Enter your name & comment then press
"Submit Button"</font></p>
<form name="f1" method="post">
<p align="center"><font color="#000080">
Enter your name: <input type="text" name="username" id="username">
<font color="#000080">
Enter your comment: <input type="text" name="comment" id="comment">
<input value="Submit" type="button"
onclick='JavaScript:postRequest()' name="showdate"></font></p>
</form>
</br></br>
<?php
include_once("config.php");
$query = "SELECT * FROM `comments` ORDER BY 'id'";
//Execute query
$qry_result = mysql_query($query) or die(mysql_error());
// Insert a new row in the table for each person returned
while($row = mysql_fetch_array($qry_result)){
echo ' <p align="center">';
echo "<font color='red' size='5'> name: </br>".$row['added_by'];
echo " </br>comment: </br>".$row['comment'];
echo "</font></p>";}
?>
<div id="result" align="center"> </div>
</body>
</html>
名前: ' .$name; echo 'comment: ' .$content; エコー '' ?>showcomments.php
ajax.js
function postRequest() {
var xmlHttp;
try{
// Opera 8.0+, Firefox, Safari
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer Browsers
try{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
var usr=window.document.f1.username.value;
var cmnt=window.document.f1.comment.value;
var url = "showcomments.php?username=" + usr +"&comment=" + cmnt;
xmlHttp.open('GET', url, true);
xmlHttp.setRequestHeader
('Content-Type', 'application/x-www-form-urlencoded');
xmlHttp.onreadystatechange =function(){
if(xmlHttp.readyState == 4){
updatepage(xmlHttp.responseText);
}
}
xmlHttp.send(url);
}
function updatepage(str){
document.getElementById("result").innerHTML +=
"<font color='red' size='5'>" + str + "</font>";;
}
(PS: 「comments」という名前の MySql を使用して、Id、Added_by、comment という列を持つテーブルを作成しました。)