y supongo que deberias borrar esa linea.
Asi no tiene un rago maximo de conteo.
2Likes
Esta es una discusión para el tema Problemita sencillo con código PHP en el foro Lenguajes de Programación, bajo la categoría Área Administrativa; 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. ...
Página:
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
Código 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.': '.$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();
y supongo que deberias borrar esa linea.
Asi no tiene un rago maximo de conteo.
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.
Aca esta tu problema:
Saca el LIMIT 5. o pone mas.Código PHP:GROUP BY ".TABLE_PREFIX."user.userid
ORDER BY postcount DESC
LIMIT 5");
Si queres un limite de 100 mensajes : LIMIT 100.
Si no queres limite, elmina LIMIT 5.
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
PD: Ese límite que me hiciste quitar no se refiere al número de usuarios que han de parecer en el widget?Código 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();
Fijate esto:La verdad nose como funciona tu script.$percentage = round(($user[postcount]/$totalposts[postcount]) * 100);
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=D
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
PD: Postee esto antes en el apartado de problemas con vbulletin, pero creo que este apartado es más indicado.Código 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.': '.$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();
okz .
copia y pega esto :
Código 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.': '.$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();
Trata de buscar el post antes de pedir ayuda. Muchos usuarios postean las mismas preguntas que ya antes han sido respondidas.
Foro de Animes Y Mangas - Manual de vBulletin
No dare soporte por MP (use los foros para realizar tal accion)
No funciona.. sigue igual
Usa mejor este hack ya que hace la misma funcion que buscas :
Top posters widget type - vBulletin.org Forum
Aunque no sirva de mucho pero doy una solucion ...
Saludos !
Trata de buscar el post antes de pedir ayuda. Muchos usuarios postean las mismas preguntas que ya antes han sido respondidas.
Foro de Animes Y Mangas - Manual de vBulletin
No dare soporte por MP (use los foros para realizar tal accion)
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:
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?Código PHP:$starttime = mktime(0, 0, 0, date('n'), date('j'), date('Y')) - ((date('N')-1)*3600*24);
Para que sean los top posteadores de una semana remplaza la linea de NKC por esta:
Código PHP:<?
$startTime = mktime(0, 0, 0, date('n'), date('j'), date('Y')) - ((date('N')-1)*3600*24);
$endTime = mktime();
?>