Я создаю простой сайт с PHP, где пользователи могут отправлять блоги и другие пользователи (которые вошли в систему) могут оставлять комментарии к ним. После каждого блога я сделал ссылку под названием «комментарии», которая при нажатии будет показывать/скрывать все комментарии, относящиеся к конкретному блогу (также если пользователь вошел в систему, он отобразит поле формы, в котором они могут отправлять новые комментарии) , Поэтому в основном каждый блог будет иметь несколько комментариев. Для этого я сделал два разных кода, но у них одинаковая проблема: каждый комментарий появляется дважды (все остальное работает нормально). Может ли кто-нибудь указать, почему?Результаты цикла, выполняющиеся дважды
mysql_select_db ("ooze");
$result = mysql_query ("select * from blog") or die(mysql_error());
$i = 1;
while($row = mysql_fetch_array($result))
{
echo "<h1>$row[title]</h1>";
echo "<p class ='second'>$row[blog_content]</p> ";
echo "<p class='meta'>Posted by .... • $row[date] • <a href='#' onclick=\"toggle_visibility('something$i'); return false\">Comments</a><div id='something$i' style='display: none;'>";
$i++;
$a = $row["ID"];
$result2 = mysql_query ("select * from blog, blogcomment where $a=blogID") or die(mysql_error());
while($sub = mysql_fetch_array($result2))
{
echo "<p class='third' >$sub[commentdate] • $sub[username]</p><p>said:</p> <p>$sub[comment]</p>";
}
if (isset ($_SESSION["gatekeeper"]))
{
echo '<form method="post" name="result_'.$row["ID"].'" action="postcomment.php"><input name="ID" type = "hidden" value = "'.$row["ID"].'" /><input name="comment" id="comment" type="text" style="margin-left:20px;"/><input type="submit" value="Add comment" /></form>';
}
else
{
echo '<p class="third"><a href="register.html">Signup </a>to post a comment</p>';
}
echo "</div>";
}
mysql_close($conn);
// вторая версия внутреннего цикла: //
if (isset ($_SESSION["gatekeeper"]))
{
while($sub = mysql_fetch_array($result2))
{
echo "<p class='third' >$sub[commentdate] • $sub[username] said:</p> <p>$sub[comment]</p>";
}
echo '<form method="post" name="result_'.$row["ID"].'" action="postcomment.php"><input name="ID" type = "hidden" value = "'.$row["ID"].'" /><input name="comment" id="comment" type="text" style="margin-left:20px;"/><input type="submit" value="Add comment" /></form>';
}
else
{
while($sub = mysql_fetch_array($result2))
{
echo "<p class='third' >$sub[commentdate] • $sub[username] said:</p> <p>$sub[comment]</p>";
}
echo '<p class="third"><a href="register.html">Signup </a>to post a comment</p>';
}
echo "</div>";
}
mysql_close($conn);
Проверьте свой второй запрос: 'select * from blog, blogcomment, где $ a = blogID' вы присоединяетесь к двум таблицам, но не указав отношения, которые приводят к' cross join' (http: //en.wikipedia .org/wiki/Join_ (SQL) #Cross_join) – Yaniro