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

Ayuda con codigo para registrar clicks en bd

Estas en el tema de Ayuda con codigo para registrar clicks en bd en el foro de ASP Clásico en Foros del Web. Hola, mi cliente quiere poder tener un "ranking" de las notas mas vistas por sus usuarios. Como se podria hacer para que al clickear en ...
  #1 (permalink)  
Antiguo 14/02/2006, 14:44
 
Fecha de Ingreso: enero-2002
Ubicación: Mar del Plata
Mensajes: 243
Antigüedad: 23 años, 4 meses
Puntos: 0
Como puedo registrar clicks en la BD sin afectar el rendimiento ?

Hola, mi cliente quiere poder tener un "ranking" de las notas mas vistas por sus usuarios.

Como se podria hacer para que al clickear en un link para ver una determinada nota ademas de verse esta se registre ese click en la base de datos (MySql) ?

Mi temor ademas es que esto sea muy pesado o peligroso para la estabilidad de la base de datos. Me pregunto que sucederia si 2 o mas clientes hacen click a la vez en una misma nota? No podria haber errores ?

Se les ocurre alguna solucion ?

Gracias
  #2 (permalink)  
Antiguo 14/02/2006, 14:54
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
pues... lo que ocurriría es que sumaría un click por cada persona que lo hizo!
no es pesado ni peligroso, simplemente hacés un update tabla set campo_clicks = campo_clicks + 1 where nota = request.querustring("nota")

que yo sepa, no hay otra alternativa
__________________
...___...
  #3 (permalink)  
Antiguo 14/02/2006, 15:03
 
Fecha de Ingreso: enero-2002
Ubicación: Mar del Plata
Mensajes: 243
Antigüedad: 23 años, 4 meses
Puntos: 0
Gracias por tu ayuda....Me podrias explicar un poco mas el codigo ? No es que pretenda que lo hagas por mi, simplemente que no me queda claro con el ejemplo tan corto...

Como y donde debo actualizar ese click, todo el proceso se haria en la pagina de destino o tendria que agregar una pagina intermedia entre el origen y el destino que se encargue de la suma ?

Gracias de nuevo
  #4 (permalink)  
Antiguo 14/02/2006, 16:17
Avatar de ElAprendiz  
Fecha de Ingreso: enero-2002
Ubicación: Maipu, Chile
Mensajes: 3.706
Antigüedad: 23 años, 3 meses
Puntos: 2
ej

al visitar la pagina "nota.asp?id_nota=1"

primero debes extraer la cantidad de clics

sql="select clics from tabla where id_nota="&id_nota&""
set rs=conn.execute(sql)
clics=rs(clics)+1

luego actualizas la tabla
sql="update tabla set clics="&clics&" where id_nota="&id_nota&""
set rsupdate=conn.execute(sql)



saludos
__________________
Manual de ASP Avanzado ;-)
  #5 (permalink)  
Antiguo 15/02/2006, 08:39
 
Fecha de Ingreso: enero-2002
Ubicación: Mar del Plata
Mensajes: 243
Antigüedad: 23 años, 4 meses
Puntos: 0
MIL GRACIAS POR TU AYUDA....

Estoy probando tu codigo, pero me da el siguiente error:

Microsoft VBScript runtime error '800a01a8'

Object required: 'conn'
/artists3_v.asp, line 385


Debo definir conn ? Disculpa que mis conocimientos sean tan basicos, pero no se como seguir.

Los votos o clicks los guardo en una tabla que se llama "fotogatti.top_artists", el recordset se llama "num_votes", el campo numerico que quiero que registre el click se llama "voto". En vez de "id", el campo que define que registro se actualiza se llama "order_name".
Aqui debajo te adjunto el codigo del recordset num_votes y debajo tu script modificado:

<%
Dim num_votes
Dim num_votes_numRows

Set num_votes = Server.CreateObject("ADODB.Recordset")
num_votes.ActiveConnection = MM_Eomtest_STRING
num_votes.Source = "SELECT * FROM fotogatti.top_artists WHERE order_name = '" + Replace(num_votes__MMColParam, "'", "''") + "'"
num_votes.CursorType = 0
num_votes.CursorLocation = 2
num_votes.LockType = 1
num_votes.Open()

num_votes_numRows = 0
%>
<%
sql="select voto From fotogatti.top_artists where order_name="&order_name&""
set rs=conn.execute(sql)
voto=rs(voto)+1
sql="update fotogatti.top_artists set order_name="&order_name&", voto="&voto&""
set rsupdate=conn.execute(sql)
%>
Te agradecere cualquier ayuda que me puedas dar.

MIL GRACIAS DE NUEVO !

Última edición por roroland; 15/02/2006 a las 09:12
  #6 (permalink)  
Antiguo 16/02/2006, 08:16
 
Fecha de Ingreso: enero-2002
Ubicación: Mar del Plata
Mensajes: 243
Antigüedad: 23 años, 4 meses
Puntos: 0
Ayuda con codigo para registrar clicks en bd

Hola a todos, estoy probando un codigo el cual me escribio otro usuario del foro (no logro contactarme con el para que me ayude).
Este codigo lo necesito para poder sumar un click en la columna "voto" de mi tabla cuando se ve una noticia determinada en el sitio. Para luego mas adelante tener un ranking de lo mas visto del sitio.
El codigo lo puse como esta abajo pero me da error, creo que es simple pero no se como arreglarlo, el error en el navegador es el siguiente:

Microsoft VBScript runtime error '800a01a8'

Object required: 'conn'
/artists3_v.asp, line 385


Debo definir conn ? Disculpen que mis conocimientos sean tan basicos, pero no se como seguir.

Los votos o clicks los guardo en una tabla que se llama "top_artists", el recordset se llama "num_votes", el campo numerico que quiero que registre el click se llama "voto". En vez de "id", el campo que define que registro se actualiza se llama "order_name".
Aqui debajo les adjunto el codigo del recordset "num_votes" y debajo el script modificado que me da error:

<%
Dim num_votes
Dim num_votes_numRows

Set num_votes = Server.CreateObject("ADODB.Recordset")
num_votes.ActiveConnection = MM_Eomtest_STRING
num_votes.Source = "SELECT * FROM fotogatti.top_artists WHERE order_name = '" + Replace(num_votes__MMColParam, "'", "''") + "'"
num_votes.CursorType = 0
num_votes.CursorLocation = 2
num_votes.LockType = 1
num_votes.Open()

num_votes_numRows = 0
%>
<%
sql="select voto From fotogatti.top_artists where order_name="&order_name&""
set rs=conn.execute(sql)
voto=rs(voto)+1
sql="update fotogatti.top_artists set order_name="&order_name&", voto="&voto&""
set rsupdate=conn.execute(sql)
%>


Agradezco mucho cualquier ayuda que me puedan dar...
  #7 (permalink)  
Antiguo 16/02/2006, 09:21
Avatar de FiNo  
Fecha de Ingreso: octubre-2004
Ubicación: Costa Rica
Mensajes: 265
Antigüedad: 20 años, 7 meses
Puntos: 1
http://www.forosdelweb.com/showthread.php?t=371133

Te da error porque ese conn se refiere a la conexion con la base de datos, la cual no has definido, te recomiento que leas esto,

http://www.webestilo.com/asp/asp07b.phtml
__________________
3S-CRM
  #8 (permalink)  
Antiguo 16/02/2006, 09:53
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
no me gusta el código que genera macromedia... no estoy seguro, pero parecería que la conexión es num_votes.ActiveConnection. De ser así, intentá con el siguiente código


Código:
<%
Dim num_votes
Dim num_votes_numRows

Set num_votes = Server.CreateObject("ADODB.Recordset")
num_votes.ActiveConnection = MM_Eomtest_STRING
num_votes.Source = "SELECT * FROM fotogatti.top_artists WHERE order_name = '" + Replace(num_votes__MMColParam, "'", "''") + "'"
num_votes.CursorType = 0
num_votes.CursorLocation = 2
num_votes.LockType = 1
num_votes.Open()

num_votes_numRows = 0

num_votes.ActiveConnection.Execute("update fotogatti.top_artists set voto=voto+1 WHERE order_name="&Replace(num_votes__MMColParam, "'", "''")&")
%>
__________________
...___...
  #9 (permalink)  
Antiguo 16/02/2006, 12:29
 
Fecha de Ingreso: enero-2002
Ubicación: Mar del Plata
Mensajes: 243
Antigüedad: 23 años, 4 meses
Puntos: 0
Hola, me da el siguiente error...


Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' Greg' at line 1

/artists3_v.asp, line 384


Aclaro algo importante, donde dice 'Greg' se refiere al artista que estoy tratando de modificar, porque yo en este caso no uso el ID numerico para identificar que nota actualiza sino otro campo que tambien es unico porque es un nombre que no se repite en la tabla que en este caso se refiere a ese nombre 'greg'.
Sera por esto que me da este error ? Deberia usar el campo ID numerico para que el codigo funcione ?

Gracias de nuevo
  #10 (permalink)  
Antiguo 16/02/2006, 12:53
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
ah, eso porque supuse que el campo order_name era numérico... no sé por que...

Código:
num_votes.ActiveConnection.Execute("update fotogatti.top_artists set voto=voto+1 WHERE order_name='"&Replace(num_votes__MMColParam, "'", "''")&"'")
probá ahora
__________________
...___...
  #11 (permalink)  
Antiguo 17/02/2006, 08:17
 
Fecha de Ingreso: enero-2002
Ubicación: Mar del Plata
Mensajes: 243
Antigüedad: 23 años, 4 meses
Puntos: 0
Sonrisa

GENIO !!!

PARECE QUE FUNCIONA PERFECTO AHORA....TE AGRADEZCO MUCHISIMO

NO QUIERO ABUSAR PERO EN CASO QUE EL CAMPO QUE QUIERA ACTUALIZAR SEA NUMERICO, CUAL SERIA EL SCRIPT CORRECTO. POR EJEMPLO SI FUERA UN CAMPO ID ?

GRACIAS DE NUEVO POR TU AYUDA
  #12 (permalink)  
Antiguo 17/02/2006, 11:25
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 2 meses
Puntos: 535
el mismo de arriba, pero quitándole los apóstrofes:

SQL = "SELECT campo FROM tabla WHERE campoNumerico = 3"
SQL = "SELECT campo FROM tabla WHERE campoText = '3'"

Notás la diferencia?
Ahora lo mismo, pero conteniendo el valor 3 en una variable y concatenándola a la sentencia SQL:

variable = 3
SQL = "SELECT campo FROM tabla WHERE campoNumerico = " & variable
SQL = "SELECT campo FROM tabla WHERE campoText = '"& variable &"'"

a grandes rasgos...

Te puse el ejemplo para un SELECT, en el WHERE, pero aplica el mismo concepto para una UPDATE o un INSERT:

campo = string -> encerramos los valores (literales o de variables) entre apóstrofes.
campo = numerico -> no encerramos los valores entre apóstrofes.
__________________
...___...
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 09:27.