[РЕШЕНО] Количество комментариев и количество созданного материала у пользователя

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

Комментарии

Аватар пользователя Spaik Spaik 18 января 2011 в 17:18

Quote:
По делу вопрос надо задавать или пытать как немцы трэба?

Т.е. в топике вопрос - это не вопрос ?
Ладно, еще раз -- Нужно чтобы в комментариях у каждого пользователя выводилось общее количество его публикаций и комментарий. Как это сделать? Точнее, какой код?
Немец блин...

Аватар пользователя Dendix Dendix 18 января 2011 в 21:05

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

Аватар пользователя Spaik Spaik 18 января 2011 в 21:12

"Dendix" wrote:
Мне нужно аналогичное только чтобы в профиле у каждого пользователя показывалась статистика сколько оставил каментов и сколько написал статей

Ну мне тоже желательно и там и там ...

Помогите...

Аватар пользователя Spaik Spaik 19 января 2011 в 1:22

"annya" wrote:
Это замечательно что работает, но код неправильный. Почитайте про ф-ию db_query и placeholders

Буду благодарен если обоснуете...

db_query("SELECT count(*) FROM {comments} WHERE uid = %d",  $comment->uid
Так будет правильно?

Аватар пользователя annya annya 20 января 2011 в 1:31

Spaik wrote:
"annya" wrote:
Это замечательно что работает, но код неправильный. Почитайте про ф-ию db_query и placeholders

Буду благодарен если обоснуете...

db_query("SELECT count(*) FROM {comments} WHERE uid = %d",  $comment->uid
Так будет правильно?


Да правильно, только оператор count(как и все операторы в SQL) пишется прописными COUNT.
+ нет необходимости загружать объект пользователя через user_load().

Аватар пользователя wargan wargan 19 января 2011 в 6:34

типы материалов свои

<?php
$userid 
$account->uid;
if (
is_numeric($userid)) {
    
$list_content = array();
    
$list_private = array();
    
$list_private[] = "Дата регистрации: ".format_date($account->created"medium");
    
$list_private[] = "Последнее посещение: ".format_date($account->access"medium");
    
//кол-во комментариев
    
$result_com db_query("SELECT COUNT(cid) AS count, {users}.uid, {users}.name FROM {comments} LEFT JOIN {users} ON {comments}.uid = {users}.uid WHERE {comments}.uid = $userid GROUP BY uid ORDER BY count ");
    
$user_com db_fetch_object($result_com);
    if(
$user_com->count) {
        
$list_private[] = "Комментариев: $user_com->count";
    }
    
//документы
    
$q "SELECT {node_type}.name as tipo,count({node}.type) as cant, {users}.uid, {users}.name
FROM {node}
LEFT JOIN {users} ON {node}.uid = {users}.uid
LEFT JOIN {node_type} ON {node}.type = {node_type}.type
WHERE {node}.uid = 
$userid AND ({node_type}.type = 'blog' OR {node_type}.type = 'hist_article' OR {node_type}.type = 'sol_article' OR {node_type}.type = 'rpg_article' OR {node_type}.type = 'art_article' OR {node_type}.type = 'section' OR {node_type}.type = 'gallery' OR {node_type}.type = 'image') group by {node}.type";
    
$result_type db_query($q);
    while (
$row db_fetch_object($result_type))
    {
        
$list_private[] = $row->tipo.": ".$row->cant;
    }
    
$output theme('item_list'$list_privateNULL'ul', array('id'=>'user_list_private''class' => 'user_list'));
    
//$output .= theme('item_list', $list_content, NULL, 'ul', array('id'=>'user_list_content', 'class' => 'user_list'));
    
print($output);
}
?>
Аватар пользователя Spaik Spaik 20 января 2011 в 23:49

"annya" wrote:
Да правильно, только оператор count(как и все операторы в SQL) пишется прописными COUNT.
+ нет необходимости загружать объект пользователя через user_load().

Это я уже понял, спасибо.

Аватар пользователя veleslab veleslab 25 марта 2011 в 10:27

Количество комментариев - решение для D7:

<?php $value db_query("SELECT COUNT (*) FROM {comment} WHERE uid = :uid", array(
  
':uid' => $comment->uid,
))->
fetchField();
echo 
$value?>