|
|
|
|
|
для: cheops
(20.01.2007 в 20:57)
| | cheops вы гений :) спасибо вам огромное , просто не разу не сталкивался с рекурсией теперь хоть буду знать как это работает :) | |
|
|
|
|
|
|
|
для: sidPR
(20.01.2007 в 16:19)
| | Вы не сможете обойтись без рекурсивной функции, вернее сможете, но без её использования код будет ещё сложнее... Лучше использовать следующую схему вывода сообщений
<?php
function print_post($id, $indent, $id_news)
{
$indent += 5;
$query = "SELECT * FROM comments WHERE id_news = $id_news AND id_otv = $id";
$result = mysql_query($query);
if(!$result) exit("Ошибка обращения к таблице в функции print_post()");
if(mysql_num_rows($result) > 0)
{
while($comments = mysql_fetch_array($result))
{
echo "<table width=100%>
<tr>
<td width=".$indent."%></td>
<td>$comments[msg]</td>
</tr>
</table>";
// Рекурсивно спускаемся на следующий уровень
print_post($comments['id'], $indent, $id_news);
}
}
}
// Вывод комментариев
print_post(0, 0, 47);
?>
|
| |
|
|
|
|
|
|
| Есть такая таблица:
CREATE TABLE `comments` (
`id` int(11) NOT NULL auto_increment,
`id_news` varchar(255) NOT NULL default '',
`id_otv` int(11) NOT NULL default '0',
`date` varchar(255) NOT NULL default '',
`name` varchar(255) NOT NULL default '',
`msg` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
|
id` - Id данного сообщения.
id_news - id по которому идет выборка в определенную новость
id_otv - id сообщения на который дан ответ
как я вывожу:
while($com = mysql_fetch_array($result))
{
if($com['id_otv']!=0){
$w=$w-5;
}elseif ($com['id_otv']==0)
{
$w='100';
}
echo "<table id='$com[id]' border=0 cellpadding=0 cellspacing=0 width=$w% height=50>
<tr>
<td width='50%' height=10>Имя:<b>$com[name]</b></td>
<td width='50%' height=10>
<p align='right' class='date'>$com[date]</td>
</tr>
<tr>
<td valign='top' style='border-top:#D74D22 solid 1px;PADDING-BOTTOM: 5px;PADDING-TOP: 5px; PADDING-RIGHT: 5px;PADDING-LEFT: 10px;' width='100%' bgcolor='#A90303' colspan='2'>$com[msg]</td>
</tr>
</table>
<table border='0' cellpadding='0' cellspacing='0' height='34' id='menu'>
<tr>
<td valign='top'>
<a href='#' onclick=\"alert('Ответы временно заблокированны')\" class='otvet' onmouseover=\"this.style.background='#790003'\" onmouseout=\"this.style.background='#A90303'\">Ответить</a>
</td>
</tr>
</table>
";
}
|
сдесь $w - это ширина окна в процентах .. я сделать условие что мол если в поле ответ есть id сообщения на который ответили то уменьшается ширина окна на 5 процентов и смещается правее...
if($com['id_otv']!=0){
$w=$w-5;
}elseif ($com['id_otv']==0)
{
$w='100';
}
|
а надо сделать так чтобы при ответе на определенное сообщение ответ распологался строго под этим сообщением с уменьшением ширины.. а как это грамотно сделать ума не приложу все перепробывал =( подскажите кто организовывал такого вида (очень похожий пример на livejournal.com) как составить условие или вывод чтоб все выводилось как там :(
P.S. Заранее благодарю | |
|
|
|
|