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

método onclic de una etiqueta

Estas en el tema de método onclic de una etiqueta en el foro de ASP Clásico en Foros del Web. Hola, Tengo un listado que saco de una base de datos, en la que al hacer click en un registro, quiero que me actualice su ...
  #1 (permalink)  
Antiguo 04/11/2004, 04:42
 
Fecha de Ingreso: mayo-2004
Mensajes: 35
Antigüedad: 21 años
Puntos: 0
método onclic de una etiqueta

Hola,

Tengo un listado que saco de una base de datos, en la que al hacer click en un registro, quiero que me actualice su campo contador "visitas". el código que he hecho es este:

<% While ((Repeat1__numRows <> 0) AND (NOT Lista.EOF)) %>
<tr>
<td>
<font size="2" face="Arial, Helvetica, sans-serif"><a href="Archivo/<%=Lista.Fields.Item("Archivo").Value%>" target=_blank
onClick="<%
dim text
Set editCmd = Server.CreateObject("ADODB.Command")
editCmd.ActiveConnection = MM_BV_STRING
text="update títulos set visitas=visitas+1 where título='" & Lista.Fields.Item("Título").Value & "'"
editCmd.CommandText = text
editCmd.Execute
editCmd.ActiveConnection.Close
%>"><%=(Lista.Fields.Item("Título").Value)%></a></font>
</td>
<td><font size="2" face="Arial, Helvetica, sans-serif"><%=(Lista.Fields.Item("Editor").Value)%></font></td>
<td><font size="2" face="Arial, Helvetica, sans-serif"><%=(Lista.Fields.Item("Año").Value)%></font></td>
<td><font size="2" face="Arial, Helvetica, sans-serif"><%=(Lista.Fields.Item("Tema").Value)%></font></td>
</tr>
<%
Repeat1__index=Repeat1__index+1
Repeat1__numRows=Repeat1__numRows-1
Lista.MoveNext()
Wend %>

Pero me pasa que me actualiza todos los campos sólo con cargarse la página, no al hacer "clic".

¿Cómo hago para que ese código sólo se ejecute al hacer click? muchas gracias.
  #2 (permalink)  
Antiguo 04/11/2004, 05:11
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 22 años, 8 meses
Puntos: 16
mmm yia ... lo que pasa es que tienes un error de concepto al pensar en que el asp y el javascript se van a ejecutar al mismo tiempo.

El asp se ejecuta en el servidor antes de que la pagina sea generada.
Y el Java script se ejecuta en el cliente despues de que la pagina alla llegado al computador que la solicitó.

Por lo tanto lo que esta haciendo el servidor al leer tu codigo es interpretar todo el ASP existente y ejecutar dichas instrucciones. y no toma encuenta lo que le digas que haga en JAva Script, ya queesas instrucciones son para el browser.

una vez que llega el html procesado a el cliente, el interprete del browser leera las instrucciones javascript, pero en la parte onclick espera una instruccion en javascript. y no una en asp..de hecho si te fijas en el codigo generado la parte de onclick del link que haces referencia aparecera vacio.

  #3 (permalink)  
Antiguo 04/11/2004, 05:25
 
Fecha de Ingreso: mayo-2004
Mensajes: 35
Antigüedad: 21 años
Puntos: 0
Um, claro, ya veo.

Yo de java script mas bien nada. ¿podrías decirme cómo escribir las líneas del update en java script?

Gracias.
  #4 (permalink)  
Antiguo 04/11/2004, 09:40
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
Cita:
¿Cómo hago para que ese código sólo se ejecute al hacer click?
Haciendo un enlace a otra página y pasando el ID del registro. Allí hacés el UPDATE y luego hacés un Response.Redirect(Request.ServerVariables("HTTP_RE FERER")) para volver a donde estabas. Si te das cuenta, el servidor se debe "enterar" de cuál registro actualizar... entonces no queda otra que volver a hacer una llamada al servidor para que este efectúe el proceso
__________________
...___...
  #5 (permalink)  
Antiguo 05/11/2004, 02:49
 
Fecha de Ingreso: mayo-2004
Mensajes: 35
Antigüedad: 21 años
Puntos: 0
Vale, he hecho lo que me aconsejas y consigo que actualice el campo contador.

Pero... ahora tengo dos problemas:
1) No consigo que me devuelva a la página desde la que le llamo. El código es el siguiente:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="Connections/BV.asp" -->
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<% dim text
Set editCmd = Server.CreateObject("ADODB.Command")
editCmd.ActiveConnection = MM_BV_STRING
text="update títulos set visitas=visitas+1 where título='" & (Request.QueryString("Tit")) & "'"
editCmd.CommandText = text
editCmd.Execute
editCmd.ActiveConnection.Close %>
<body>
HOLA
<% Response.Redirect(Request.ServerVariables("HTTP_RE FERER")) %>
</body>
</html>

Me da error en la línea del redirect, diciendo:
objeto Response error 'ASP 0158 : 80004005'
Falta dirección URL
/productos/Bvirtual/contador.asp, línea 17
Se requiere una dirección URL.

2) Se ejecuta el onclick, pero no el enlace del documento en la primera página. El código quedaba así:
<a href="Archivo/<%=Lista.Fields.Item("Archivo").Value%>" target=_blank onClick="MM_goToURL('parent','contador.asp?Tit=<%= (Lista.Fields.Item("Título").Value)%>');return document.MM_returnValue"><%=(Lista.Fields.Item("Tí tulo").Value)%></a>
  #6 (permalink)  
Antiguo 05/11/2004, 09: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
ah, porque si llamás a lla página mediante un onclick, el HTTP_REFERER es nulo.
En vez de un onclick usá un enlace normal y el contador lo llevás en la misma página de destino
__________________
...___...
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 06:46.