대댓글 5개 단 게시물을 array로 불러오려면?
본문
게시판 게시물에 댓글에 대댓글 5개를 달아서
사과-중급-상-소형-1-1000 이런식으로 글등록을 하려고 합니다.
등록한 게시물을 아래처럼 $fruit 변수에 array로 불러오게 하려면
어떻게해야 될까요?
게시판 이름은 test 입니다.
$fruit = array(
'사과' => array(
'중급' => array(
'상' => array(
'소형' => array(1 => "1000"),
'중형' => array(1 => "2000"),
'대형' => array(1 => "3000"),
),
'중' => array(
'소형' => array(1 => "1000"),
'중형' => array(1 => "2000"),
'대형' => array(1 => "3000"),
),
),
'고급' => array(
'상' => array(
'소형' => array(1 => "1000"),
'중형' => array(1 => "2000"),
'대형' => array(1 => "3000"),
),
'중' => array(
'소형' => array(1 => "1000"),
'중형' => array(1 => "2000"),
'대형' => array(1 => "3000"),
),
),
),
'복숭아' => array(
'중급' => array(
'상' => array(
'소형' => array(1 => "1000"),
'중형' => array(1 => "2000"),
'대형' => array(1 => "3000"),
),
'중' => array(
'소형' => array(1 => "1000"),
'중형' => array(1 => "2000"),
'대형' => array(1 => "3000"),
),
),
'고급' => array(
'상' => array(
'소형' => array(1 => "1000"),
'중형' => array(1 => "2000"),
'대형' => array(1 => "3000"),
),
'중' => array(
'소형' => array(1 => "1000"),
'중형' => array(1 => "2000"),
'대형' => array(1 => "3000"),
),
),
),
)
답변 1
$fruit = array();
// 메인 게시물 가져오기 (과일명 - 사과, 복숭아 등)
$sql_main = "SELECT * FROM {$g5['write_prefix']}test WHERE wr_is_comment = 0 ORDER BY wr_id ASC";
$result_main = sql_query($sql_main);
while ($row_main = sql_fetch_array($result_main)) {
$fruit_name = trim($row_main['wr_subject']); // 과일명(사과, 복숭아 등)
$fruit[$fruit_name] = array();
// 첫번째 댓글 레벨 가져오기 (중급, 고급 등)
$sql_level1 = "SELECT * FROM {$g5['write_prefix']}test WHERE wr_parent = {$row_main['wr_id']} AND wr_is_comment = 1 AND wr_comment_reply = '' ORDER BY wr_comment ASC";
$result_level1 = sql_query($sql_level1);
while ($row_level1 = sql_fetch_array($result_level1)) {
$level1_name = trim($row_level1['wr_content']); // 첫번째 레벨(중급, 고급 등)
$fruit[$fruit_name][$level1_name] = array();
// 두번째 댓글 레벨 가져오기 (상, 중 등)
$sql_level2 = "SELECT * FROM {$g5['write_prefix']}test WHERE wr_parent = {$row_main['wr_id']} AND wr_is_comment = 1 AND wr_comment = {$row_level1['wr_comment']} AND wr_comment_reply = 'A' ORDER BY wr_comment, wr_comment_reply ASC";
$result_level2 = sql_query($sql_level2);
while ($row_level2 = sql_fetch_array($result_level2)) {
$level2_name = trim($row_level2['wr_content']); // 두번째 레벨(상, 중 등)
$fruit[$fruit_name][$level1_name][$level2_name] = array();
// 세번째 댓글 레벨 가져오기 (소형, 중형, 대형 등)
$sql_level3 = "SELECT * FROM {$g5['write_prefix']}test WHERE wr_parent = {$row_main['wr_id']} AND wr_is_comment = 1 AND wr_comment = {$row_level1['wr_comment']} AND wr_comment_reply = 'AA' ORDER BY wr_comment, wr_comment_reply ASC";
$result_level3 = sql_query($sql_level3);
while ($row_level3 = sql_fetch_array($result_level3)) {
$level3_name = trim($row_level3['wr_content']); // 세번째 레벨(소형, 중형, 대형 등)
$fruit[$fruit_name][$level1_name][$level2_name][$level3_name] = array();
// 네번째 댓글 레벨 가져오기 (1)
$sql_level4 = "SELECT * FROM {$g5['write_prefix']}test WHERE wr_parent = {$row_main['wr_id']} AND wr_is_comment = 1 AND wr_comment = {$row_level1['wr_comment']} AND wr_comment_reply = 'AAA' ORDER BY wr_comment, wr_comment_reply ASC";
$result_level4 = sql_query($sql_level4);
while ($row_level4 = sql_fetch_array($result_level4)) {
$level4_key = trim($row_level4['wr_content']); // 네번째 레벨(1)
// 다섯번째 댓글 레벨 가져오기 (1000)
$sql_level5 = "SELECT * FROM {$g5['write_prefix']}test WHERE wr_parent = {$row_main['wr_id']} AND wr_is_comment = 1 AND wr_comment = {$row_level1['wr_comment']} AND wr_comment_reply = 'AAAA' ORDER BY wr_comment, wr_comment_reply ASC";
$result_level5 = sql_query($sql_level5);
if ($row_level5 = sql_fetch_array($result_level5)) {
$level5_value = trim($row_level5['wr_content']); // 다섯번째 레벨(1000)
$fruit[$fruit_name][$level1_name][$level2_name][$level3_name][$level4_key] = $level5_value;
}
}
}
}
}
}
print_r($fruit);