시스템에 의견이 있습니다. 각 의견은 답장을받을 수 있으며 각 답장은 답장을받을 수 있습니다. while 중첩 된 루프
는 따라서, 내 데이터베이스는 다음과 같은 중요한 분야로 "의견"라는 이름의 테이블이 포함 이id
text
reply_to
... REPLY_TO에서, 물론, 주석의 ID를 간다가 응답되는.
이제 문제는 간단합니다. 모든 의견을 표시하는 방법은 무엇입니까?하지만 각 의견이 답장을받은 후 각 답장이 답장을 보내야합니다.
$query = mysql_query("SELECT * FROM comments WHERE reply_to=0");
while ($comment = mysql_fetch_array($query))
include("comment.php");
그리고 comment.php에서
, 내가 무엇을 가지고 :foreach ($comment as $key = $value) $$key = $value;
echo $text;
echo "<div style='margin-left:30px;'>"; //A margin for a little indent
$subquery = mysql_query("SELECT * FROM comments WHERE reply_to=$id");
while ($comment = mysql_fetch_array($subquery))
include("comment.php");
echo "</div>";
그러나 경우
내가 가장 노력 무엇을하고, 무엇을 내가 다시오고 계속하면이 같은 것입니다 나는 내 코드의 본질을 올바르게 재현했다. 문제는 이것이다 : 첫 번째 응답이 에코 된 후 첫 번째 응답의 첫 번째 응답으로 이어지고 첫 번째 응답의 첫 번째 응답의 첫 번째 응답은 계속되지만 루프는 결코 두 번째 응답에 도달하지 않습니다. 나는 그것을 충분히 명확하게 설명했다 희망
Comment
First reply
First second-order reply
First third-order reply
...
: 그래서 예를 들면, 테이블을 상정하는 것은 위의 코드 출력 것, 3 개의 대답했다 각각 3 개의 댓글을했고, 그 각각은 등 3 개 응답을했다. inb4 : 테이블에 새 열을 추가 할 수 없습니다. 의사에서
당신은 함수에 코드를 포장하고, 그 재귀를 확인해야합니다. http://stackoverflow.com/questions/2648968/what-is-a-recursive-function-in-php – mario
다른 일이라면 잠에서 깨어 난 후 몇 시간 동안 코드에 대해 생각하지 마십시오. 당신이 하루 종일 당신의 머리를 두들겨 봤다면 ** 잠시 떨어져 나간다. ** –
루프에서 데이터베이스를 치는 것도 좋은 생각이 아니다. id는 1 개의 쿼리에서 모든 관련 주석을 얻은 다음 루프/재귀를 사용하여 표시합니다. –