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

Más complicado

Estas en el tema de Más complicado en el foro de ASP Clásico en Foros del Web. Tabla de una Base de Datos dos Campos : contador_activos_db ( numérico entero y clave principal), activos_db (nmérico entero) La vamos a utilizar para controlar ...
  #1 (permalink)  
Antiguo 25/01/2004, 08:39
 
Fecha de Ingreso: noviembre-2002
Ubicación: Elche
Mensajes: 548
Antigüedad: 21 años, 6 meses
Puntos: 0
Más complicado

Tabla de una Base de Datos

dos Campos : contador_activos_db ( numérico entero y clave principal), activos_db (nmérico entero)

La vamos a utilizar para controlar usuarios activos sin necesidad del Global.asa.

entramos en la página y en el body ... onload="sumar_activos();"

esto es...


function sumar_activos(){
<%

On Error Resume Next
Set Conexion = CreateObject("ADODB.Connection")
Conexion.Open="shiro"
strSQL = "SELECT * FROM activos WHERE contador_activos_db like 1 "
Set miConexion = Conexion.Execute(strSQL)


if miConexion("contador_activos_db")="null" then

miConexion.Close
Conexion.Close
Set miConexion = Nothing
Set Conexion = Nothing

On Error Resume Next
Set Conexion = CreateObject("ADODB.Connection")
Conexion.Open="shiro"

strSQL = "INSERT INTO activos (contador_activos_db, activos_db) VALUES ('1','1')"

Set miConexion = Conexion.Execute(strSQL)
activos=miConexion("activos_db")
%>
document.getElementById('contador_activos').innerH TML = '<% response.write activos %>';
<%
miConexion.Close
Conexion.Close
Set miConexion = Nothing
Set Conexion = Nothing
else

strSQL = "SELECT * FROM activos WHERE contador_activos_db like 1 "
Set miConexion = Conexion.Execute(strSQL)

acumular=miConexion("activos_db")
sumar = acumular + 1


strSQL = "UPDATE activos SET activos_db=" & sumar & " WHERE contador_activos_db=1"
Set miConexion = Conexion.Execute(strSQL)
activos=miConexion("activos_db")
%>
document.getElementById('contador_activos').innerH TML = '<% response.write activos %>';
<%
miConexion.Close
Conexion.Close
Set miConexion = Nothing
Set Conexion = Nothing
End If %>



}


He probado siete mil maneras... pero vamos, funciona va sumando y controlamos el tema... ahora bien

Le pongo en el body unload="restar_activos();"

con este código ...


function restar_activos(){

<%
On Error Resume Next
Set Conexion = CreateObject("ADODB.Connection")
Conexion.Open="shiro"
strSQL = "SELECT * FROM activos WHERE contador_activos_db like 1 "
Set miConexion = Conexion.Execute(strSQL)

restar=miConexion("activos_db") - 1
strSQL = "UPDATE activos SET activos_db=" & restar & " WHERE contador_activos_db=1"
Set miConexion = Conexion.Execute(strSQL)
miConexion.Close
Conexion.Close
Set miConexion = Nothing
Set Conexion = Nothing
%>


Y entonces cuando sumo no me graba...

Ya se que es un rollo pero llevo dos dias con lo mismo y no se donde puede estar el error.

He probado, incluso a hacerlo alrevés pero el resultado es el mismo.

saludos
  #2 (permalink)  
Antiguo 25/01/2004, 11:28
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 341
Antigüedad: 20 años, 9 meses
Puntos: 4
El problema es el Javascript

Hola Elig: mmm...

El problema que veo a simple vista es que estas usando funciones Javascript para llamar al script ASP .

Por ello el ASP no se esta ejecutando.

Recuerda que el ASP es un Script a nivel de servidor y el Javascript se ejecuta a nivel de cliente.

Otra cosa, realmente no veo necesario contar usuarios a traves de BD, si los usuarios no relizan un login previamente.

De todas formas yo programe un sistemita parecido a lo que quieres hacer en PHP pero no es complicado para pasarlo a ASP .

Si los usuarios que tu quieres contar no hacen un previo login, te recomiendo el Global.asa por lo sencillo que es contar usuarios así.

------------------------------------------------------------------------------------
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.
  #3 (permalink)  
Antiguo 25/01/2004, 13:44
 
Fecha de Ingreso: noviembre-2002
Ubicación: Elche
Mensajes: 548
Antigüedad: 21 años, 6 meses
Puntos: 0
Claro que realizo un Login previamente. El tema también es no usar el global.asa... por diversas razones. Los script de javascript y ASP me están funcionando perfectamente en las altas, bajas, actualizaciones de los registros de cualquier BD tanto en ACCESS como en SQL. De hecho cuando ejecuto sólo una de las dos funciones realiza correctamente la operación de suma o resta, según sea el caso. Incluso llegué a sumar el usuario en la página anterior, cuando se pulsa el botón para entrar en esta págino y ...
ni flores.

Bueno gracias por tu colaboración.
  #4 (permalink)  
Antiguo 25/01/2004, 20:48
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 341
Antigüedad: 20 años, 9 meses
Puntos: 4
No entiendo como pueden funcionar

Bueno Yo me refiero exactamente al codigo que tu señalastes en tu primer post.

(Difiero de tu llamada al script ASP con javascript), Realmente lo que no entiendo como se puede ejecutar los script's ASP, si estos son llamados con javascript que además la funcion javascript q' llama al ASP se ejecuta en el body del documento (html).

Por favor mandame todo el codigo de esa página para poder entender como te funciona !
------------------------------------------------------------------------------------

Te sugiero que pienses en:

¿Cómo desconectar al usuario cuando este no se desconecte de tu aplicación correctamente?

Ejemplo:

- Si el usuario cierra la ventana del explorador sin hacer click en el logout.

- Si al usuario se le queda colgada la Maquina.

R: Creas un campo en la tabla que capture la hora en el cual el usuario realizó el login, además también debes crear una función en la cual si el usuario realiza otra petición a tu aplicación esta función extienda el tiempo en la BD.

También debes crear un script que constantemente revise los usuarios conectados y que verifique el tiempo de la sesión en la BD, y que a su vez compruebe:

Si el usuario tiene el tiempo en la BD > que la hora actual

El usuario esta conectado y le extiendes el tiempo NOW() + 600 seg.

Si el usuario tiene un tiempo < que la actual

A caducado el tiempo de sesion del Usuario (Lo borras de la db y lo desconectas)

Creo que con esto te doy una minima idea de lo que debes desarrollar para que puedas ver realmente los usuarios que estan conectados.
------------------------------------------------------------------------------------
Disculpa si no entiendo como funciona tus funciones.
pero eso tengo que verlo.
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.
  #5 (permalink)  
Antiguo 26/01/2004, 07:41
 
Fecha de Ingreso: noviembre-2002
Ubicación: Elche
Mensajes: 548
Antigüedad: 21 años, 6 meses
Puntos: 0
No se si te servirá esto para comprobar como o hago...

Recoge el usuario leido en la cookie y se mandado a
direcccion?username=loquesea.

busca usuarioen la BD, lee campo de control y devuelve un valor alfanumérico de 6 dig.. Con ello controlamos páginas posteriores sólo se acceso users. Así evitamos utilizacion de user por otro usuario...

Bueno esta pagina comprueba la cookie, lee en la BD, añade el control de usuario y si estás registrado te manda a la siguiente página con la dirección y los dos valores Query.


<%@ LANGUAGE = VBScript %>
<HTML>

...

<script language="javascript1.2">

function empezar(){


<%
traspaso_cookie = Request.QueryString("user_name")

%>
var query_java = "<% Response.Write traspaso_cookie %>"
<%
On Error Resume Next

Set Conexion = CreateObject("ADODB.Connection")
Conexion.Open="---"

strSQL = "SELECT * FROM usuarios WHERE nick_usuario_id like '"& traspaso_cookie & "'"
Set miConexion = Conexion.Execute(strSQL)

if miConexion("nick_usuario_id")="null" then

response.write "location.replace('principal_noreg.asp');"

else
%> control_us = "<% response.write miConexion("control_usuario_id")%>";query_total="u ser_name="+query_java+"&ctrl_number="+control_us; <%
if miConexion("verificacion_usuario_id")="no" then


response.write "location.replace('principal_verificar.asp?'+query _total);"
else


Response.Write "location.replace('principal_reg.asp?'+query_total );"
End If

End If

miConexion.Close
Conexion.Close
Set miConexion = Nothing
Set Conexion = Nothing
%>

}
</script>
</HEAD>
<body ... /body>
</HTML>


Contar usuarios. He quitado lo inutil)


<%@ LANGUAGE = VBScript %>

<%
nombre_usuario = Request.QueryString("user_name")
control_usuario = Request.QueryString("ctrl_number")
%>

<HTML>


...

<script language="javascript1.2">
usuario_query = "<% response.write nombre_usuario %>"
control_query = "<% response.write control_usuario %>"

function mano(tag) {
document.getElementById(tag).style.cursor = (document.all) ? "hand" : "pointer";

}
function cambia_color(el_id) {
document.getElementById(el_id).style.color ="#395124" ;

}

function vuelve_color(otro_id) {
document.getElementById(otro_id).style.color ="#ffffff" ;

}

function sumar_activos(){
<%

On Error Resume Next
Set Conexion = CreateObject("ADODB.Connection")
Conexion.Open="---"
strSQL = "SELECT * FROM activos WHERE contador_activos_db like 1 "
Set miConexion = Conexion.Execute(strSQL)


if miConexion("contador_activos_db")="null" then

miConexion.Close
Conexion.Close
Set miConexion = Nothing
Set Conexion = Nothing

On Error Resume Next
Set Conexion = CreateObject("ADODB.Connection")
Conexion.Open="---"

strSQL = "INSERT INTO activos (contador_activos_db, activos_db) VALUES ('1','1')"

Set miConexion = Conexion.Execute(strSQL)
activos=miConexion("activos_db")
%>
document.getElementById('contador_activos').innerH TML = '<% response.write activos %>';
<%
miConexion.Close
Conexion.Close
Set miConexion = Nothing
Set Conexion = Nothing
else

strSQL = "SELECT * FROM activos WHERE contador_activos_db like 1 "
Set miConexion = Conexion.Execute(strSQL)

acumular=miConexion("activos_db")
sumar = acumular + 1


strSQL = "UPDATE activos SET activos_db=" & sumar & " WHERE contador_activos_db=1"
Set miConexion = Conexion.Execute(strSQL)
activos=miConexion("activos_db")
%>
document.getElementById('contador_activos').innerH TML = '<% response.write activos %>';
<%
miConexion.Close
Conexion.Close
Set miConexion = Nothing
Set Conexion = Nothing
End If %>



}

function restar_activos(){

<%
On Error Resume Next
Set Conexion = CreateObject("ADODB.Connection")
Conexion.Open="---"
strSQL = "SELECT * FROM activos WHERE contador_activos_db like 1 "
Set miConexion = Conexion.Execute(strSQL)

restar=miConexion("activos_db") - 1

strSQL = "UPDATE activos SET activos_db=" & restar & " WHERE contador_activos_db=1"
Set miConexion = Conexion.Execute(strSQL)
miConexion.Close
Conexion.Close
Set miConexion = Nothing
Set Conexion = Nothing
%>
document.getElementById('contador_activos').innerH TML = '<% response.write restar %>';

}

</script>
</HEAD>
<body bgcolor="#ffffff" link="#ffffff" vlink="#ffffff" alink="#ffffff" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" valign="top" onunload="restar_activos();" onload="sumar_activos();">

<table border="0px" width="775px" style="margin:0px;" cellspacing="0px" cellpaddin="0px" valign="top">
<tr><td>
<img src="../../imagenes/cabecera_club.jpg" align="top" style="margin:0px;">
</td></tr>
</table>
<!-- LEEMOS PARA COMPROBAR SI EXISTE EL USUARIO ++++++++++++++++++++++++++++++ -->
<%

On Error Resume Next
Set Conexion = CreateObject("ADODB.Connection")
Conexion.Open="---"

strSQL = "SELECT * FROM usuarios WHERE nick_usuario_id like '"& nombre_usuario & "'"
Set miConexion = Conexion.Execute(strSQL)

if miConexion("nick_usuario_id")="null" then %>

<script language="javascript1.2">location.replace('../principal_noreg.asp');</script>

<% else
if miConexion("control_usuario_id")=control_usuario then

else %>

'<script language="javascript1.2">location.replace('../principal_noreg.asp');</script>
<%End If
End If%>
<%
miConexion.Close
Conexion.Close
Set miConexion = Nothing
Set Conexion = Nothing
%>


<table border=0 style="border:1px solid #8bae1c;width:775px;color:#404040;margin:0px;font-family:arial,verdana, tahoma, serif; font-weight:bold; font-size:10px;" valign="top">
<tr valign="top">
<td width="100px" style="background:#8bae1c;">

Todo el rollo...

</body>
</HTML>
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:08.