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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: если есть ответ на коментарий
 
 автор: dirol   (31.03.2011 в 12:33)   письмо автору
 
 

у пользователя в профиле выводятся его последние комментарии

если есть ответ на его комментарий то вывести напротив самого комментария есть ответ





static $massiv, $massiv2, $massiv3;
    $user_id = intval($uid);
    $user_name = htmlspecialchars(substr($name, 0, 25));
    if (!is_array($massiv)) {
            $result = $db->sql_query("SELECT id, cid, modul, UNIX_TIMESTAMP(date) as formatted, comment FROM ".$prefix."_comment WHERE uid='".$user_id."' ORDER BY id DESC");
            while (list($id, $cid, $modul, $formatted, $comment) = $db->sql_fetchrow($result)) $massiv[] = array($id, $cid, $modul, $formatted, $comment);
    }

        if (!is_array($massiv3)) {
        $result3 = $db->sql_query("SELECT a.id, a.parentid, Count(b.parentid) AS tmp FROM ".$prefix."_comment AS b INNER JOIN ".$prefix."_comment AS a ON (a.id=b.parentid) GROUP BY a.id, a.parentid");
        while (list($cid, $parentid, $summ) = $db->sql_fetchrow($result3)) $massiv3[$cid] = array($parentid, $summ, $summ, 0, $cid);
          if ($db->sql_numrows($result3) > 0) {
          foreach ($massiv3 as $key => $val) {
            $flag = $val[0];
            while ($flag!=0) {
            $massiv3[$flag][2] = $massiv3[$flag][2] + $val[1];
            $massiv3[$flag][3] = $massiv3[$flag][3] + $val[1];
            $flag = $massiv3[$flag][0];
            }
          }
        }

    }

    if ($massiv) {
     foreach ($massiv as $key => $val) {
         $num = ($massiv3[$val[0]][2]) ? $massiv3[$val[0]][2] : 0;


        echo "$val[0]-$val[1]-$val[4]($num)<br />\n";


     }

    }


подскажите пожалуйста как это сделать правильно


CREATE TABLE IF NOT EXISTS `cms_comment` (
  `id` int(11) NOT NULL auto_increment,
  `cid` int(11) NOT NULL default '0',
  `modul` varchar(60) NOT NULL default '',
  `date` datetime default NULL,
  `uid` int(11) NOT NULL default '0',
  `name` varchar(25) NOT NULL default '',
  `host_name` varchar(60) default NULL,
  `comment` text NOT NULL,
  `status` int(1) NOT NULL,
  `votes` int(10) NOT NULL,
  `totalvotes` int(11) NOT NULL,
  `parentid` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `cid` (`cid`),
  KEY `uid` (`uid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=172 ;

--
-- Дамп данных таблицы `cms_comment`
--

INSERT INTO `cms_comment` (`id`, `cid`, `modul`, `date`, `uid`, `name`, `host_name`, `comment`, `status`, `votes`, `totalvotes`, `parentid`) VALUES
(1, 42981, 'news', '2011-03-30 18:13:41', 7, '', '109.173.110.229', 'ааааааааааааааа', 1, 1, 1, 0),
(11, 42981, 'news', '2011-03-30 18:15:00', 7, '', '109.173.110.229', 'проверка тест<br />\r\nааааа', 1, 1, 1, 0),
(21, 42981, 'news', '2011-03-30 18:15:10', 7, '', '109.173.110.229', 'еще еще ще', 1, -1, 1, 1),
(31, 42981, 'news', '2011-03-30 18:15:20', 7, '', '109.173.110.229', 'апапапапапа апапаппа апапапа', 1, -2, 2, 21),
(41, 42981, 'news', '2011-03-30 18:15:29', 7, '', '109.173.110.229', 'тут enne ne en ene en ene en', 1, 0, 2, 31),
(51, 42981, 'news', '2011-03-30 18:15:36', 7, '', '109.173.110.229', 'ttttttttttttttttttttttttttttt', 1, 2, 2, 41),
(61, 42981, 'news', '2011-03-30 20:06:37', 21, '', '178.140.131.205', 'проверка', 1, 1, 1, 0),
(101, 61, 'news', '2011-03-31 11:10:44', 7, '', '89.31.88.75', 'ответ на алмаза', 1, 0, 0, 0),
(91, 42981, 'news', '2011-03-31 11:10:24', 7, '', '89.31.88.75', 'ggggggggggggggggg', 1, 0, 0, 0),
(111, 42981, 'news', '2011-03-31 11:16:18', 7, '', '89.31.88.75', 'ответ алмазу', 1, 0, 0, 61),
(121, 42981, 'news', '2011-03-31 11:29:45', 21, '', '89.31.88.75', 'Еще один коммент', 1, 0, 0, 31),
(131, 42981, 'news', '2011-03-31 11:46:09', 7, '', '89.31.88.75', 'rere', 1, 0, 0, 121),
(141, 42981, 'news', '2011-03-31 11:47:46', 7, '', '89.31.88.75', 'полная жесть', 1, 0, 0, 131),
(151, 42981, 'news', '2011-03-31 11:49:34', 7, '', '89.31.88.75', 'ввввввввввввв', 1, 0, 0, 21),
(161, 42981, 'news', '2011-03-31 11:49:51', 7, '', '89.31.88.75', 'ответ на ответ', 1, 0, 0, 91),
(171, 42981, 'news', '2011-03-31 11:50:12', 7, '', '89.31.88.75', 'просто так', 1, 0, 0, 21);

  Ответить  
 
 автор: cheops   (31.03.2011 в 12:42)   письмо автору
 
   для: dirol   (31.03.2011 в 12:33)
 

А за связь сообщения с ответом, какое поле отвечает? parentid? И что такое uid (идентификатор пользователя)?

  Ответить  
 
 автор: dirol   (31.03.2011 в 12:52)   письмо автору
 
   для: cheops   (31.03.2011 в 12:42)
 

да в parentid заносится родитель комментария uid номер юзера в базе который написал комментарий

  Ответить  
 
 автор: cheops   (31.03.2011 в 15:59)   письмо автору
 
   для: dirol   (31.03.2011 в 12:52)
 

Запросите количество сообщений, для которых текущее сообщение является родителем
SELECT COUNT(*) FROM cms_comment
WHERE parentid = 21 AND uid = 7 AND modul = 'news'

  Ответить  
 
 автор: dirol   (31.03.2011 в 19:24)   письмо автору
 
   для: cheops   (31.03.2011 в 15:59)
 

да но тут получится для каждого комментария свой запрос. на страницу получится под 50-60 запросов поэтому и делал через масив.

  Ответить  
 
 автор: cheops   (31.03.2011 в 20:26)   письмо автору
 
   для: dirol   (31.03.2011 в 19:24)
 

Можно в таблицу добавить флаг-признак, который равен нулю, если ответов нет и который принимает значение 1, если ответ добавлен.

  Ответить  
 
 автор: dirol   (31.03.2011 в 23:13)   письмо автору
 
   для: cheops   (31.03.2011 в 20:26)
 

да думаю это будет лучший вариант

  Ответить  
Rambler's Top100
вверх

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