Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как вывести комментарии для конкретной записи?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, форумчане. Делаю древовидные комментарии по примеру. Есть таблица 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; ?> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2014, 18:48 |
|
||
|
Как вывести комментарии для конкретной записи?
|
|||
|---|---|---|---|
|
#18+
1. Тег SRC для оформления кода на этом форуме пока еще не отменили. Кнопку предварительного просмотра - тоже. 2. PHP_beginnerвыдает ошибку функции foreach ()Текст ошибки является гостайной и разглашению не подлежит? 3. Откуда взялась переменная $id, которая используется в запросе? В коде она не определена вроде как (если только не появляется таинтсвенным для нас образом в файле bd.php). Рекомендую посмотреть текст запроса и сообщение об ошибке mysql_error() после его выполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2014, 22:33 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38644678&tid=1462786]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
7ms |
get forum data: |
3ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 346ms |

| 0 / 0 |
