Problemita sencillo con código PHP

jose0071990 Seguir

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
23 Jul 2009
Mensajes
6
Buenas tardes. Antes de nada dar las gracias por la ayuda que sé que voy a recibir por vuestra parte :$. Tengo un código en PHP que muestra los 5 top posters de la semana. Sé que habra que cambiar algo de la parte donde pone "$starttime" y lo de "$mostactiveweek_get" pero no tengo ni idea de lo que hay que cambiar. Lo que quiero es que en vez de ser de una semana, la cuenta de mensajes sea vitalicia.
PD: Éste código va en un widget del CMS :)

PHP:
$posts = "Posts"; 
  ob_start(); 
  require_once('./includes/functions_user.php'); 
  require_once('./includes/functions_bigthree.php'); 
  // Current Week Top Posters 
  $starttime = mktime(0, 0, 0, date('n'), date('j'), date('Y')) - ((date('N')-1)*3600*24); 
  // Get Top Members for current week 
  $mostactiveweek_get = vB::$db->query_read(" 
    SELECT ".TABLE_PREFIX."user.userid, ".TABLE_PREFIX."user.username, ".TABLE_PREFIX."user.usertitle, 
     COUNT(".TABLE_PREFIX."post.postid) AS postcount 
    FROM ".TABLE_PREFIX."user 
     LEFT JOIN ".TABLE_PREFIX."post 
      ON ".TABLE_PREFIX."post.userid=".TABLE_PREFIX."user.userid 
       AND dateline>'".$starttime."' 
   GROUP BY ".TABLE_PREFIX."user.userid 
   ORDER BY postcount DESC 
   LIMIT 5"); 
  $topposter = true; 
  $output_bits = ''; 
  while($user = vB::$db->fetch_array($mostactiveweek_get)) 
  { 
        $percentage = round(($user[postcount]/$totalposts[postcount]) * 100); 
        if($topposter == true) 
        { 
           $avatarurl = fetch_avatar_url($user[userid]); 
           if (!$avatarurl) { 
               $useravatar = 'images/misc/avatar.png'; 
           } else  { 
              $useravatar = $avatarurl[0]; 
           } 
           $output_bits .='<div align="center"> 
                           <img border="0" src="'.$useravatar.'"><br /> 
                           <a target="_blank" href="member.php?u='.$user[userid].'">'.$user[username].'</a><br /> 
                           '.$user[usertitle].'<br /> 
                           '.$posts.':&nbsp;'.$user[postcount].'<br /> 
                           </div><hr />'; 
           $topposter = false; 
        } else { 
           $output_bits .= '<a target="_blank" href="member.php?u='.$user[userid].'">'.$user[username].'</a><div style="float: right;">'.$user[postcount].'</div><br />'; 
        } 
  } 
  $output = $output_bits; 
  ob_end_clean();
 

jose0071990

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
23 Jul 2009
Mensajes
6
A qué línea te refieres Agustín? a la relacionada con //current week top posters(la que viene debajo, vaya)???? Ya lo intenté pero sigue igual. Osease: Siguen saliendo los mismos top posters, no salen los moderadores (por ejemplo) que tendrán más de 50 mensajes.
La cuenta total de post no aparece.
 

imported_Agustin

Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
8 Ago 2010
Mensajes
399
Aca esta tu problema:
PHP:
 GROUP BY ".TABLE_PREFIX."user.userid 
   ORDER BY postcount DESC 
   LIMIT 5");

Saca el LIMIT 5. o pone mas.
Si queres un limite de 100 mensajes : LIMIT 100.
Si no queres limite, elmina LIMIT 5.
 

jose0071990

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
23 Jul 2009
Mensajes
6
Así tengo el código ahora mismo y no veo nada diferente. Sale el mismo usuario con 2 post (Que son los que lleva esta semana) no salen los 67 totales que tiene


PHP:
$posts = "Posts"; 
  ob_start(); 
  require_once('./includes/functions_user.php'); 
  require_once('./includes/functions_bigthree.php'); 
  // Get Top Members for current week 
  $mostactiveweek_get = vB::$db->query_read(" 
    SELECT ".TABLE_PREFIX."user.userid, ".TABLE_PREFIX."user.username, ".TABLE_PREFIX."user.usertitle, 
     COUNT(".TABLE_PREFIX."post.postid) AS postcount 
    FROM ".TABLE_PREFIX."user 
     LEFT JOIN ".TABLE_PREFIX."post 
      ON ".TABLE_PREFIX."post.userid=".TABLE_PREFIX."user.userid 
       AND dateline>'".$starttime."' 
   GROUP BY ".TABLE_PREFIX."user.userid 
   ORDER BY postcount DESC"); 
  $topposter = true; 
  $output_bits = ''; 
  while($user = vB::$db->fetch_array($mostactiveweek_get)) 
  { 
        $percentage = round(($user[postcount]/$totalposts[postcount]) * 100); 
        if($topposter == true) 
        { 
           $avatarurl = fetch_avatar_url($user[userid]); 
           if (!$avatarurl) { 
               $useravatar = 'images/misc/avatar.png'; 
           } else  { 
              $useravatar = $avatarurl[0]; 
           } 
           $output_bits .='<div align="center"> 
                           <img border="0" src="'.$useravatar.'"><br /> 
                           <a target="_blank" href="member.php?u='.$user[userid].'">'.$user[username].'</a><br /> 
                           '.$user[usertitle].'<br /> 
                           '.$posts.': '.$user[postcount].'<br /> 
                           </div><hr />'; 
           $topposter = false; 
        } else { 
           $output_bits .= '<a target="_blank" href="member.php?u='.$user[userid].'">'.$user[username].'</a><div style="float: right;">'.$user[postcount].'</div><br />'; 
        } 
  } 
  $output = $output_bits; 
  ob_end_clean();

PD: Ese límite que me hiciste quitar no se refiere al número de usuarios que han de parecer en el widget?
 

jose0071990

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
23 Jul 2009
Mensajes
6
Sinceramente.. yo tampoco lo sé, lo rebusqué por internet (hay permiso para ponerlo donde se quiera y hacerle modificaciones).

Intentaré poner el post en PHP a ver si ahí consigo lo que quiero. Muchas gracias por el intento Agustin :p =D
 

jose0071990

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
23 Jul 2009
Mensajes
6
Consulta sobre codigo php

Buenas tardes. Antes de nada dar las gracias por la ayuda que sé que voy a recibir por vuestra parte :$. Tengo un código en PHP que muestra los 5 top posters de la semana. Sé que habra que cambiar algo de la parte donde pone "$starttime" y lo de "$mostactiveweek_get" pero no tengo ni idea de lo que hay que cambiar. Lo que quiero es que en vez de ser de una semana, la cuenta de mensajes sea vitalicia.
PD: Éste código va en un widget del CMS :)

PHP:
$posts = "Posts"; 
  ob_start(); 
  require_once('./includes/functions_user.php'); 
  require_once('./includes/functions_bigthree.php'); 
  // Current Week Top Posters 
  $starttime = mktime(0, 0, 0, date('n'), date('j'), date('Y')) - ((date('N')-1)*3600*24); 
  // Get Top Members for current week 
  $mostactiveweek_get = vB::$db->query_read(" 
    SELECT ".TABLE_PREFIX."user.userid, ".TABLE_PREFIX."user.username, ".TABLE_PREFIX."user.usertitle, 
     COUNT(".TABLE_PREFIX."post.postid) AS postcount 
    FROM ".TABLE_PREFIX."user 
     LEFT JOIN ".TABLE_PREFIX."post 
      ON ".TABLE_PREFIX."post.userid=".TABLE_PREFIX."user.userid 
       AND dateline>'".$starttime."' 
   GROUP BY ".TABLE_PREFIX."user.userid 
   ORDER BY postcount DESC 
   LIMIT 5"); 
  $topposter = true; 
  $output_bits = ''; 
  while($user = vB::$db->fetch_array($mostactiveweek_get)) 
  { 
        $percentage = round(($user[postcount]/$totalposts[postcount]) * 100); 
        if($topposter == true) 
        { 
           $avatarurl = fetch_avatar_url($user[userid]); 
           if (!$avatarurl) { 
               $useravatar = 'images/misc/avatar.png'; 
           } else  { 
              $useravatar = $avatarurl[0]; 
           } 
           $output_bits .='<div align="center"> 
                           <img border="0" src="'.$useravatar.'"><br /> 
                           <a target="_blank"  href="member.php?u='.$user[userid].'">'.$user[username].'</a><br  /> 
                           '.$user[usertitle].'<br /> 
                           '.$posts.':&nbsp;'.$user[postcount].'<br /> 
                           </div><hr />'; 
           $topposter = false; 
        } else { 
           $output_bits .= '<a target="_blank"  href="member.php?u='.$user[userid].'">'.$user[username].'</a><div  style="float: right;">'.$user[postcount].'</div><br />';  
        } 
  } 
  $output = $output_bits; 
  ob_end_clean();

PD: Postee esto antes en el apartado de problemas con vbulletin, pero creo que este apartado es más indicado.
 

Eduardo Leon

Dseda
Programador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
11 Oct 2009
Mensajes
1.186
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
okz .
copia y pega esto :

PHP:
$posts = "Posts"; 
  ob_start(); 
  require_once('./includes/functions_user.php'); 
  require_once('./includes/functions_bigthree.php'); 
  // Current Week Top Posters 
  $starttime = mktime(0, 0, 0, date('n')); 
  // Get Top Members for current week 
  $mostactiveweek_get = vB::$db->query_read(" 
    SELECT ".TABLE_PREFIX."user.userid, ".TABLE_PREFIX."user.username, ".TABLE_PREFIX."user.usertitle, 
     COUNT(".TABLE_PREFIX."post.postid) AS postcount 
    FROM ".TABLE_PREFIX."user 
     LEFT JOIN ".TABLE_PREFIX."post 
      ON ".TABLE_PREFIX."post.userid=".TABLE_PREFIX."user.userid 
       AND dateline>'".$starttime."' 
   GROUP BY ".TABLE_PREFIX."user.userid 
   ORDER BY postcount DESC 
   LIMIT 5"); 
  $topposter = true; 
  $output_bits = ''; 
  while($user = vB::$db->fetch_array($mostactiveweek_get)) 
  { 
        $percentage = round(($user[postcount]/$totalposts[postcount]) * 100); 
        if($topposter == true) 
        { 
           $avatarurl = fetch_avatar_url($user[userid]); 
           if (!$avatarurl) { 
               $useravatar = 'images/misc/avatar.png'; 
           } else  { 
              $useravatar = $avatarurl[0]; 
           } 
           $output_bits .='<div align="center"> 
                           <img border="0" src="'.$useravatar.'"><br /> 
                           <a target="_blank" href="member.php?u='.$user[userid].'">'.$user[username].'</a><br /> 
                           '.$user[usertitle].'<br /> 
                           '.$posts.':&nbsp;'.$user[postcount].'<br /> 
                           </div><hr />'; 
           $topposter = false; 
        } else { 
           $output_bits .= '<a target="_blank" href="member.php?u='.$user[userid].'">'.$user[username].'</a><div style="float: right;">'.$user[postcount].'</div><br />'; 
        } 
  } 
  $output = $output_bits; 
  ob_end_clean();

 

imported_NkC

Delta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
4 Feb 2010
Mensajes
706
No puedo creer que no se hayan dado cuenta donde esta la variable que pide los datos de semana xD. No es necesario saber PHP solo analizar un poco este codigo ^^

Lo que buscan es esto:

PHP:
$starttime = mktime(0, 0, 0, date('n'), date('j'), date('Y')) - ((date('N')-1)*3600*24);

Ahora no se con que reemplazarlo porque no se PHP pero, pensandolo un poco esta es una limitacion de tiempo osea habria que quitarla, pero ademas de eliminarla se debe no hacer esa limitacion en todo el codigo... ¿pienso yo xD?
 

Xolag

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
11 Feb 2011
Mensajes
109
Para que sean los top posteadores de una semana remplaza la linea de NKC por esta:

PHP:
<?
$startTime = mktime(0, 0, 0, date('n'), date('j'), date('Y')) - ((date('N')-1)*3600*24);
$endTime = mktime(); 
?>
 

imported_NkC

Delta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
4 Feb 2010
Mensajes
706
Para que sean los top posteadores de una semana remplaza la linea de NKC por esta:

PHP:
<?
$startTime = mktime(0, 0, 0, date('n'), date('j'), date('Y')) - ((date('N')-1)*3600*24);
$endTime = mktime(); 
?>

Claro pero el quiere que sean los top posteadores (sin limite de tiempo).
 
Arriba