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

Como calificar un articulo / nota

Estas en el tema de Como calificar un articulo / nota en el foro de ASP Clásico en Foros del Web. Saludos, saludos a todos. ¿Como estan? Pues tengo la siguiente pregunta. Estoy desarrollando un sitio en ASP. Me va bastante bien, trabajando con base de ...
  #1 (permalink)  
Antiguo 12/12/2005, 16:09
 
Fecha de Ingreso: abril-2002
Mensajes: 83
Antigüedad: 22 años, 2 meses
Puntos: 1
Como calificar un articulo / nota

Saludos, saludos a todos. ¿Como estan? Pues tengo la siguiente pregunta. Estoy desarrollando un sitio en ASP. Me va bastante bien, trabajando con base de datos y todo eso.

El asunto es que esta pagina consta de articulos que se iran agregando mensualmente, y quisiera crear un sistema de evaluacion para que los usuarios digan que tal les pareció el articulo.

Supongamos que quiero evaluar del 1 al 5, siendo uno la calificacion mas baja y 5 la mas alta, ¿como puedo crear una aplicacion en ASP que sirva para evaluar un articulo, almanece (en base de datos o fichero de texto) la cantidad de personas que lo han calificado, el puntaje promedio de los articulos y muestre x cantidad de estrellas, dependiendo del puntaje que lleve el articulo en cuestion?

Muchas gracias de antemano por la ayuda.

Eduardo
  #2 (permalink)  
Antiguo 12/12/2005, 16:31
Avatar de tomchat  
Fecha de Ingreso: septiembre-2005
Mensajes: 231
Antigüedad: 18 años, 9 meses
Puntos: 0
Bueno si quieres evaluar un articulo existen varias formas aqui una

Agrega un campo evaluar y este ira grabando toda la calificación por cada registro por ejemplo: registro 1 30 puntos, 2 60 puntos asi. Claro que tienes que tener en tu interfaz las opciones correspondiente para que el usuario pueda dar la calificación correspondiente a cada articulo.

Saludos.... tom.
  #3 (permalink)  
Antiguo 13/12/2005, 02:59
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 6 meses
Puntos: 144
Yo lo tengo implementado en un sitio que estoy acabando (de uso presonal), donde hago lo siguiente:

Al pie del artículo, creas un formulario, con un submit, que sirve para votar. Cuando se pulsa el botoncillo, se recarga la misma página de ese artículo en cuestión (hay un select para mostrar los puntos que el usuario le concede al artículo). Una vez recargada la página, ya no aparece el formulario ni por supuesto el botón de valorar el artículo (usa un condicional, si se ha creado la sesión para ese artículo -de la que te hablo más abajo-, para que no muestre el form).

En la base de datos, tengo 2 campos: uno llamado votos y otro llamado vecesvotado (ambos numéricos). Cada vez que un usuario pincha en un botón de votar, se suma un hit en el campo vecesvotado, y se suman los puntos (votos) que el usuario ha concedido a ese artículo (de 1 a 5, como tú quieres hacerlo). Luego creo una sesión para ese artículo/usuario (en función de la id del artículo), para que no pueda votarlo durante su actual visita (no me importa que lo voten en visitas posteriores, aunque si quieres evitar eso, podrías hacerlo con cookies, o mejor aún grabando su ip, para evitar posibles votaciones en días posteriores de esa misma ip, ...teniendo en cuenta los problemas que puedes tener, al existir ip's variables).

Ejemplo: un usuario le da al art. 1, un voto con 3 puntos. Otro usuario le da a ese mismo artículo otro voto con 5 puntos. Resumen: 2 (1+1) votos recibidos. Puntuación: 8 puntos (3 + 5). Con lo cual el artículo tiene una valoración media de 4 puntos (8/2). Es decir, la media la obtienes de esos dos campos: votos/vecesvotado. Si para mostrar la media, usas la función CInt, tendrás que arreglar el valor mostrado, porque te puedes encontrar con esto (sacado de la ayuda de Microsoft): "CInt difiere de las funciones Fix e Int, que truncan, más que redondean, la parte fraccional de un número. Cuando la parte fraccional es exactamente 0,5 la función CInt la redondea siempre al número par más cercano. Por ejemplo, 0,5 se redondea a 0 y 1,5 se redondea a 2."

Editado: Para mostrar las estrellas, te puedes crear 5 gifs (uno con una estrella, otro con 2, ...hasta 5), llamados por ejemplo estrella1.gif, estrella2.gif, ...estrella5.gif. En lugar de presentar la media como un número (en el ejemplo era 4), la muestras así:
Código:
<%
votos = rs("votos")
vecesvotado = rs("vecesvotado")
media = CInt(votos/vecesvotado) 'aquí no hago el arreglo del que te hablaba, por ser más breve
%>
Valoraci&oacute;n media: <img src="imagenes/estrella<%=media%>.gif" alt="" width="20" height="10">
SalU2

Última edición por 3pies; 13/12/2005 a las 05:18
  #4 (permalink)  
Antiguo 13/12/2005, 07:51
 
Fecha de Ingreso: abril-2002
Mensajes: 83
Antigüedad: 22 años, 2 meses
Puntos: 1
En serio, muchisimas gracias. Me has ayudado bastante. Solo tengo una duda: lo de crear una sesion para que la persona vuelva a votar en esa misma receta me encantó. Pero debo admitir que no se como hacerlo.

Podrias enseñarme como? Muchas gracias, en serio gracias por tu ayuda.
  #5 (permalink)  
Antiguo 13/12/2005, 08:51
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 6 meses
Puntos: 144
Para que funcionen las sesiones, el usuario debe tener habilitadas las cookies. El uso de sesiones es tan sencillo como hacer esto:
Código:
<%session("nombre")="yo"%>
En cualquier página puedes usar la sesión, para lo que sea. Por ejemplo, la muestras así:
Código:
<%Response.write session("nombre")%>
Otro ejemplo:
Código:
<%
session("usuario_validado")=true
if session("usuario_validado")<>true then
    response.redirect "login.asp"
else
    response.redirect "acceso_permitido.asp"
end if
%>
Para el ejemplo anterior, cuando el usuario pulse el botón de valorar el artículo, redireccionas a esa misma página. Como tendrás un valor devuelto por el formulario, puedes hacer algo como esto:

Código:
<%
'El value del botón "votar" es "si"
if request.form("votar") = "si" then
  'Sumas un hit en tus votaciones de la BD
  ...
  'Sumas el valor de la votación (de 1 a 5)
  ...
  'le pones la sesión como true
  session(rs("id_articulo")) = true
end if
%>
Si el usuario no ha votado, le muestras el formulario de votación (evidentemente debes tener el recordset):

Código:
<%
if session(rs("id_articulo")) <> true then
  'aquí pones el código para presentar el formulario de votación
end if
%>
Editado: Veo que lo tuyo no son artículos de opinión lo que van a votar, sino recetas de cocina. Coincidencias de la vida, ...lo mío también ;)

Por cierto, si alguien vota tu receta, cuando se cargue la página de nuevo, ya sin el formulario de votación, puede ocurrirte que si pulsan F5 (o recargan la página), se grabe un nuevo hit en las votaciones, y una valoración a esa receta (porque sigue recogiendo el valor del formulario). Solo debes controlar alguna cosilla más (session(rs("id_articulo")) <> true), y puede que alguna otra cosa más, para evitar eso.

Última edición por 3pies; 13/12/2005 a las 09:53
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

SíEste tema le ha gustado a 3 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 01:33.