entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

Como guardo los registros que un usuario hizo cuando se logueo?

Saludos!, ya habia preguntado algo parecido pero ahora ya casi me estoy acercando a la solucion, tengo una tabla en mysql que se llama catalogos, esta tabla contiene 30 atributos y uno mas llamado id_usr, esto porque el catalogo(s) deben estar asociados al usuario que hizo el registro para posteriormente mostrar solo los catalogos que le corresponden a cada usuario, la pregunta es como guardo los registros que el usuario haga cuando este conectado?, cual es el valor que ira en el campo id_usr, guardo la variable de sesion del usuario o como? :/, ojala puedan ayudarme, gracias!

3 Respuestas

2votos

lladruc Puntos760

En primer lugar, intentaré orientarte de forma un poco genérica, ya que tu duda es un poco liosa.
Supongo que tienes una tabla "users" con sus correspondientes campos "id, user, password, mail, etc".
Doy por echo que al iniciar $_SESSION insertas los datos del usuario tal cual.
algo tipo:

$_SESSION = mysql_query("SELECT * FROM users WHERE id= $id AND pass=$pw");

o por el estilo.
En ese caso, la id de tu usuario queda en $_SESSION['id'].
Así que puedes pasársela al sql de nuevo con la sentencia:

mysql_query("INSERT INTO catalogos (campo1,campo2,campo3 ... {hasta campo 30}... campo30, idusr ) VALUES ($value1,$value2,$value3... {hasta value 30}... $value30,$_SESSION['id'])");

Este "pseudocodigo" tienes que adaptarlo a los campos de tu estructura SQL puesto que no se el nombre de los campos que usas ni como has montado las variables.

Espero te haya sido de ayuda.

0voto

iphp comentado

Muchas gracias Lladruc! me ha servido de mucho y con tu codigo de ejemplo aun mas!, ahorita mismo estoy lo estare aplicando y te contare los resultados :D

Saludos!!

3votos

Leonardo-Tadei Puntos227320

Hola iPHP,

cuando el usuario inicie la sesión, guardá como dato en ella el ID que tenga en la tabla.

Luego, cuando el usuario logueado cree un catálogo, insertá en el campo idusr el valor del ID guardado previamente en la sesión.

Si en la tabla de Usuarios los ID son valores enteros autoincrementales, tendrás garantizado que nunca se repetirá un ID para otro usuario existente o por existir.

Saludos cordiales!

0voto

iphp comentado

Que tal Leonardo, gracias de nueva cuenta, quiero suponer que lo que planteas es similar a lo de la primera respuesta cierto?, de no ser asi ojala pudieras aclararme si esa es otra manera de solucionarlo.

Saludos!!

2votos

Leonardo-Tadei comentado

Hola iPHP,

No hago el mismo planteo porque la pregunta es otra ;-)
En tu pregunta anterior querías saber cómo filtrar el Catálogo según el usuario que lo había creado.
Ahora en cambio preguntás de dónde sacar el valor del ID del usuario para hacer el filtro.

La solución más simple es obtener el ID del usuario de una variable de sesión, que guardarás cuando el usuario se loguee.

El ejemplo de @marcel_olsina está bien planteado como idea, aunque tiene un error el código. Esto no funciona:

$_SESSION = mysql_query("SELECT * FROM users WHERE id= $id AND pass=$pw");

porque mysql_query() devuelve un manejador (handler) a la respuesta de la query, que será inaccesible después de que termine el script, aunque lo hayas guardado.

Para guardar el registro entero deberías hacer algo como:

$res = mysql_query("SELECT * FROM users WHERE id= $id AND pass=$pw");
$_SESSION = mysql_fetch_array($res);

asumiendo que la que la query devuelve un solo registro.

Por otra parte, @zsx te dice que hagas lo que quieras con las tablas, pero también te sugiere normalizar las tablas... ;-)

Saludos!

2votos

ZSX Puntos190

Como que al profundizar en la pregunta se aleja un poco de la pregunta en si, pero me imagino que quieres guardar una especie de "log" con lo que el usuario "hizo" (porque no se que es lo que hace).

Mas que poner el ID del usuario en la misma tabla catalogos, yo lo que haría seria crear una nueva tabla que asocie el usuario y el catalogo. Es mas limpio, evita redundancias y puedes tratarlo de mejor manera a futuro después sin perder la cabecera del registro si quieres eliminarlo.

Por ejemplo, creas una tabla "ASOC_CATALOGO_USUARIO" donde vaya el ID del catalogo y el ID del usuario.

Ahora, si tu pregunta va mas a el "como" especificamente, cuando el usuario abra sesion, obtienes el ID del usuario antes y lo guardas en una variable de sesion. Luego cada vez que guardes, vas y tomas ese "ID" que obtuviste antes.

Espero sea de ayuda.

Slds,

ZSX

1voto

iphp comentado

Tu respuesta es interesante ya me habia planteado algo asi, pues estamos hablando de una relacion entre las dos tablas, de otra manera lo que estoy haciendo es una propagacion de claves y me ahorro una tabla, pero si pudieras aclararme las cosas un poco con algun codigo seria genial y tal vez me decida por este metodo. Gracias!!

Saludos!!

1voto

ZSX comentado

Según mi opinión, mas que ahorrarse tablas es mejor que funcione mas optimo. Pero es mi apreciación y cada developer trabaja según lo que mas le acomode.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta