пока придумал вот такой способ
id1 = 1 (ответ на 0)
id2 = 2 (ответ на 0)
id3 = 1.3 (ответ на 1)
id4 = 1.4 (ответ на 1)
id5 = 1.5 (ответ на 1)
id6 = 1.4.6 (ответ на 4)
id7 = 7 (ответ на 0)
id8 = 8 (ответ на 0)
id9 = 8.9 (ответ на 8)
id10 = 8.9.10 (ответ на 9)
id11 = 8.9.10.11 (ответ на 10)
id12 = 8.12 (ответ на 8)
id13 = 13 (ответ на 0)
id14 = 14 (ответ на 0)
однако почему-то при выводе выходит что число id13 или id14 меньше чем id2
пример можно наблюдать тут
http://jquery.vtrigazety.ru/&novost=1
Спустя 1 час, 49 минут, 12 секунд (12.07.2010 - 08:12) Kuzya написал(а):
Опишите пожалуйста проблему подробнее, ничего не понятно
Спустя 2 часа, 35 минут, 22 секунды (12.07.2010 - 10:48) Nikitian написал(а):
Сортируйте по двум полям: парент и id. Если парента нет, то ставьте парентом текущий id, иначе сортировка выдаст совсем не то, что надо.
Спустя 9 минут, 42 секунды (12.07.2010 - 10:57) ssa написал(а):
Я решил такую проблему добавлением нулей.
id1 = 001 (ответ на 0)
id2 = 002 (ответ на 0)
id3 = 001.003 (ответ на 1)
...
id13 = 013 (ответ на 0)
id14 = 014 (ответ на 0)
Этот вариант будет работать до id 999, если нужно больше то еще нули добавлять.
id1 = 001 (ответ на 0)
id2 = 002 (ответ на 0)
id3 = 001.003 (ответ на 1)
...
id13 = 013 (ответ на 0)
id14 = 014 (ответ на 0)
Этот вариант будет работать до id 999, если нужно больше то еще нули добавлять.
Спустя 19 часов, 20 минут, 51 секунда (13.07.2010 - 06:18) Vantedur написал(а):
что-то не выходит вот это толком заюзать, ктонить юзал?
http://www.tommylacroix.com/2008/09/10/php...uilding-a-tree/
Хочется древовидные комментарии позволяющие древо выводить вплоть до 50 шагов ато и больше но что-то пока не особо выходит.
хоть я пока такие большие деревья не встречал кроме как на лепре но коль такие комментарии выстраиваются там то и в любом другом месте они вполне могут быть
Быть может есть у кого отличное древо?
то что пока получается
http://www.tommylacroix.com/2008/09/10/php...uilding-a-tree/
Хочется древовидные комментарии позволяющие древо выводить вплоть до 50 шагов ато и больше но что-то пока не особо выходит.
хоть я пока такие большие деревья не встречал кроме как на лепре но коль такие комментарии выстраиваются там то и в любом другом месте они вполне могут быть
Быть может есть у кого отличное древо?
то что пока получается
<?php
$body = array();
$query = mysql_query("SELECT * FROM comments");
$dataset = array();
$i = 1;
while ($check = mysql_fetch_array($query)) {
$id = $check['id'];
$parent = $check['parent'];
$comment = $check['comment'];
if ($parent == 0) $parent = null;
$dataset[$i] = array(
'id'=>$id,
'parent'=>$parent,
'comment'=>$comment
);
$i++;
}
$body = mapTree($dataset);
display_tree($body);
function mapTree($dataset) {
$tree = array();
foreach ($dataset as $id=>&$node) {
if ($node['parent'] === null) {
$tree[$id] = &$node;
} else {
if (!isset($dataset[$node['parent']]['children'])) $dataset[$node['parent']]['children'] = array();
$dataset[$node['parent']]['children'][$id] = &$node;
}
}
return $tree;
}
function display_tree($nodes, $indent=0) {
if ($indent >= 20) return; // Stop at 20 sub levels
foreach ($nodes as $node) {
print str_repeat(' ',$indent*4);
22:09
print "{$node['id']}. {$node['comment']}";
print '';
if (isset($node['children']))
display_tree($node['children'],$indent+1);
}
}
?>
Спустя 12 дней, 18 часов, 6 минут, 13 секунд (26.07.2010 - 00:24) Vantedur написал(а):
в общем трабл такой, троит первый комментарий добавленный в пост. тоесть в бд 1 а на сайте выводит какую-то ботву
код вывода скрипта
пример косяка http://jquery.vtrigazety.ru/&novost=1
пример с несколькими комментариями http://jquery.vtrigazety.ru/&novost=4
удивительно то что даже призраку можно ответить
бд
код вывода скрипта
<?
$query = mysql_query("SELECT * FROM ******* WHERE `unswer`='".$_GET['novost']."'");
$dataset = array();
while($check = mysql_fetch_array($query)) {
$autor = $check['autor'];
$data = $check['data'];
$mama = $check['id'];
$parent = $check['postnumb'];
if ($parent == 0) $parent = null;
$dataset['id'] = $check['id'];
$dataset[$check['id']]['mama'] = $mama;
$dataset[$check['id']]['data'] = $data;
$dataset[$check['id']]['parent'] = $parent;
$dataset[$check['id']]['text'] = $check['comment'];
}
$tree = mapTree($dataset);
display_tree($tree);
function mapTree($dataset) {
$tree = array();
foreach ($dataset as $id=>&$node) {
if ($node['parent'] === null) {
$tree[$id] = &$node;
} else {
if (!isset($dataset[$node['parent']]['children'])) $dataset[$node['parent']]['children'] = array();
$dataset[$node['parent']]['children'][$id] = &$node;
}
}
return $tree;
}
?>
<script type="text/javascript">
$(document).ready(function() {
$(".form_answer").hide();
$(".show_form_answer").click(function() {
$(this).parent().find('.form_answer').slideToggle();
})
})
</script>
<?php
function display_tree($nodes, $indent=0) {
if ($indent >= 20) return;
foreach ($nodes as $node) {
echo '<table><tr>';
$nbsp = $indent * 30;
echo '<td width="'.$nbsp.'px" align="left"></td>';
echo '<td algin="left">'.$node['text'].'</td>';
echo "</tr><tr><td colspan='3'>";
echo ' <tr><td ><table width="'.$nbsp.'px" ></table></td><td style="width:100%; padding-bottom:10px;"><a href="" class="show_form_answer" onclick="return false;">Ответить</a>
<form class="form_answer" action="http://vtrigazety.ru/addcom.php?post='.$_GET['novost'].'&child='.$node['mama'].'&home='.$_GET['blog'].'" method="post"><table style="width:100%;"><tr><td>
<input type="hidden" id="'.$node['id'].'">
<textarea id="text" name="text" style="width:100%; height:200px; text-align:left;"></textarea></td></tr><tr><td>
<input type="submit" value=" добавить " /></td></tr></table>
</form></td></tr>';
echo "</td></tr></table>\r\n";
if (isset($node['children']))
display_tree($node['children'],$indent+1);
}
}
пример косяка http://jquery.vtrigazety.ru/&novost=1
пример с несколькими комментариями http://jquery.vtrigazety.ru/&novost=4
удивительно то что даже призраку можно ответить
бд
Спустя 12 часов, 56 минут, 37 секунд (26.07.2010 - 13:21) demonichka написал(а):
Если комменты привязаны к какой-то статье или теме, то выбираем все сообщения для этой статьи/темы. А для красивого вывода используется рекурсивная функция.
Спустя 2 часа, 5 минут, 42 секунды (26.07.2010 - 15:27) Vantedur написал(а):
не понял
Спустя 6 часов, 48 секунд (26.07.2010 - 21:27) Stiven Rain написал(а):
Цитата (Vantedur @ 12.07.2010 - 03:23) |
Не могу найти наиболее оптимальный вариант вывода древовидных комментариев пока придумал вот такой способ id1 = 1 (ответ на 0) id2 = 2 (ответ на 0) id3 = 1.3 (ответ на 1) id4 = 1.4 (ответ на 1) id5 = 1.5 (ответ на 1) id6 = 1.4.6 (ответ на 4) id7 = 7 (ответ на 0) id8 = 8 (ответ на 0) id9 = 8.9 (ответ на 8) id10 = 8.9.10 (ответ на 9) id11 = 8.9.10.11 (ответ на 10) id12 = 8.12 (ответ на 8) id13 = 13 (ответ на 0) id14 = 14 (ответ на 0) однако почему-то при выводе выходит что число id13 или id14 меньше чем id2 пример можно наблюдать тут http://jquery.vtrigazety.ru/&novost=1 |
id13 и id 14 меньше чем id2, если значения сравниваются как строки посимвольно, а не как числа. Код 2 больше чем 1
Спустя 4 часа, 3 минуты, 5 секунд (27.07.2010 - 01:31) Guest написал(а):
Цитата (Stiven Rain @ 26.07.2010 - 18:27) | ||
id13 и id 14 меньше чем id2, если значения сравниваются как строки посимвольно, а не как числа. Код 2 больше чем 1 |
это грамотно работать не будет