Создание собственной доски объявлений и отображение сообщений с помощью php? - PullRequest
0 голосов
/ 20 ноября 2011

Прежде всего, проверьте этот пример того, как я хочу, чтобы он выглядел,

ВХОД

E-mail: aa@aa.aa
Пароль: aaaaaa

И перейдите на эту страницу http://www.nomomon.com/forums.php?email=aa@aa.aa&v=21828

Вы видите ответы, как они отступают друг от друга, вот как я хочу, чтобы это выглядело, и теперь мои усилия;

Во-первых, у меня все настроено и работает доска объявлений, просто не отображается должным образом ответы, каждое сообщение имеет идентификатор родительского сообщения и т. Д.

Вот моя попытка, которая работает для первого ответа, но делаетне повторять, как в данном примере для каждого ответа на сообщение с правильным parentID?

while ($post = $q -> fetch(PDO::FETCH_ASSOC)) {
    echo '<p class="spacerTop"><a href="http://www.example.com/boards?topic=' . $_GET['topic'] . '&amp;view=' . $post['postID'] . '">' . $post['subject'] . '</a> - <a href="http://www.example.com/viewaccount?id=' . $post['posterID'] . '">' . $post['username'] . '</a></p>';
    $q = $dbc -> prepare("SELECT boardposts.*, accounts.username FROM boardposts INNER JOIN accounts WHERE boardposts.posterID = accounts.id AND boardposts.parentID = ?");
    $q -> execute(array($post['postID']));
    while ($post2 = $q -> fetch(PDO::FETCH_ASSOC)) {
          echo '<p class="spacerTop" style="margin: 0 0 0 20px;"><a href="http://www.example.com/boards?topic=' . $_GET['topic'] . '&amp;view=' . $post2['postID'] . '">' . $post2['subject'] . '</a> - <a href="http://www.example.com/viewaccount?id=' . $post2['posterID'] . '">' . $post2['username'] . '</a></p>';
          $q = $dbc -> prepare("SELECT boardposts.*, accounts.username FROM boardposts INNER JOIN accounts WHERE boardposts.posterID = accounts.id AND boardposts.parentID = ?");
          $q -> execute(array($post2['postID']));
          while ($post3 = $q -> fetch(PDO::FETCH_ASSOC)) {
                echo '<p class="spacerTop" style="margin: 0 0 0 40px;"><a href="http://www.example.com/boards?topic=' . $_GET['topic'] . '&amp;view=' . $post3['postID'] . '">' . $post3['subject'] . '</a> - <a href="http://www.example.com/viewaccount?id=' . $post3['posterID'] . '">' . $post3['username'] . '</a></p>';
          }
    }
}

Моей первой мыслью было отобразить каждое сообщение с родительским идентификатором, затем еще один цикл while для этих ответов и, наконец, еще один цикл while,но он работает не так, как я хочу, поскольку показывает только ответы на первый ответ.

1 Ответ

0 голосов
/ 20 ноября 2011

Ну, во-первых, вам в конечном итоге придется переосмыслить эту функцию (если только вы не хотите отображать не более 3 ответов). Будет заманчиво сделать это рекурсивно (потому что рекурсия поддается этому типу проблемы), но есть способ сделать это без рекурсии, которая работает так же хорошо. В любом случае, теперь это не так, почему не работает правильно. Ваш код кажется надежным, но вы уверены, что запрос SQL возвращает правильные результаты? Вы пробовали это без PHP, просто выполнив запрос и увидев, что вы получите? Не совсем уверен, требуется ли это ВНУТРЕННЕЕ СОЕДИНЕНИЕ.

SELECT `postID`, `topic`, `subject`, `posterID`,`username`, `id`
FROM `boardposts`, `account`
WHERE `boardposts`.`posterID` = `accounts`.`id` AND `boardposts`.`parentID` = ?

Не могу вспомнить, но вам, возможно, придется использовать и имена таблиц в предложении select (как вы делаете сейчас), хотя я чувствую, что они могут быть необязательными. В любом случае, убедитесь, что ваш запрос сначала возвращает правильные результаты.

...