Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] INNER JOIN ctg_tiposusuario

Estas en el tema de INNER JOIN ctg_tiposusuario en el foro de PHP en Foros del Web. Para validar el usuario de un proyecto que tengo de registro de usuarios, he puesto un INNER JOIN a mis tablas. Son dos tablas la ...
  #1 (permalink)  
Antiguo 09/01/2014, 17:20
Avatar de Zynfrid  
Fecha de Ingreso: enero-2014
Ubicación: Damodrail
Mensajes: 9
Antigüedad: 10 años, 3 meses
Puntos: 0
Exclamación INNER JOIN ctg_tiposusuario

Para validar el usuario de un proyecto que tengo de registro de usuarios, he puesto un INNER JOIN a mis tablas.

Son dos tablas la primera ctg_tiposusuario y la segunda tbl_users. Ambas tienen una columna igual que la de id_TipoUsuario (las 2 tablas están en la misma base de datos). Lo que sucede es que cuando se registra un usuario solo se guarda la id en una de las tablas( en tbl_users) y la otra tabla queda totalmente vacía. ¿Como hago para relacionar ambas tablas y así cuando se registre el usuario se pueda cumplir la condición tbl_users.id_TipoUsuario = ctg_tiposusuario.id_TipoUsuario?

dejo el código

Código:
*/
 
    //conectar BD
    include("conectar_bd.php");  
    conectar_bd();
     
    $usr = $_POST['usuario'];
    $pw = $_POST['password'];
    //Obtengo la version encriptada del password
    $pw_enc = md5($pw);
     
    $sql = "SELECT id_usuario FROM tbl_users
            INNER JOIN ctg_tiposusuario
            ON tbl_users.id_TipoUsuario = ctg_tiposusuario.id_TipoUsuario
            WHERE tx_username = '".$usr."'
            AND tx_password = '".$pw_enc."' ";  
    $result     =mysql_query($sql,$conexio); 
 
    $uid = "";
  #2 (permalink)  
Antiguo 09/01/2014, 18:28
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: INNER JOIN ctg_tiposusuario

Muestra cómo haces la inserción para poder decirte en qué estás fallando, porque, en teoría, tu consulta para leer es correcta.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 10/01/2014, 04:22
Avatar de Zynfrid  
Fecha de Ingreso: enero-2014
Ubicación: Damodrail
Mensajes: 9
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: INNER JOIN ctg_tiposusuario

El código es un poco extenso. Estoy mostrando las partes más importantes cuando el usuario a superado todas las comprobaciones y ya va a insertar su registro en la base de datos(que no tengo problema en eso porque los datos se guardan bien, el nombre ,los apellidos y todo eso.

solo que me guarda la id del usuario en tbl_user y yo quiero que me guarde el mismo id en ctg_tipousuario)

Código:
 <?php
    /*
       
<body>
 

    //Formar el query para el insert del nuevo usuario
    $queryInsert="INSERT INTO tbl_users (
    tx_nombre,
    tx_1apellido,
    tx_2apellido,
    tx_correo,
    tx_username,
    tx_password,
    id_TipoUsuario,
    dt_registro ) 
    VALUES(
    '".$str_nombre."',
    '".$str_1apellido."',
    '".$str_2apellido."',
    '".$str_correo."',
    '".$str_username."',
    '".md5($str_password)."',
    ".$i_TipoUsuario.",
'".date("Y-m-d H:i:s")."');";
     
    $log .=  $queryInsert."<br>";
 
    //echo $log;
    //exit;

no tengo idea de q se debe hacer para que guarde el mismo id en 2 tablas distintas. Creo que así se cumpliría la condición

Código:
tbl_users.id_TipoUsuario = ctg_tiposusuario.id_TipoUsuario
Vamos ese soy yo especulando xDDD puede que tenga que hacerse de otra forma.
  #4 (permalink)  
Antiguo 10/01/2014, 05:02
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 15 años
Puntos: 6
Respuesta: INNER JOIN ctg_tiposusuario

Cita:
Iniciado por Zynfrid Ver Mensaje
El código es un poco extenso. Estoy mostrando las partes más importantes cuando el usuario a superado todas las comprobaciones y ya va a insertar su registro en la base de datos(que no tengo problema en eso porque los datos se guardan bien, el nombre ,los apellidos y todo eso.

solo que me guarda la id del usuario en tbl_user y yo quiero que me guarde el mismo id en ctg_tipousuario)

Vamos ese soy yo especulando xDDD puede que tenga que hacerse de otra forma.
Yo para insertar el mismo id en varias tablas,
hago el insert en tabla 1,
selecciono el last_insert_id
y lo guardo en las demas tablas sin hacer uniones ni nada.
simplemente varios queries
  #5 (permalink)  
Antiguo 10/01/2014, 07:02
Avatar de Zynfrid  
Fecha de Ingreso: enero-2014
Ubicación: Damodrail
Mensajes: 9
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: INNER JOIN ctg_tiposusuario

Cita:
Iniciado por helenp Ver Mensaje
Yo para insertar el mismo id en varias tablas,
hago el insert en tabla 1,
selecciono el last_insert_id
y lo guardo en las demas tablas sin hacer uniones ni nada.
simplemente varios queries

Podrías poner un ejemplo esq no te entiendo bien
  #6 (permalink)  
Antiguo 10/01/2014, 07:33
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 15 años
Puntos: 6
Respuesta: INNER JOIN ctg_tiposusuario

Cita:
Iniciado por Zynfrid Ver Mensaje
Podrías poner un ejemplo esq no te entiendo bien
http://www.w3schools.com/php/func_mysqli_insert_id.asp
en vez de hacer echo, pues otro query para insertar en la otra tabla
  #7 (permalink)  
Antiguo 10/01/2014, 10:38
Avatar de Zynfrid  
Fecha de Ingreso: enero-2014
Ubicación: Damodrail
Mensajes: 9
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: INNER JOIN ctg_tiposusuario

Nada no lo consigo... Solo guarda el dato en una de las 2 tablas, o en la tabla ctg_tiposusuario (en la cual solo guarda el id) o tbl_users que guarda todos los datos registrados (osea como el caso anterior) el usuario sigue sin poderse autenticar ...
  #8 (permalink)  
Antiguo 10/01/2014, 11:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: INNER JOIN ctg_tiposusuario

Postea el código donde se ejecutan cada uno de los INSERT.
Y postealo TODO. No pongas cosas resumidas, porque bien puede pasar que lo que estés dejando sin mostrar podría ser precisamente donde está el problema (ya ha pasado otras veces con otros foristas).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 10/01/2014, 11:28
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: INNER JOIN ctg_tiposusuario

Hola,

Cita:
Iniciado por Zynfrid Ver Mensaje
.... Son dos tablas la primera ctg_tiposusuario y la segunda tbl_users. Ambas tienen una columna igual que la de id_TipoUsuario (las 2 tablas están en la misma base de datos). Lo que sucede es que cuando se registra un usuario solo se guarda la id en una de las tablas( en tbl_users) y la otra tabla queda totalmente vacía. ¿Como hago para relacionar ambas tablas y así cuando se registre el usuario se pueda cumplir la condición tbl_users.id_TipoUsuario = ctg_tiposusuario.id_TipoUsuario? ...
La verdadera pregunta aquí tendría que ser ... ¿por qué?

Mencionas en todos lados dos tablas, una Usuarios y la otra TipoUsuario, la relación que se mantiene entre Entidad y TipoEntidad casi siempre es uno a muchos, porque TipoEntidad define un atributo de la Entidad.

Tu lo que estas mencionando es que quieres insertar un Usuario y al mismo tiempo insertar un TipoUsuario, para que, según lo que mencionas, se cumpla la condición de tener un Usuario y su Tipo. Eso generaría una relación uno a uno. Lo cual, conceptualmente estaría incorrecto si la tabla TipoUsuario es realmente el tipo de usuario.

Normalmente se realiza un mantenimiento (una página tipo web administrativa) para administrar los Tipo de Usuario. Posteriormente en la página de administración de Usuarios (otra página web administrativa) le asignas un Tipo Usuario.

Por lo tanto son dos query's independientes, posiblemente en dos páginas separadas. Cuando comprendas tu base de datos y el motivo por el cual estás haciendo el INNER JOIN vas a entender que no tiene mucho sentido insertar el mismo ID (identificador) en esas dos tablas al mismo tiempo, por el simple motivo de cumplir con el INNER JOIN.

Saludos,
  #10 (permalink)  
Antiguo 12/01/2014, 05:40
Avatar de Zynfrid  
Fecha de Ingreso: enero-2014
Ubicación: Damodrail
Mensajes: 9
Antigüedad: 10 años, 3 meses
Puntos: 0
De acuerdo Respuesta: INNER JOIN ctg_tiposusuario

Cita:
Iniciado por HackmanC Ver Mensaje
Hola,





Tu lo que estas mencionando es que quieres insertar un Usuario y al mismo tiempo insertar un TipoUsuario, para que, según lo que mencionas, se cumpla la condición de tener un Usuario y su Tipo. Eso generaría una relación uno a uno. Lo cual, conceptualmente estaría incorrecto si la tabla TipoUsuario es realmente el tipo de usuario.

Normalmente se realiza un mantenimiento (una página tipo web administrativa) para administrar los Tipo de Usuario. Posteriormente en la página de administración de Usuarios (otra página web administrativa) le asignas un Tipo Usuario.

Por lo tanto son dos query's independientes, posiblemente en dos páginas separadas. Cuando comprendas tu base de datos y el motivo por el cual estás haciendo el INNER JOIN vas a entender que no tiene mucho sentido insertar el mismo ID (identificador) en esas dos tablas al mismo tiempo, por el simple motivo de cumplir con el INNER JOIN.

Saludos,
Si la verdad que estaba tan efuscado intentando resolver el problema q no m di cuenta de lo bobo que sirve ponerle un INNER JOIN, como el proyecto ya nos lo habían pasado así .... pero la aplicación era otra distinta pues la verdad no sirve de mucho, ya lo resolví.

Lo único que he hecho es modificar la forma de validación de archivo por una linea mucho más sencilla

Código:
 $sql = "SELECT * FROM tbl_users
           WHERE tx_username='".$usr."' AND tx_password= '".$pw_enc."' ";
    $result     =mysql_query($sql,$conexio);
Con esto ya solo se verifica que el usuario y la contraseña esté en la base de datos y si existe pues lo acepta. Funciona :D bien.

Lo del INNER JOIN ya lo usaré pero para complementar el proyecto a ver si lo consigo.

Muchas gracias a todos por su tiempo ;)

Etiquetas: join, mysql, registro, select, sql, tabla, usuarios
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 02:01.