
Quote from ManuGarciaEU on May 30, 2021, 10:39 pmBuenas noches.
Necesito saber si un usuario que accede a mi web lo hace por primera vez o no, es decir, después de darse de alta a la web con neoPhpUserInsert. Una vez dado de alta (esto me funciona bien) el usuario se loguea usando neoPhpUserLogin (puede ser un minuto después o tres días después), y necesito saber si es la primera vez que entra o no, para poder inicializar una serie de valores en otras tablas.
He probado tratando de leer el id cuando el usuario se da de alta en la tabla neousers pero no me funciona (o al menos no lo consigo o no sé cómo hacerlo...).
Otra cosa que he probado es, cuando el usuario se loguea, tratar de leer el id en otra tabla diferente (por ejemplo, clientes) y comprobar si existe o no... si existe es porque el usuario NO es la primera vez que entra en la web, pero si no existe es porque aún no se ha logueado nunca y ahí sería cuando se inicializarían los valores para ese id en otras tablas. Consigo saber si el usuario ya ha entrado, pero no consigo saber si nunca ha entrado (no sé qué valor devuelve un SELECT cuando no encuentra un id).
La idea es tener en varias tablas un id que estará asociado al id de la tabla neousers (lo que es establecer relaciones de toda la vida).
Agradezco toda ayuda.
Saludos.
Buenas noches.
Necesito saber si un usuario que accede a mi web lo hace por primera vez o no, es decir, después de darse de alta a la web con neoPhpUserInsert. Una vez dado de alta (esto me funciona bien) el usuario se loguea usando neoPhpUserLogin (puede ser un minuto después o tres días después), y necesito saber si es la primera vez que entra o no, para poder inicializar una serie de valores en otras tablas.
He probado tratando de leer el id cuando el usuario se da de alta en la tabla neousers pero no me funciona (o al menos no lo consigo o no sé cómo hacerlo...).
Otra cosa que he probado es, cuando el usuario se loguea, tratar de leer el id en otra tabla diferente (por ejemplo, clientes) y comprobar si existe o no... si existe es porque el usuario NO es la primera vez que entra en la web, pero si no existe es porque aún no se ha logueado nunca y ahí sería cuando se inicializarían los valores para ese id en otras tablas. Consigo saber si el usuario ya ha entrado, pero no consigo saber si nunca ha entrado (no sé qué valor devuelve un SELECT cuando no encuentra un id).
La idea es tener en varias tablas un id que estará asociado al id de la tabla neousers (lo que es establecer relaciones de toda la vida).
Agradezco toda ayuda.
Saludos.

Quote from luishp on May 31, 2021, 8:52 amConsigo saber si el usuario ya ha entrado, pero no consigo saber si nunca ha entrado (no sé qué valor devuelve un SELECT cuando no encuentra un id).
@manugarciaeu si un SELECT no encuentra ningún resultado devolverá un Array con cero elementos. Es decir, te basta con utilizar ArrayLen en la subrutina donde recoges los datos y comprobar si el valor es cero. Algo así:
CreateEmptyArray [arrayData] SetVar [arrayData] [data] ArrayLen [arrayData] [totalRecords] If [totalRecords] == 0 .Es la primera vez que entra EndIfDonde [data] es la información recogida de la base de datos por neoPHP.
Saludos
Consigo saber si el usuario ya ha entrado, pero no consigo saber si nunca ha entrado (no sé qué valor devuelve un SELECT cuando no encuentra un id).
@manugarciaeu si un SELECT no encuentra ningún resultado devolverá un Array con cero elementos. Es decir, te basta con utilizar ArrayLen en la subrutina donde recoges los datos y comprobar si el valor es cero. Algo así:
CreateEmptyArray [arrayData] SetVar [arrayData] [data] ArrayLen [arrayData] [totalRecords] If [totalRecords] == 0 .Es la primera vez que entra EndIf
Donde [data] es la información recogida de la base de datos por neoPHP.
Saludos

Quote from ManuGarciaEU on May 31, 2021, 11:36 amCierto, la verdad es que no caí en ese detalle. Si la longitud es 0 en la consulta, es porque no hay registros. Pero ahora tengo otra duda, la variable [totalRecords] es local, ¿no? Cuando salga del procedimiento, ¿podré comprobar su valor?
Gracias.
Cierto, la verdad es que no caí en ese detalle. Si la longitud es 0 en la consulta, es porque no hay registros. Pero ahora tengo otra duda, la variable [totalRecords] es local, ¿no? Cuando salga del procedimiento, ¿podré comprobar su valor?
Gracias.

Quote from luishp on May 31, 2021, 11:46 am@manugarciaeu no, todas las variables son globales excepto las que se reciben como parámetros. En este caso [data]
Saludos
@manugarciaeu no, todas las variables son globales excepto las que se reciben como parámetros. En este caso [data]
Saludos

Quote from ManuGarciaEU on May 31, 2021, 12:17 pmPerfecto, gracias. Luego pruebo y te comento.
Otro de los problemas que estoy teniendo en con el "level acces" de los usuarios cuando se registran, 0 es admin, 1 es de solo lectura y 2 es lectura/escritura, ¿cierto?
-1 es para quien no se haya logueado y pueda ejecutar sentencias SQL, ¿existe alguno más? Creo que con esto despejo ya todas las dudas.
Gracias.
Perfecto, gracias. Luego pruebo y te comento.
Otro de los problemas que estoy teniendo en con el "level acces" de los usuarios cuando se registran, 0 es admin, 1 es de solo lectura y 2 es lectura/escritura, ¿cierto?
-1 es para quien no se haya logueado y pueda ejecutar sentencias SQL, ¿existe alguno más? Creo que con esto despejo ya todas las dudas.
Gracias.

Quote from luishp on May 31, 2021, 12:31 pm@manugarciaeu en realidad puedes tener todos los niveles que quieras. Cuando tu le asignas un nivel de acceso a una SQL o a un archivo, cualquier usuario con ese nivel o inferior puede realizar la consulta. Excepto -1 que es de acceso para cualquiera incluso si no está logueado.
0 es admin, 1 es de solo lectura y 2 es lectura/escritura, ¿cierto?
Esto es sólo una sugerencia para que se entienda mejor como está organizado.
Gracias a ti
@manugarciaeu en realidad puedes tener todos los niveles que quieras. Cuando tu le asignas un nivel de acceso a una SQL o a un archivo, cualquier usuario con ese nivel o inferior puede realizar la consulta. Excepto -1 que es de acceso para cualquiera incluso si no está logueado.
0 es admin, 1 es de solo lectura y 2 es lectura/escritura, ¿cierto?
Esto es sólo una sugerencia para que se entienda mejor como está organizado.
Gracias a ti

Quote from ManuGarciaEU on May 31, 2021, 7:05 pmBuenas.
Lo acabo de probar y funciona en parte. Cuando hago lo siguiente:
CreateEmptyArray [arrayDatosGuion]
SetVar [arrayDatosGuion] [data]
ArrayLen [arrayDatosGuion] [totalRegistrosGuion]
SetVar [registroActual] 0
SetVar [idGuion] [arrayDatosGuion([registroActual]).id]
SetVar [comboElegirCapa] [arrayDatosGuion([registroActual]).capa]
SetVar [comboElegirCaperuz] [arrayDatosGuion([registroActual]).caperuz]
SetVar [comboElegirTunica] [arrayDatosGuion([registroActual]).tunica]MessageBox "Número de Registros" "[totalRegistrosGuion]" "" ""
Me muestra de forma correcta el número de registros, que siempre va a ser 1. Cuando intento leer la variable fuera de la subrutine, me dice undefined. Por ejemplo, esto no funciona:
If [totalRegistrosGuion] == 0
MessageBox "[totalRegistrosGuion]" "No existe el guion" "" ""
neoPhpExecSql "db1" "insertguionC" "[idusuario]::blanco::blanco::blanco::0" ""
Else
MessageBox "[totalRegistrosGuion]" "YES" "" ""
EndifSiempre se va al ELSE y [totalRegistrosGuion] me dice que es Undefined.
¿Qué hago mal? Aplicando mis conocimientos de cliente/servidor, ¿quizá se deba a que el If/Else está en la misma página que la sentencia neoPhpExecSql que llama a la subrutina? Al no hacer una nueva llamada al servidor, entiendo que no ha lugar a que se actualicen las variables... Si es así, ¿cómo se soluciona?
Creo que voy a dar mucho la lata por aquí, jeje...
Saludos.
Buenas.
Lo acabo de probar y funciona en parte. Cuando hago lo siguiente:
CreateEmptyArray [arrayDatosGuion]
SetVar [arrayDatosGuion] [data]
ArrayLen [arrayDatosGuion] [totalRegistrosGuion]
SetVar [registroActual] 0
SetVar [idGuion] [arrayDatosGuion([registroActual]).id]
SetVar [comboElegirCapa] [arrayDatosGuion([registroActual]).capa]
SetVar [comboElegirCaperuz] [arrayDatosGuion([registroActual]).caperuz]
SetVar [comboElegirTunica] [arrayDatosGuion([registroActual]).tunica]
MessageBox "Número de Registros" "[totalRegistrosGuion]" "" ""
Me muestra de forma correcta el número de registros, que siempre va a ser 1. Cuando intento leer la variable fuera de la subrutine, me dice undefined. Por ejemplo, esto no funciona:
If [totalRegistrosGuion] == 0
MessageBox "[totalRegistrosGuion]" "No existe el guion" "" ""
neoPhpExecSql "db1" "insertguionC" "[idusuario]::blanco::blanco::blanco::0" ""
Else
MessageBox "[totalRegistrosGuion]" "YES" "" ""
Endif
Siempre se va al ELSE y [totalRegistrosGuion] me dice que es Undefined.
¿Qué hago mal? Aplicando mis conocimientos de cliente/servidor, ¿quizá se deba a que el If/Else está en la misma página que la sentencia neoPhpExecSql que llama a la subrutina? Al no hacer una nueva llamada al servidor, entiendo que no ha lugar a que se actualicen las variables... Si es así, ¿cómo se soluciona?
Creo que voy a dar mucho la lata por aquí, jeje...
Saludos.

Quote from luishp on May 31, 2021, 7:35 pm@manugarciaeu si el valor es "undefined" es que la variable aun no tiene datos, es decir, intentas ver que valor tiene antes de que se haya guardado ningún valor en ella. Ten en cuenta que la subrutina para parsear los datos se ejecuta una vez se han recibido los datos del servidor, cualquier instrucción detrás de neoPhpExecSql se ejecutará antes de que esto suceda.
Es decir, la carga de datos desde el servidor es asíncrona. Esto permite que el programa se siga ejecutando mientras se piden y reciben los datos. Solo puedes estar seguro de que los datos están disponibles una vez que se ejecuta la subrutina que los parsea (callback).
Espero haberme explicado :)
Saludos.
@manugarciaeu si el valor es "undefined" es que la variable aun no tiene datos, es decir, intentas ver que valor tiene antes de que se haya guardado ningún valor en ella. Ten en cuenta que la subrutina para parsear los datos se ejecuta una vez se han recibido los datos del servidor, cualquier instrucción detrás de neoPhpExecSql se ejecutará antes de que esto suceda.
Es decir, la carga de datos desde el servidor es asíncrona. Esto permite que el programa se siga ejecutando mientras se piden y reciben los datos. Solo puedes estar seguro de que los datos están disponibles una vez que se ejecuta la subrutina que los parsea (callback).
Espero haberme explicado :)
Saludos.

Quote from ManuGarciaEU on May 31, 2021, 9:30 pmMuchísimas gracias, ya he podido arreglarlo. Te has explicado perfectamente.
Muy contento con el entorno, poco a poco iré cogiendo práctica y con tu ayuda iré conociendo mucho mejor esta herramienta que me sigue pareciendo fantástica, y el soporte para las dudas es impresionante.
Saludos.
Muchísimas gracias, ya he podido arreglarlo. Te has explicado perfectamente.
Muy contento con el entorno, poco a poco iré cogiendo práctica y con tu ayuda iré conociendo mucho mejor esta herramienta que me sigue pareciendo fantástica, y el soporte para las dudas es impresionante.
Saludos.