Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Лестничный вывод комментариев для новости

Сообщения:  [1-3] 

 
 автор: sidPR   (21.01.2007 в 08:33)   письмо автору
 
   для: cheops   (20.01.2007 в 20:57)
 

cheops вы гений :) спасибо вам огромное , просто не разу не сталкивался с рекурсией теперь хоть буду знать как это работает :)

   
 
 автор: cheops   (20.01.2007 в 20:57)   письмо автору
 
   для: 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(0047);
?> 

   
 
 автор: sidPR   (20.01.2007 в 16:19)   письмо автору
 
 

Есть такая таблица:


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. Заранее благодарю

   

Сообщения:  [1-3] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования