Foros del Web » Programando para Internet » ASP Clásico »

Ranking

Estas en el tema de Ranking en el foro de ASP Clásico en Foros del Web. Bien, pretendo hacer un ranking en mi web, en funcion de las veces que han añadido mensajes al foro, han escrito alguna seccion, o lo ...
  #1 (permalink)  
Antiguo 23/06/2003, 09:47
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 21 años, 6 meses
Puntos: 0
Ranking

Bien, pretendo hacer un ranking en mi web, en funcion de las veces que han añadido mensajes al foro, han escrito alguna seccion, o lo que sea.

Todos los usuarios los tengo en una DB, y en ella tengo sus ID´s. Luego, en la DB de la web, en cada seccion, tengo la ID del autor, asi que lo unico que tengo que hacer es contar las veces que han añadido algo, y ya esta. Asi consigo saber el numero total de aportaciones que han hecho.

Esto en si no es ningun problema, pero si que lo es si quiero ordenar esos usuarios de mayor a menor numero de aportaciones...

Os pongo el codigo que tengo ahora mismo (y es que así me lo muestra todo tal y como estan en la DB ... y no se como hacer para ordenarlos...)

Código:
<%
strSQL = "SELECT MEMBER_ID FROM FORUM_MEMBERS"
 Set MRD = my_conn.Execute(strSQL)
  Do While NOT MRD.EOF or MRD.BOF
 
    intUserID = MRD("MEMBER_ID")

' ** Cogemos el número de posts que tiene...
   strSQL = "SELECT M_POSTS FROM FORUM_MEMBERS WHERE MEMBER_ID=" & intUserID
    Set MRP = my_conn.execute(strSQL)
     intPosts = MRP("M_POSTS")
      intZAPosts = cInt(cInt(intPosts)) ' ** Modificador del valor de los posts..
       MRP.Close

   strSQL2 = "SELECT COUNT(ID) AS intSecc FROM GAMES_SECC WHERE AUTOR_ID=" & intUserID
     Set MRS = Server.CreateObject("ADODB.Recordset")
      MRS.Open strSql2, MyConn
       intSecc = MRS("intSecc")
        intZASecc = cInt(intSecc) * 50 
         MRS.Close
   strSQL3 = "SELECT Count(ID) AS intLyric FROM LYRICS_LYRICS WHERE AUTOR_ID=" & intUserID
     Set MRL = Server.CreateObject("ADODB.Recordset")
      MRL.Open strSQL3, MyMensConn
       intLyric = MRL("intLyric")
        intZALyr = cInt(intLyric) * 5 
         MRL.Close
     
    response.write getName(intUserID) & "<br>"
	response.write intZALyr & " "
    response.write intZASecc & " "
	response.write intZAPosts & "<br>"

   MRD.MoveNext
  Loop
 MRD.Close 
%>
Espero que me puedan ayudar
__________________
Tu portal de manga y anime.

Última edición por meru-kun; 23/06/2003 a las 10:53
  #2 (permalink)  
Antiguo 23/06/2003, 10:18
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 5 meses
Puntos: 4
De acuerdo

por ejemplo:

strSQL = "SELECT M_POSTS FROM FORUM_MEMBERS WHERE MEMBER_ID=" & intUserID & " ORDER BY MEMBER_ID ASC"

esto te ordenara los registros por ID de forma ascendente..
los puedes colocar de forma descendente con DESC.

espero sea lo qeu buscas.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #3 (permalink)  
Antiguo 23/06/2003, 10:52
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 21 años, 6 meses
Puntos: 0
Si,eso lo se :P. Pero con eso lo unico que hago es ordenar a los usuarios por el orden en el que se han registrado.

Yo quieo ordenarlos por el total de aportaciones, es decir, por las variables que estan en negrita ^^
__________________
Tu portal de manga y anime.
  #4 (permalink)  
Antiguo 23/06/2003, 10:55
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 21 años
Puntos: 3
En mi modestia opinión creo que te interesaría crear en tu tabla de usuarios un campo en el que controles les veces que intervienen dichos usuarios, es decir:
- Pepe tiene en su campo M_POSTS 15 intervenciones.
- En la siguiente intervención el valor de intervenciones y le sumas 1 más.
- Haces un update de ese campo, sumándole la nueva intervención.

Se esta manera sólo tendrás que hacer una consulta del tipo
strSQL ="Select MEMBER_ID, M_POSTS FROM FORUM_MEMBERS ORDER BY M_POSTS ASC"
Con esta consulta sacarías ordenada ascendentemente la lista de usuarios que intervienen en los foros.

De la manera que lo expones tú añadirías demasiados procesos cada vez que quieres sacar cuántas veces ha intervenido cada usuario, es decir: recorrer toda la base de datos, contar sus intervenciones, ordenadarlas...

Como mejor prefieras, es sólo una sugerencia.

Saludos
  #5 (permalink)  
Antiguo 26/06/2003, 10:13
Avatar de meru-kun  
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 854
Antigüedad: 21 años, 6 meses
Puntos: 0
Vale. Como eso ya no lo puedo hacer...

¿Como puedo ordenar en funcion de una variable? (eso digo yo que se podrá, poner primero las variables de maytor numero y eso)
¿Puedo hacer una especie de Campo temporal?

Ayudaaa
__________________
Tu portal de manga y anime.
  #6 (permalink)  
Antiguo 26/06/2003, 11:38
Avatar de Cauchemar  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 137
Antigüedad: 21 años
Puntos: 0
strSQL2 = "SELECT COUNT(ID) AS intSecc FROM GAMES_SECC WHERE AUTOR_ID=" & intUserID &" order by intSecc"

eso deberia funcionar, puedes ordenar por el alias que des a un count, el problema seria si recogieras varios campos... tendrias que hacer un group by y demas...
__________________
La utopía está en el horizonte: cuando yo camino dos pasos ella se aleja dos pasos. Yo camino diez pasos y ella está diez pasos más lejos ¿Para qué sirve la utopía?. Sirve para eso: para caminar.
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 11:21.