powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как вывести комментарии для конкретной записи?
3 сообщений из 3, страница 1 из 1
Как вывести комментарии для конкретной записи?
    #38644564
PHP_beginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, форумчане.
Делаю древовидные комментарии по примеру.
Есть таблица comments с такими полями: id, parent_id, post, author, comment, date.
У меня выводит все комментарии подряд, а нужно, чтобы выводило комментарии, относящиеся к той или иной записи (post).
Пробовал прописать в запросе к БД так: " SELECT * FROM `comments` WHERE `post`='$id' " - выдает ошибку функции foreach ()
Помогите, пожалуйста.
Вот код:

<?php
require_once 'bd.php';

$sql = "
SELECT id, parent_id, post, author, comment,
DATE_FORMAT(date, '%d.%m.%Y %H:%i') as date
FROM `comments` WHERE `post`='$id'

";

$query = mysql_query($sql);

while($row = mysql_fetch_assoc($query))
{
$data[$row['id']] = $row;
}

function mapTree($dataset) {
$tree = array(); // Создаем новый массив
/*
Проходим в цикле по массиву $dataset, который был передан в качестве аргумента.
в $id будет попадать уникальный id комментария,
&$node - работаем со значением по ссылке!
*/
foreach ($dataset as $id =>&$node ) {
if (!$node['parent_id']) { // не имеет родителя
$tree[$id] = &$node;
} else {
/*
Иначе это чей-то потомок
этого потомка переносим в родительский элемент,
при этом у родителя внутри элемента создастся массив childs, в котором и будут вложены его потомки
*/
$dataset[$node['parent_id']]['childs'][$id] = &$node; //

}
}

return $tree;
}



function commentsToTemplate($comment)
{
/* $comment - массив комментария - имя, дата, коммент, потомки (если есть) */

/* Включаем буферизацию вывода, чтобы шаблон не вывелся в месте вызова функции.
*/
ob_start();

// Подключаем шаблон comment_template.php, который ждет массив $comment
include 'comment_template.php';

$comments_string = ob_get_contents(); // Получаем содержимое буфера в виде строки
ob_end_clean(); // очищаем буфер

return $comments_string;

}

function commentsString($data)
{
foreach($data as $w)
{
$string .= commentsToTemplate($w);
}

return $string;
}

$data = mapTree($data);
$comments = commentsString($data);
$data = null;

?>
...
Рейтинг: 0 / 0
Как вывести комментарии для конкретной записи?
    #38644678
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Тег SRC для оформления кода на этом форуме пока еще не отменили. Кнопку предварительного просмотра - тоже.

2. PHP_beginnerвыдает ошибку функции foreach ()Текст ошибки является гостайной и разглашению не подлежит?

3. Откуда взялась переменная $id, которая используется в запросе? В коде она не определена вроде как (если только не появляется таинтсвенным для нас образом в файле bd.php). Рекомендую посмотреть текст запроса и сообщение об ошибке mysql_error() после его выполнения.
...
Рейтинг: 0 / 0
Как вывести комментарии для конкретной записи?
    #38644711
PHP_beginner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде разобрался, спасибо.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как вывести комментарии для конкретной записи?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]