Прямой эфир

Главные вкладки

Аватар пользователя enjoy enjoy 13 августа 2008 в 13:36

Хочу сделать прямой эфир, а-ля Хабр, вернее он есть, но хочу немного доработать.
Так как швабр.ру не работает и здесь в поиске не нашел похожего, прошу помощи, самому не получилось.

есть код вывода :

        $result = db_query_range($query, 0, $max);
        $items = array ();
        while ($comment = db_fetch_object($result)) {
                $items[] = l($comment->subject.$comment->nid, "node/$comment->nid", NULL, NULL, "comment-$comment->cid");

                $res = db_query("SELECT u.name, u.uid FROM {users} u WHERE u.uid = %d", $comment->creator);
                $user = db_fetch_object($res);

                $group_content=l($user->name, "user/$comment->creator", array('title' => $comment->name, 'class' => 'lastcomments_section_nick'));

                if($comment->group_nid) {
                        $sql = "SELECT node.title FROM node WHERE node.status = 1 AND nid = $comment->group_nid";
                        $res = db_query($sql);
                        $group = db_fetch_object($res);
                        $group_content=l($group->title, "group/$comment->group_nid", array('title' => $group->title, 'class' => 'lastcomments_section_nick'));
                }
                $block_content.='<div class="lastcomments_section">
                                        '
.$image.'
                                        '
.l($comment->name, "user/$comment->uid", array('title' => $comment->name, 'class' => 'lastcomments_section_nick')).'&nbsp;&rarr;&nbsp;
                                        '
.$group_content.' /
                                        '
.l($comment->title, "node/$comment->nid", array('title' => $comment->title, 'class' => 'lastcomments_section_subj'), NULL, "comment-$comment->cid").'
                       
                    </div>'
;

что в него добавить, чтобы показывалось:

1. количество комментариев к ноде
2. если комментарий оставил гость, чтобы вместо имени пользователя писалось "Гость"

Комментарии

Аватар пользователя Nikit Nikit 13 августа 2008 в 16:43

угу, советую до конца разобраться, а то будете выпрашивать весь код Smile
Смотрите строчку с $block_content в конце, вот туда нужно приставить,
и еще
$result = db_query_range($query, 0, $max);
надо посмотреть что там за query, так как uid в этом запросе может и не быть.

Аватар пользователя enjoy enjoy 13 августа 2008 в 20:37

такой вот query

        $query = 'SELECT        c.nid,
                                c.cid,
                                c.subject,
                                n.title,
                                n.vid,
                                n.type,
                                n.uid as creator,  
                                u.name,
                                u.uid,
                                oga.group_nid
                        FROM    comments c,  users u, node n LEFT JOIN og_ancestry oga ON n.nid = oga.nid
                        WHERE   c.nid = n.nid
                        AND     u.uid = c.uid
                        ORDER BY c.timestamp desc '
;
Аватар пользователя enjoy enjoy 14 августа 2008 в 1:41

нет, сдаюсь
слабоват я еще сам, хотя дальше буду искать

плиз, для моего развития, разберите на примере

Аватар пользователя Nikit Nikit 14 августа 2008 в 4:37

странный селект
яб так сделал:

$query = 'SELECT c.nid, c.cid, c.subject, n.title, n.vid, n.type, n.uid as creator,  u.name,
  u.uid, oga.group_nid
FROM comments c
  inner join users u on u.uid=c.uid
  inner join node n on c.nid=n.nid
  LEFT JOIN og_ancestry oga ON n.nid = oga.nid
ORDER BY c.timestamp desc '
;

ну да ладно.
а по твоему где $block_content в конце:

($comment->uid == 0) ? $commentuser = t('Guest') : $commentuser = $comment->name;

$block_content.='<div class="lastcomments_section"> . t('Comment count').':'.$comment_count
                                        '
.$image.'
                                        '
.l($commentuser, "user/$comment->uid", array('title' => $commentuser, 'class' => 'lastcomments_section_nick')).'&nbsp;&rarr;&nbsp;
                                        '
.$group_content.' /
                                        '
.l($comment->title, "node/$comment->nid", array('title' => $comment->title, 'class' => 'lastcomments_section_subj'), NULL, "comment-$comment->cid").'

ну там покрасивее сам сделай.

Аватар пользователя enjoy enjoy 14 августа 2008 в 8:22

Никит, спасибо большое.

С гостем все заработало, а вот

$block_content.='<div class="lastcomments_section"> '.t().':'.$comment_count.'

ничего не выводит, Comment count: (пусто)

Аватар пользователя enjoy enjoy 14 августа 2008 в 8:58
$block_content.='<div class="lastcomments_section"> '.t('Comment count').':'.$node->comment_count.'

Нет, тоже пусто. Я уже вертел так и сяк, я в этом плохо понимаю, но может запрос к базе какой нужен?

что нибудь типа

$sql = "SELECT node.title FROM node WHERE node.status = 1 AND nid = $comment->group_nid";
Аватар пользователя enjoy enjoy 14 августа 2008 в 11:45

да, только у меня все как у собаки: Все понимаю, только сказать не могу Smile

Вот и тут понимаю, но реализовать не могу, правильно написать код

Аватар пользователя Nikit Nikit 14 августа 2008 в 12:33

$sql = "SELECT comment as comment_count FROM node WHERE nid = %n";
потом к нему пустить $comment->nid через db_result и db_query
Всё это читай в api.drupal.org.

Аватар пользователя enjoy enjoy 14 августа 2008 в 14:09

нет, своими силами мне не осилить, надо учить азы сначала

user warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%n' at line 1 query: SELECT comment as comment_count FROM node WHERE n.nid = %n in /includes/database.mysql.inc on line 172.

придется выпрашивать весь код, если не сложно, добейте меня

Аватар пользователя enjoy enjoy 17 августа 2008 в 14:41

"Nikit" wrote:
$sql = "SELECT comment as comment_count FROM node WHERE nid = %n";
потом к нему пустить $comment->nid через db_result и db_query

Никит, подскажи как в оконцовке должно быть

Аватар пользователя enjoy enjoy 18 августа 2008 в 9:21

вот такое выдал

user warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%n' at line 1 query: SELECT comment as comment_count FROM node WHERE n.nid = %n in .../includes/database.mysql.inc on line 172.
Аватар пользователя Nikit Nikit 18 августа 2008 в 10:32

а ну да, ошибся, смени %n на %d
ну вобщем то пора заниматься, или просто дайте разработку фрилансеру.

Аватар пользователя Nikit Nikit 18 августа 2008 в 14:29

еще раз извиняюсь, просто "лень" мне разбираться и вспоминать, вы бы могли поставить какойнить mysql клиент, и просмотреть базу, вот тут ок-ся статистика: node_comment_statistics
следовательно запрос такой:

$sql = "SELECT comment_count FROM node_comment_statistics WHERE nid = %d";
$commentcount = db_result(db_query($sql, $comment->nid));