Как запросить таблицу COMMENTS для каждой строки, затем запросить REPLIES TABLE и добавить каждый результат в COMMENTS до JSON echo? - PullRequest
1 голос
/ 17 марта 2020

Предполагается, что данные являются динамическими c и загружены с запросом AJAX. У меня есть комментарии, которые запрашиваются чуть ниже. Это работает без проблем. Проблема, с которой я сталкиваюсь здесь, пытается запросить таблицу ответов, соответствующую каждому комментарию. Я подумал о том, чтобы попытаться поместить запрос внутрь div, чтобы при каждом запросе COMMENT он запрашивал REPLIES для всех своих результатов, а затем автоматически добавлял их для эха JSON. Но я получил ошибку. Я озадачен на данный момент, чтобы объединить их таким образом, чтобы получить надлежащую иерархию комментариев / ответов. Есть ли способ получить запрос внутри div? Или я иду по этому поводу совершенно неправильно? Любая помощь будет высоко ценится, застрял на этом в течение нескольких часов. Для простоты я удалил большую часть данных, которые есть в div.

КОММЕНТАРИИ QUERY

    $sql="SELECT c.cid, DATE_FORMAT(c.posttime, '%a, %b %D | %l:%i %p'), c.comment,
    p.profilepic,
    u.fname, u.lname
    from taskcomments c
    inner join users u on u.uid = c.uid
    inner join profile p on c.uid = p.uid
    where c.pid = ?";
$stmt3 = $conn->prepare($sql);
$stmt3->bind_param("i", $_POST['cpid']);
$stmt3->execute();
$stmt3->bind_result($cid,$posttime,$comment,$profilepic,$fname,$lname);
$comments = ''; 
while($stmt3->fetch()){ 
$comments .= '<div class="comment-block" id="'.$cid.'">
                    <div class="comment-all-container">
                        <div class="commenter-info-content">                                  
                        </div>
                    </div>
                     //need each additional query to be appended here before echo
                </div>';
$output=array(
        'comments' => $comments
    );

}
$json=json_encode($output);
echo $json;

ОТВЕТЫ НА ЗАПРОС + div, которые необходимо добавить

$sql="SELECT r.rid, DATE_FORMAT(r.replydate, '%a, %b %D | %l:%i %p'), r.reply,
    p.profilepic,
    u.fname, u.lname
    from taskcommentreplies r
    inner join users u on u.uid = r.uid
    inner join profile p on r.uid = p.uid
    where r.cid = ?";
$stmt4 = $conn->prepare($sql);
$stmt4->bind_param("i", $cid);
$stmt4->execute();
$stmt4->bind_result($rid,$replydate,$reply,$profilepic,$fname,$lname);
$replies = ''; 
while($stmt4->fetch()){

$replies .= '<div class="reply-block" id="'.$rid.'">
                   <div class="commenter-picture">
                       <img class="commenter-photo" src="/'.$profilepic.'">
                    </div>
                    <div class="commenter-info-content">
                    </div>
                </div>';
}

1 Ответ

1 голос
/ 19 марта 2020

Здесь вы go:
Вы должны поместить запрос ответов в запрос комментариев, чтобы для каждого запроса комментариев он запрашивал каждый ответ. Вы должны $stmt->store_result(); запрос комментария, чтобы его можно было использовать в окончательных результатах вывода.
Затем вы должны использовать $comments .= '' с комментариями HTML внутри '', чтобы добавить результат comment-block к оригиналу $comments = '';. УДАЛИТЕ последнее закрытие </div> из блока комментариев, мы будем использовать это позже. После while ($stmt2->fetch()) l oop вы должны снова использовать $comments .= '' с reply-block HTML внутри, чтобы каждый l oop был добавлен к comment-block. Наконец, за пределами ответов l oop вы должны использовать $comments .= '</div>', который закрывает блок и запечатывает блок комментариев с его ответами внутри него.

image
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...