Foros del Web » Programando para Internet » PHP »

como presentar este listado?

Estas en el tema de como presentar este listado? en el foro de PHP en Foros del Web. Tengo en la Base de datos un catalogo de tutoriales ordenados por categorias (PHP, AJAX Y ASP) y ademas estas categorias tienen puntajes, los usuarios ...
  #1 (permalink)  
Antiguo 28/05/2006, 01:17
 
Fecha de Ingreso: mayo-2006
Mensajes: 119
Antigüedad: 17 años, 10 meses
Puntos: 0
Exclamación como presentar este listado?

Tengo en la Base de datos un catalogo de tutoriales ordenados por categorias (PHP, AJAX Y ASP) y ademas estas categorias tienen puntajes, los usuarios pueden darle un valor al tutorial... 10, 5 o 1 punto.
Les esquematizo como tengo ordenada la tabla tutoriales:

Código:
categoria         puntaje	mes	
php		10		1
php		5		1
php		5		1
php		10		1
asp		10		1
asp		5		1
asp		1		1	
ajax		10		2
ajax		1		2
Y la pregunta que quería hacerles es como consultar a la Base mediante mysql para obtener la cantidad de votos que recibio un tutorial mostrando tambien en que puntaje, todo esto ordenado por categoria pero por MES.
no se como explicarles mejor ya que soy nuevo en esto y me pasaron el link hacia este foro para preguntar, pero bueno a ver si asi queda mas claro

necesito tener un listado del MES 1, de esta forma

Código:
Categoria   Puntaje Cantidad       
PHP	    10        2
PHP	    5         2
PHP	    1         0

Categoria  Puntaje Cantidad       
ASP	   10	  1
ASP	   5	  1
ASP	   1	  1

Categoria  Puntaje  Cantidad       
AJAX	   10	  0
AJAX	   1	  0
estoy probando con COUNT y group BY a ver si me sale...

gracias, espero que me puedan ayudar, saludos!!
  #2 (permalink)  
Antiguo 28/05/2006, 02:02
Usuario no validado
 
Fecha de Ingreso: agosto-2004
Mensajes: 74
Antigüedad: 19 años, 8 meses
Puntos: 0
Hola ale_g
dependera de como guardas los datos de las votaciones en tu base de datos. Con COUNT lo que estas haciendo es el contar el numero de registros totales o condicionados segun la clausula WHERE en tu BD.

Saludos
  #3 (permalink)  
Antiguo 28/05/2006, 08:15
 
Fecha de Ingreso: abril-2006
Mensajes: 62
Antigüedad: 18 años
Puntos: 0
estructura

Es un poco confusa tu pregunta, ¿seguro que posteaste toda la estructura de tus tablas?

Me parece que por lo menos en la tabla tutoriales te falta un campo que identifique cada tutorial, de lo contrario estarás computando los votos por categoría y no por tutorial.

Pero, si te sirve, si tengo en cuenta solamente esa tabla tal como la posteaste y el resultado que querés obtener deberías usar una consulta de esta forma:

Cita:
SELECT categoria, puntaje, COUNT(categoria) AS cantidad FROM tutoriales WHERE mes=1 AND categoria="PHP" GROUP BY puntaje ORDER BY puntaje DESC
y donde cambias los valores mes=1 y categoria="PHP" para obtener cada combinación de mes y categoría.

Te recomiendo que utilices algún frontend que te ayude a diseñar las consultas y después podes leer el código SQL para ir aprendiendo.
__________________
Guish
  #4 (permalink)  
Antiguo 28/05/2006, 08:36
 
Fecha de Ingreso: noviembre-2004
Mensajes: 159
Antigüedad: 19 años, 5 meses
Puntos: 0
Hola Amigo, para poder ayudarte mejor seria bueno que postearas la estructura de tus tablas.

Particularmente para no liarme con las fechas uso en mis tablas un campo date de Mysql.

Saludos

A. Acosta
  #5 (permalink)  
Antiguo 28/05/2006, 20:19
 
Fecha de Ingreso: mayo-2006
Mensajes: 119
Antigüedad: 17 años, 10 meses
Puntos: 0
Sonrisa Perfecto!

Hola, gracias por las respuestas tan rapidas!
Guish, me resulto tu consulta, exactamente buscaba eso, por categorias asi que solo tube que hacer unas modificaciones y funciono justo como quería, muchas gracias hermano!
les dejo el codigo final:

Código PHP:
<?
$categorias
=mysql_query("SELECT DISTINCT categoria FROM tutoriales where mes=1");
$i=0;
while(
$cat=mysql_fetch_row($categorias))
{
$i++;
$fac2=mysql_query("SELECT categoria, puntaje, COUNT(categoria) AS total FROM tutoriales WHERE mes=1 AND categoria='$cat[0]' GROUP BY puntaje ORDER BY puntaje DESC ");
?>
<table width="30%" border="0" cellpadding="0" cellspacing="0">
    <tr valign="middle" class="listaheader">
          <td width="10%" align="center" valign="middle" bgcolor="#EAEAEA">Categor&iacute;a</td>
          <td width="10%" align="center" valign="middle" bgcolor="#EAEAEA">puntaje</td>          
          <td width="10%" align="center" valign="middle" bgcolor="#EAEAEA">cantidad</td>
    </tr>

<?
    $a
=-1;
    while(
$row mysql_fetch_array($fac2))
{
$a++;
?><tr  class="registros" onmouseover='this.style.background="white"; this.style.border="1";' onmouseout='this.style.background="none"'>
        <td align="center" valign="middle"><?=$row[categoria]?></td>
        <td align="center" valign="middle"><?=$row[puntaje]?> $</td>
        <td align="center" valign="middle"><?=$row[total]?> pins</td>
</tr>
<? }  } ?>
</table>
Saludos! y gracias nuevamente.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:48.