|
|
|
|
|
для: Aidaho
(15.11.2011 в 14:02)
| | Хм... а если еще один уровень вложения добавится? | |
|
|
|
|
|
|
|
для: cheops
(15.11.2011 в 13:43)
| | Спасибо :)
Сегодня утром подумав пришел примерно к такому же решению, только без рекурсивного вызова функции.
Если кому-то будет интересно то сделал так:
function commentShow($id) {
$q = "select * from comment where post_id = '".$id."' and parent = '0' order by Id desc";
$res = mysql_query($q) or die(mysql_error());
while($comment = mysql_fetch_array($res)) {
echo '<div class="comment-show">';
<span class="comment-user">'.$comment['user_name'].'</span>
$query = "select * from comment where parent = '".$comment['Id']."'";
$resul = mysql_query($query) or die(mysql_error());
while($commentAns = mysql_fetch_array($resul)) {
if($commentAns['legacy'] >= 1) {
$padding = 15 * $commentAns['legacy'].'px';
$paddingStyle = 'style="padding-left: '.$padding.'"';
} else {
$paddingStyle = '';
}
echo '<div class="comment-show-ans" '.$paddingStyle.'>';
<span class="comment-user">'.$comment['user_name'].'</span>
}
echo '</div>';
}
}
|
| |
|
|
|
|
|
|
|
для: Aidaho
(15.11.2011 в 07:31)
| | Попробуйте следующий скрипт
<?php
// Устанавливаем соединение с базой данных
require_once("config.php");
// Использование
echo tree_comment(0);
// Реализация
function tree_comment($id = 0, $intent = 0)
{
$id = intval($id);
$query = "SELECT * FROM comment
WHERE parent = $id
ORDER BY year, month, day, `time`";
$com = mysql_query($query);
if(!$com) exit("Ошибка извлечения комментариев");
if(mysql_num_rows($com))
{
while($comment = mysql_fetch_array($com))
{
// Вывод комментария
echo "<p style='margin-left: {$intent}px'>{$comment['comment']}</p>";
// Рекурсивный вызов
tree_comment($catalog['Id'], $intent + 5);
}
}
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(10.11.2011 в 15:01)
| | Подскажите? :) | |
|
|
|
|
|
|
|
для: cheops
(10.11.2011 в 15:01)
| | Вот:
CREATE TABLE `comment` (
`Id` int(11) NOT NULL auto_increment,
`post_id` int(11) NOT NULL default '0',
`user_name` varchar(255) NOT NULL default '',
`comment` tinytext NOT NULL,
`mail` varchar(255) NOT NULL default '',
`day` int(2) NOT NULL default '0',
`month` int(2) NOT NULL default '0',
`year` int(4) NOT NULL default '0',
`time` varchar(255) NOT NULL default '',
`vote` int(11) NOT NULL default '0',
`parent` int(11) NOT NULL default '0',
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
|
| |
|
|
|
|
|
|
|
для: Aidaho
(10.11.2011 в 14:58)
| | А, имеется в виду как организовать таблицу базы данных? У вас сейчас таблица какой вид имеет?
PS Пример лучше адаптировать к вашим названиям, если не сложно выполните запрос SHOW CREATE TABLE применительно к вашей таблице, чтобы можно было воспроизвести ситуацию. | |
|
|
|
|
|
|
|
для: cheops
(09.11.2011 в 13:57)
| | >Это зависит от того, как вы это хотите оформить, в случае выпадающих списков можно просто добавлять пробелы, в случае блоков или таблиц можно передавать отступ в процентах или пикселах, увеличивая это значение на какую-то фиксированную или переменную величину.
Меня интересует именно в базе можно сделать.
Все таки не могу понять, нет ли у вас примеров? | |
|
|
|
|
|
|
|
для: Aidaho
(08.11.2011 в 17:07)
| | >А как цикл поймет, что закончились комментарии?
Если записей нет, то не будет выполнения цикла while() новых рекурсивных вызовов.
>И каким образом лучше реализовать параметр со степенью вложенности?
Это зависит от того, как вы это хотите оформить, в случае выпадающих списков можно просто добавлять пробелы, в случае блоков или таблиц можно передавать отступ в процентах или пикселах, увеличивая это значение на какую-то фиксированную или переменную величину. | |
|
|
|
|
|
|
|
для: cheops
(08.11.2011 в 16:38)
| | Чего то не до конца понял по примеру.
А как цикл поймет, что закончились комментарии?
И каким образом лучше реализовать параметр со степенью вложенности? | |
|
|
|
|
|
|
|
для: Aidaho
(08.11.2011 в 16:33)
| | Функция нужно сделать рекурсивной, т.е. в цикле while добавить вызов этой же самой функции commentShow() для новых позиций. Кроме этого неплохо бы завести второй параметр, через который передавать степень вложенности, увеличивая его на каждом уровне. Пример можно посмотреть по ссылке http://softtime.ru/forum/read.php?id_forum=3&id_theme=79277. | |
|
|
|
|