PHP配列を使用して、MySQLデータベースに追加されたユーザー入力を収集しています。これはユーザー入力からの情報であるため、データベースのnum_rowsによって作成された変数を使用して、配列値の表示でforループが実行される回数を決定しています。forループには、配列の1つの値を表示するフォームと「いいね」ボタン(type = submit)が含まれ、すべての値が表示されるまで(新しいものから古いものへ)このフォームを繰り返し、「いいね」ボタンが続きます各。
ユーザーが「いいね」ボタンをクリックして、その投稿に「いいね」を追加できるようにしたいと思います。私が遭遇した問題は、私が持っているコードがすべての投稿に「いいね」を追加していることです(コードは「いいね」ボタンが押されたかどうかを確認し、「いいね」ボタンはforループの場合、すべての「いいね」ボタンは同じ名前です)。「いいね」ボタンに増分変数に基づいた名前を付けることでこれを修正しようとしましたが、名前が変数または配列の場合、ボタンは機能しないようです。
これが私のコードです:
<?php
error_reporting (E_ALL ^ E_NOTICE);
session_start();
$userid = $_SESSION['userid'];
$username = $_SESSION['username'];
$userside = $_SESSION['side'];
echo "<b>Organized posts:</br><hr /></b>";
require("./postconnect.php");
$query = mysql_query("SELECT * FROM original ORDER BY postid ASC");
$numrows = mysql_num_rows($query);
$numrows = $numrows-1;
$sql = "SELECT postername FROM original ORDER BY postid ASC"; // select only the postername field from the table "original"
$result = mysql_query($sql); // process the query
$name_array = array(); // start an array
while($row = mysql_fetch_array($result)){ // cycle through each record returned
$name_array[] = "".$row['postername'].""; // get the postername field and add to the array above
}
$sql = "SELECT post FROM original ORDER BY postid ASC"; // select only the post field from the table "original"
$result = mysql_query($sql); // process the query
$post_array = array(); // start an array
while($row = mysql_fetch_array($result)){ // cycle through each record returned
$post_array[] = "".$row['post'].""; // get the post field and add to the array above
}
$sql = "SELECT posterside FROM original ORDER BY postid ASC"; // select only the posterside field from the table "original"
$result = mysql_query($sql); // process the query
$side_array = array(); // start an array
while($row = mysql_fetch_array($result)){ // cycle through each record returned
$side_array[] = "".$row['posterside'].""; // get the posterside field and add to the array above
}
$sql = "SELECT likes FROM original ORDER BY postid ASC"; // select only the likes field from the table "original"
$result = mysql_query($sql); // process the query
$likes_array = array(); // start an array
while($row = mysql_fetch_array($result)){ // cycle through each record returned
$likes_array[] = "".$row['likes'].""; // get the likes field and add to the array above
}
$i=$numrows;
for($i;$i>=0;$i--) {
if ($side_array[$i]==1) {
$color="red";
}
elseif ($side_array[$i]==2) {
$color="blue";
}
elseif ($side_array[$i]==3) {
$color="green";
}
echo "<form action='./memberhag.php' method='post'>
<table>
<tr>
<td><font color='$color'>$name_array[$i]</font> - $post_array[$i]</td>
</tr>
<tr>
<td><input type='submit' name='likebtn' value='Like' /> <font color=$color>$name_array[$i]</font> has $likes_array[$i] likes!</td>
</tr>
</table>
</form>";
if ($_POST['likebtn']) {
$numlikes = $likes_array[$i];
$numlikes = $numlikes + 1;
mysql_query("UPDATE original SET likes = '$numlikes' WHERE postername = '$name_array[$i]'");
}
}
?>
これは私をかなり長い間困惑させました...私はforループの代わりにwhileループを使用しようとさえしました。