Foros del Web » Programando para Internet » PHP »

informacion sobre como relaciono una tabla con id usuarios

Estas en el tema de informacion sobre como relaciono una tabla con id usuarios en el foro de PHP en Foros del Web. hola a todos es mi primer tema aqui, me gustaria saver como hago para que qualquier usuario registrado en mi web, la imagenes que suba ...

  #1 (permalink)  
Antiguo 25/12/2014, 03:29
 
Fecha de Ingreso: diciembre-2014
Mensajes: 27
Antigüedad: 9 años, 4 meses
Puntos: 0
informacion sobre como relaciono una tabla con id usuarios

hola a todos es mi primer tema aqui, me gustaria saver como hago para que qualquier usuario registrado en mi web, la imagenes que suba se relacionan con el. y nadie mas puede ver las imagenes solo el.
tengo dos tablas de registro de usuarios y una de datos imagenes


registro de usuarios

Código PHP:
Ver original
  1. CREATE TABLE IF NOT EXISTS `registro de usuarios` (
  2.   `usuario_id` int(4) NOT NULL AUTO_INCREMENT,
  3.   `usuario_nombre` varchar(15) NOT NULL DEFAULT '',
  4.   `usuario_clave` varchar(32) NOT NULL DEFAULT '',
  5.   `usuario_email` varchar(50) NOT NULL DEFAULT '',
  6.   `usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  7.   `tipo` enum('2','1') NOT NULL DEFAULT '2',
  8.   PRIMARY KEY (`usuario_id`)
  9. ) ENGINE=innodb DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


datos de imagenes

Código PHP:
Ver original
  1. CREATE TABLE IF NOT EXISTS `datos de imagenes` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `ruta` varchar(100) NOT NULL,
  4.   `descripcion` text,
  5.   PRIMARY KEY (`id`)
  6. ) ENGINE=innodb  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;


y me pregunta es tengo que escribir un codigo( consulta a base de datos) y relacionar la tabla de datos imagenes con la tabla de registro de usuarios
o tengo que hacer una fila con nombre comun de tablas,alguien puede orientadome en esto

muchas gracias

Última edición por flad77; 25/12/2014 a las 04:46
  #2 (permalink)  
Antiguo 25/12/2014, 04:47
 
Fecha de Ingreso: diciembre-2014
Mensajes: 27
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: informacion sobre como relaciono una tabla con id usuarios

alguien me puede ayudar
gracias
  #3 (permalink)  
Antiguo 25/12/2014, 21:08
Avatar de rottenp4nx  
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 6 meses
Puntos: 36
Respuesta: informacion sobre como relaciono una tabla con id usuarios

Modelo Entidad Relación:

http://www.genbetadev.com/bases-de-d...tidad-relacion
  #4 (permalink)  
Antiguo 25/12/2014, 21:18
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: informacion sobre como relaciono una tabla con id usuarios

Yo diría que podrías agregar un campo en la tabla de imagenes, que corresponda al ID de la persona que la sube.
  #5 (permalink)  
Antiguo 25/12/2014, 23:57
 
Fecha de Ingreso: diciembre-2014
Mensajes: 27
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: informacion sobre como relaciono una tabla con id usuarios

hola y gracias anadie un campo en tabla datos imagenes que es : usuario_id

la tablas se quedan asi con nombre comun _usuario_id


Código PHP:
Ver original
  1. CREATE TABLE IF NOT EXISTS `registro usuarios` (
  2.   `usuario_id` int(4) NOT NULL AUTO_INCREMENT,
  3.   `usuario_nombre` varchar(15) NOT NULL DEFAULT '',
  4.   `usuario_clave` varchar(32) NOT NULL DEFAULT '',
  5.   `usuario_email` varchar(50) NOT NULL DEFAULT '',
  6.   `usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  7.   `tipo` enum('2','1') NOT NULL DEFAULT '2',
  8.   PRIMARY KEY (`usuario_id`)
  9. ) ENGINE=innodb DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Código PHP:
Ver original
  1. CREATE TABLE IF NOT EXISTS `datos de imagenes` (
  2. `usuario_id` int(4) NOT NULL AUTO_INCREMENT,
  3. `ruta` varchar(100) NOT NULL,
  4. `descripcion` text,
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=innodb DEFAULT CHARSET=latin1;


y leido algo sobre esto y tengo que hacer una relacion que que campo lo hago de las tablas y como hago la consulta (el codigo)
gracias

Última edición por flad77; 26/12/2014 a las 00:45
  #6 (permalink)  
Antiguo 26/12/2014, 09:53
 
Fecha de Ingreso: diciembre-2014
Mensajes: 27
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: informacion sobre como relaciono una tabla con id usuarios

gracias alguien me puede ayudar
  #7 (permalink)  
Antiguo 26/12/2014, 10:35
 
Fecha de Ingreso: julio-2013
Ubicación: Durango, Dgo
Mensajes: 108
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: informacion sobre como relaciono una tabla con id usuarios

Bueno es la primera ayuda que doy espero te sirva (yo lo pensaría de esta manera)

cuando el usuario vaya a subir una imagen el dato de usuario_id lo obtendrías al realizar una consulta previa para saber que usuario a iniciado sesión en tu web, al obtener el dato ahora si realizas el INSERT INTO a la tabla imágenes con los datos correspondientes.

con eso ya únicamente en el apartado que tengas para que el usuario revise las imágenes que ha subido nuevamente realizas una consulta para obtener el usuario_id(que ha iniciado sesión) y otra consulta para mostrar las imágenes de ese usuario.

ojala te sea de ayuda (si es que me di a entender XD)
  #8 (permalink)  
Antiguo 27/12/2014, 00:19
 
Fecha de Ingreso: diciembre-2014
Mensajes: 27
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: informacion sobre como relaciono una tabla con id usuarios

gracias por todo matrixre9
he hecho lo que has dicho
dos consultas una para obtener usuario_id
y otra para obtener las imagenes de usuarios
la de obtener usuario_is fucciona perfectemente, pero las de imagenes se muestran en todos los perfiles de usuarios, y quiero solamente que se muestran en el usuario que la subido
este es el codigo


Código PHP:
Ver original
  1. <? include 'acceso_db.php'; ?>
  2. <? $perfil = [COLOR="Black"][B]mysql_query("SELECT * FROM registro usuarios WHERE    usuario_id='".$_GET['id']."'") or die(mysql_error()); [/B][/COLOR]
  3.     if(mysql_num_rows($perfil)) { // Comprobamos que exista el registro con la ID ingresada
  4.         $row = mysql_fetch_array($perfil);
  5.         $usuario_id = $row["usuario_id"];
  6.         $usuario_nombre = $row["usuario_nombre"];
  7.                 $usuario_email = $row["usuario_email"];
  8.                 $usuario_freg = $row["usuario_freg"];
  9.                 $avatar = $row["avatar"];
  10.                
  11.                
  12. ?>
  13.  
  14. <html>
  15.  
  16. <head>
  17.            <title>Perfil de <?=$usuario_nombre?> | Tu web</title>
  18. </head>
  19.  
  20. <body>
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.     <a href="acceso.php"><h4>VOLVER</h4></a>
  30.  
  31.        
  32.    
  33. </div><h4>HOLA * <?=$usuario_nombre?></h4>
  34.  
  35. <p>Email: <?=$usuario_email?></p>
  36. <p>Fecha de registro: <?=$usuario_freg?></p>
  37. <p>facebook: <?=$facebook?></p>
  38.  
  39.  
  40.  
  41.  
  42. <img src="thumbnails/<?=$avatar?>" width="100" height="100" />
  43.  
  44.  
  45.  
  46.  
  47.  
  48. </body>
  49.  
  50. </html>
  51.  
  52. <? } else { ?>
  53.  
  54.    
  55.      <a href="perfil.php?id=<?=$_SESSION['usuario_id']?>">Ir a tu perfil</a>
  56.  
  57. <? } ?>
  58.  
  59.  
  60.  
  61.  
  62.  
  63. $consulta=[COLOR="Black"][B]mysql_query("select * from datos de imagenes");[/B][/COLOR]
  64. while($filas=mysql_fetch_array($consulta)){
  65.     $ruta=$filas['ruta'];
  66.     $desc=$filas['descripcion'];
  67.  
  68.  
  69. ?>
  70.  
  71. <?php echo $desc;?><br>
  72. <img src="<?php echo $ruta; ?>" width="180" height="214"><br>
  73.  
  74. <?php }?>
  #9 (permalink)  
Antiguo 29/12/2014, 07:37
 
Fecha de Ingreso: diciembre-2014
Mensajes: 27
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: informacion sobre como relaciono una tabla con id usuarios

alguie puede ayudar me en esto
muchas gracias
  #10 (permalink)  
Antiguo 29/12/2014, 09:33
Avatar de jose_php  
Fecha de Ingreso: mayo-2014
Mensajes: 44
Antigüedad: 10 años
Puntos: 2
Respuesta: informacion sobre como relaciono una tabla con id usuarios

Hola disculpa cual es tu consulta en si para poder ayudarte en lo que mas pueda....

saludos!
  #11 (permalink)  
Antiguo 29/12/2014, 09:38
 
Fecha de Ingreso: julio-2013
Ubicación: Durango, Dgo
Mensajes: 108
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: informacion sobre como relaciono una tabla con id usuarios

De nada flad

haber me perdí ya pudiste subir imágenes con el usuario que este logeado?

si es así en la tabla de imágenes te debe de llenar los datos

usuario_id = (id del usuario que este logueado)
ruta = no se que dato guardes
descripción = descripción de la imagen

ahorita revisando la tabla creo esta algo mal

tu tabla te imagenes deveria quedar diferente yo te recomiendo

id_imagen= int auto incementable
usuario_id = esta es la llave foránea (debe tener el mismo tipo de dato y longitud que el de la tabla registro de usuarios ya que es el campo que los relaciona) y no debes de ser auto incrementable ya que este se llenara con ids de usuarios ya registrados

ruta =varchar(100)

descripción = text


no se si se entienda esto
  #12 (permalink)  
Antiguo 29/12/2014, 09:42
 
Fecha de Ingreso: julio-2013
Ubicación: Durango, Dgo
Mensajes: 108
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: informacion sobre como relaciono una tabla con id usuarios

una vez con esta tabla las imagenes que se guarden contendran en el campo usuario_id el id del usuario que esta logueado

y con esto ya podrás realizar la consulta a todas la imágenes donde el usuario_id = id que esta logueado

y únicamente mostrara esas imágenes y no todas como la ha estado haciendo.
  #13 (permalink)  
Antiguo 30/12/2014, 00:12
 
Fecha de Ingreso: diciembre-2014
Mensajes: 27
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: informacion sobre como relaciono una tabla con id usuarios

gracias de verda de ayudar me
con esta consulta las imagenes se muestran en todos los usuarios loqueados quiero restringir la consulta que se muestran solo para el usuario que la subido y las tablas tenen ue ser innodb
estas es mi consulta

Código PHP:
Ver original
  1. $consulta=mysql_query("select * from datos imagenes");
  2. while($filas=mysql_fetch_array($consulta)){
  3.     $ruta=$filas['ruta'];
  4.     $desc=$filas['descripcion'];
  5.  
  6.  
  7. ?>
  8.  
  9. <?php echo $desc;?><br>
  10. <img src="<?php echo $ruta; ?>" width="180" height="214"><br>
  11.  
  12. <?php }?>






estas son las tabla con relacion a ver se le hecho bien






Código PHP:
Ver original
  1. CREATE TABLE IF NOT EXISTS `registro usuarios` (
  2.   `usuario_id` int(4) NOT NULL AUTO_INCREMENT,
  3.   `usuario_nombre` varchar(15) NOT NULL DEFAULT '',
  4.   `usuario_clave` varchar(32) NOT NULL DEFAULT '',
  5.   `usuario_email` varchar(50) NOT NULL DEFAULT '',
  6.   `usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  7.   `tipo` enum('2','1') NOT NULL DEFAULT '2',
  8.   `facebook` varchar(250) NOT NULL,
  9.   `twitter` varchar(250) NOT NULL,
  10.   `avatar` varchar(500) NOT NULL,
  11.   PRIMARY KEY (`usuario_id`)
  12. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  13.  
  14.  
  15. CREATE TABLE IF NOT EXISTS `datos imagenes` (
  16. `usuario_id` int(11) NOT NULL AUTO_INCREMENT,
  17. `ruta` varchar(100) NOT NULL,
  18. `descripcion` text,
  19. PRIMARY KEY (`usuario_id`)
  20. )ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  21.  
  22. --
  23. -- esta es la relacion de las tablas
  24. --
  25. ALTER TABLE `datos`
  26.   ADD CONSTRAINT `datos_ibfk_1` FOREIGN KEY (`Usuario_ID`) REFERENCES `usuarios` (`usuario_ID`) ON DELETE CASCADE ON UPDATE CASCADE;







gracias

Última edición por flad77; 30/12/2014 a las 00:37
  #14 (permalink)  
Antiguo 30/12/2014, 07:41
Avatar de jose_php  
Fecha de Ingreso: mayo-2014
Mensajes: 44
Antigüedad: 10 años
Puntos: 2
Respuesta: informacion sobre como relaciono una tabla con id usuarios

Hola,

Usa esta consulta:

Código SQL:
Ver original
  1. SELECT * FROM usuarios AS a, imagenes AS b WHERE a.usuario_id = b.usuario_id

En el * especifica que columna quieres obtener. Al nombrar a las 2 tablas y condicionarlos que los usuarios tienen que ser el mismo, vas a poder obtener la informacion de ambos campos con respecto al mismo ID.

Espero haberte ayudado en algo.

Saludos....
  #15 (permalink)  
Antiguo 31/12/2014, 00:14
 
Fecha de Ingreso: diciembre-2014
Mensajes: 27
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: informacion sobre como relaciono una tabla con id usuarios

gracias pero como hago para relacionarlas primero
  #16 (permalink)  
Antiguo 31/12/2014, 00:15
 
Fecha de Ingreso: julio-2013
Ubicación: Durango, Dgo
Mensajes: 108
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: informacion sobre como relaciono una tabla con id usuarios

Ok amigo yo modificaría tu consulta en php de la siguiente manera

$consulta=mysql_query("select * from datos imagenes");

intenta poniendo lo siguiente

$consulta=mysql_query("select * from datos imagenes where usuario_id='$usuario_log'");

donde la variable $usuario_log contendrá el id del usuario que inicio sesión (previamente guardado)

el nombre de la variable lo puedes cambiar lo importante es que la variable tenga asignado el id de usuario logueado para poder realizar la consulta.

con esa restricción únicamente te traerá las imágenes que en usuario_id sea igual al usuario logueado y no todas

nuevamente no se si me di a entender XD
  #17 (permalink)  
Antiguo 31/12/2014, 00:31
 
Fecha de Ingreso: diciembre-2014
Mensajes: 27
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: informacion sobre como relaciono una tabla con id usuarios

gracias por ayudar me
con esta consulta sale solo una imagen subida en todas las subidas como hago para mostrar todas las imagens

esta es la consulta , subo imagenes a una carpeta (imagenes) y la guardo en base de datos

$consulta= mysql_query("SELECT * FROM datos imagenes WHERE usuario_id='".$_GET['id']."'") or die(mysql_error());
while($filas=mysql_fetch_array($consulta)){
$ruta=$filas['ruta'];
$desc=$filas['descripcion'];


?>

<?php echo $desc;?><br>
<img src="<?php echo $ruta; ?>" width="180" height="214"><br>

<?php }?>
  #18 (permalink)  
Antiguo 31/12/2014, 08:20
Avatar de jose_php  
Fecha de Ingreso: mayo-2014
Mensajes: 44
Antigüedad: 10 años
Puntos: 2
Exclamación Respuesta: informacion sobre como relaciono una tabla con id usuarios

Cita:
Iniciado por flad77 Ver Mensaje
gracias por ayudar me
con esta consulta sale solo una imagen subida en todas las subidas como hago para mostrar todas las imagens

esta es la consulta , subo imagenes a una carpeta (imagenes) y la guardo en base de datos

$consulta= mysql_query("SELECT * FROM datos imagenes WHERE usuario_id='".$_GET['id']."'") or die(mysql_error());
while($filas=mysql_fetch_array($consulta)){
$ruta=$filas['ruta'];
$desc=$filas['descripcion'];


?>

<?php echo $desc;?><br>
<img src="<?php echo $ruta; ?>" width="180" height="214"><br>

<?php }?>
Hola, si quieres mostrar todas las imagenes o lo que fuese solamente quita el usuario_id = $_GET['id'] ya que al poner esa condicion siempre te va a mostrar algo especifico dependiendo del ID que pongas en ese lugar.
  #19 (permalink)  
Antiguo 31/12/2014, 19:57
 
Fecha de Ingreso: julio-2013
Ubicación: Durango, Dgo
Mensajes: 108
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: informacion sobre como relaciono una tabla con id usuarios

Ya no entendi que es lo que paso amigo, haber el usuario registra imagenes a la base de datos(Ya verificaste que si tenga varios datos registrados), en caso de que si esten registrados

¿no tienes un dato de la base de datos que contenga la imagen como tal?

asi unicamente tendrias que consultar ese dato y los podrias ordenar en una tabla para darle presentacion.
  #20 (permalink)  
Antiguo 01/01/2015, 11:32
 
Fecha de Ingreso: diciembre-2014
Mensajes: 27
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: informacion sobre como relaciono una tabla con id usuarios

gracias por la respuesta, lo que quiero es mostrar solo las imagenes que subio el usuario loqueado en su perfil(pagina privada) o no las imagenes de otros usuarios
algo asi creo
$consulta= mysql_query("SELECT * FROM datos imagenes WHERE usuario_id='".$_GET['id']."'") or die(mysql_error());
pero no logro hacerlo,o tengo que crear una llave forenea
  #21 (permalink)  
Antiguo 01/01/2015, 16:38
 
Fecha de Ingreso: julio-2013
Ubicación: Durango, Dgo
Mensajes: 108
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: informacion sobre como relaciono una tabla con id usuarios

se supone que la llave foranea ya esta creada utiliza la consulta que estas haciendo pero despliega los resultados en una tabla para ver que te sale

aora en la base de datos algun campo guarda la imagen o solo se guarda la ruta de la imagen?
  #22 (permalink)  
Antiguo 01/01/2015, 18:44
 
Fecha de Ingreso: julio-2013
Ubicación: Durango, Dgo
Mensajes: 108
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: informacion sobre como relaciono una tabla con id usuarios

utiliza este código para mostrar tu consulta,al asignar $ruta creo la estas haciendo constante déjala que sea dinámica de la siguiente manera

$consulta= mysql_query("SELECT * FROM datos imagenes WHERE usuario_id='".$_GET['id']."'") or die(mysql_error());
while($filas=mysql_fetch_array($consulta)){


?>

<?php echo $filas['descripcion'];?><br>
<img src="<?php echo $filas['ruta']; ?>" width="180" height="214"><br>

<?php }?>

elimine donde tenias $ruta y $desc y puse directamente el dato abajo haber si así te sirve
  #23 (permalink)  
Antiguo 02/01/2015, 04:10
 
Fecha de Ingreso: diciembre-2014
Mensajes: 27
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: informacion sobre como relaciono una tabla con id usuarios

hola y gracias y perdornar me por las molestias,asi se guarden las imagenes en la tabla de datos de imagenes,se guardan en una carpeta (imagenes) despues en una tabla de datos de imagenes

usuario_id ruta descripcion
5 imagenes/Oryx Antelope.jpg 1
6 imagenes/Tree.jpg 2
7 imagenes/Humpback Whale.jpg 3


he hecho las dos tablas con innodb y FOREIGN KEY y no se si la relacion esta bien o no con usuario_id, y las tablas son estas

Código PHP:
Ver original
  1. CREATE TABLE IF NOT EXISTS `registro usuarios` (
  2.   `usuario_id` int(4) NOT NULL AUTO_INCREMENT,
  3.   `usuario_nombre` varchar(15) NOT NULL DEFAULT '',
  4.   `usuario_clave` varchar(32) NOT NULL DEFAULT '',
  5.   `usuario_email` varchar(50) NOT NULL DEFAULT '',
  6.   `usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  7.   `tipo` enum('2','1') NOT NULL DEFAULT '2',
  8.   `facebook` varchar(250) NOT NULL,
  9.   `twitter` varchar(250) NOT NULL,
  10.   `avatar` varchar(500) NOT NULL,
  11.   PRIMARY KEY (`usuario_id`)
  12. ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  13.  
  14.  
  15. CREATE TABLE IF NOT EXISTS `datos imagenes` (
  16. `usuario_id` int(11) NOT NULL AUTO_INCREMENT,
  17. `ruta` varchar(100) NOT NULL,
  18. `descripcion` text,
  19. PRIMARY KEY (`usuario_id`)
  20. )ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  21.  
  22. --
  23. -- esta es la relacion de las tablas
  24. --
  25. ALTER TABLE `datos`
  26.   ADD CONSTRAINT `datos_ibfk_1` FOREIGN KEY (`Usuario_ID`) REFERENCES `usuarios` (`usuario_ID`) ON DELETE CASCADE ON UPDATE CASCADE;


y la consulta para base de datos y tabla de datos imagenes es esta:

$consulta= mysql_query("SELECT * FROM datos imagenes WHERE usuario_id='".$_GET['id']."'") or die(mysql_error());
while($filas=mysql_fetch_array($consulta)){


?>

<?php echo $filas['descripcion'];?><br>
<img src="<?php echo $filas['ruta']; ?>" width="180" height="214"><br>

<?php }?>



pero no se mostran las imagenes , y no se que problema hay, si es FOREIGN KEY o la consulta
ayudar me porfavor para resolver esto gracias
[/B]
  #24 (permalink)  
Antiguo 02/01/2015, 10:38
 
Fecha de Ingreso: julio-2013
Ubicación: Durango, Dgo
Mensajes: 108
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: informacion sobre como relaciono una tabla con id usuarios

mira revisa primeramente que datos te esta dando la consulta con un echo y ve si te esta mandando las rutas de las imágenes primeramente
  #25 (permalink)  
Antiguo 02/01/2015, 11:06
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: informacion sobre como relaciono una tabla con id usuarios

Este esquema:
Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `registro usuarios` (
  2.   `usuario_id` int(4) NOT NULL AUTO_INCREMENT,
  3.   `usuario_nombre` varchar(15) NOT NULL DEFAULT '',
  4.   `usuario_clave` varchar(32) NOT NULL DEFAULT '',
  5.   `usuario_email` varchar(50) NOT NULL DEFAULT '',
  6.   `usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  7.   `tipo` enum('2','1') NOT NULL DEFAULT '2',
  8.   `facebook` varchar(250) NOT NULL,
  9.   `twitter` varchar(250) NOT NULL,
  10.   `avatar` varchar(500) NOT NULL,
  11.   PRIMARY KEY (`usuario_id`)
  12.  
  13.  
  14. CREATE TABLE IF NOT EXISTS `datos imagenes` (
  15. `usuario_id` int(11) NOT NULL AUTO_INCREMENT,
  16. `ruta` varchar(100) NOT NULL,
  17. `descripcion` text,
  18. PRIMARY KEY (`usuario_id`)
  19.  
  20. --
  21. -- esta es la relacion de las tablas
  22. --
  23. ALTER TABLE `datos`
  24.   ADD CONSTRAINT `datos_ibfk_1` FOREIGN KEY (`Usuario_ID`) REFERENCES `usuarios` (`usuario_ID`) ON DELETE CASCADE ON UPDATE CASCADE;
Está preparado prara dar soporte a una única imagen por usuario, y de todos modos está mal definida proque la tabla de imagenes no puede tener el USER_ID como autoincremental. Eso está MAL.
Más alla de lo que puedas tener incorrecto en PHP, tienes un modelo de datos que no sirve para el propósito que planteas. El asunto en medio OFF TOPIC en este foro y deberías verlo en el de MySQL.

Por lo pronto, si quieres poner mas de una la segunda tabla requiere otra estructura, por ejemplo:
Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `datos imagenes` (
  2. `usuario_id` int(11) NOT NULL,
  3. `nro_imagen`INT NOT NULL,
  4. `ruta` varchar(100) NOT NULL,
  5. `descripcion` text,
  6. PRIMARY KEY (`usuario_id`, nro_imagen)
  7.  
  8. --
  9. -- esta es la relacion de las tablas
  10. --
  11. ALTER TABLE `datos`
  12.   ADD CONSTRAINT `datos_ibfk_1` FOREIGN KEY (`Usuario_ID`) REFERENCES `usuarios` (`usuario_ID`) ON DELETE CASCADE ON UPDATE CASCADE;
  13.  
  14. -- Hacer unica la imagen para la tabla.
  15. CREATE UNIQUE INDEX rutas_imagenes_usuarios ON  `datos imagenes`(ruta);

En este caso el campo "nro_imagen" deberás ingresarlo "manualmente" en el mismo INSERT de la imagen, realizando preferentemente una consulta previa de la cantidad de imágenes del usuario, o bien creando ese campo como auto_increment.
tu eliges, pero la opción de autoincremental no es buena para ese tipo de relaciones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #26 (permalink)  
Antiguo 03/01/2015, 12:36
 
Fecha de Ingreso: julio-2013
Ubicación: Durango, Dgo
Mensajes: 108
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: informacion sobre como relaciono una tabla con id usuarios

no me había fijado en eso ya te había comentado en una respuesta que el usuario_id de la tabla datos imágenes no debia ser autoincrementable, ese campo lo vas a llenar con el id del usuario logueado al subir la imagen ese puede estar el error, por eso te trae únicamente una imagen porque se esta autoincrmentando
  #27 (permalink)  
Antiguo 05/01/2015, 09:03
 
Fecha de Ingreso: diciembre-2014
Mensajes: 27
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: informacion sobre como relaciono una tabla con id usuarios

gracias de nuevo y perdonarme por las molestias, a ver si estoy haciendo los pasos mal.
quiero hacer como una galeria de imagenes privada para cada usuario registrado en mi web,y que los usuario loqueado cuando sube una imagenes ,estas imagenes aparecen solo en su pagina privada(perfil) y no aparecen las paginas subidas de otros usuarios
entonces tengo un sistema de registro de usuarios,y una tabla de almacenar las imagenes
y voy a crear una relacion entre la tabla de datos de imagenes y tabla de usuarios,despues creo la consulta,y las dos tablas tenen que ser innodb
me pregunta son estoy los pasos que tengo que seguir
y muchas gracias por todo
  #28 (permalink)  
Antiguo 05/01/2015, 14:16
 
Fecha de Ingreso: julio-2013
Ubicación: Durango, Dgo
Mensajes: 108
Antigüedad: 10 años, 9 meses
Puntos: 8
Respuesta: informacion sobre como relaciono una tabla con id usuarios

efectivamente los tablas las vas a ligar por medio del campo usuario_id

este campo si gusta en la tabla de los usuarios puede ser autoincrementable pero en la de las imágenes tiene que ser un campo no-autoincrmentable

ya que este campo en la tabla delas imágenes se va a llenar con el id del usuario suba la imagen y asi ya puedes realizar la consulta como te había explicado anteriormente
  #29 (permalink)  
Antiguo 06/01/2015, 02:59
 
Fecha de Ingreso: diciembre-2014
Mensajes: 27
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: informacion sobre como relaciono una tabla con id usuarios

Cita:
Iniciado por matrixre9 Ver Mensaje
efectivamente los tablas las vas a ligar por medio del campo usuario_id

este campo si gusta en la tabla de los usuarios puede ser autoincrementable pero en la de las imágenes tiene que ser un campo no-autoincrmentable

ya que este campo en la tabla delas imágenes se va a llenar con el id del usuario suba la imagen y asi ya puedes realizar la consulta como te había explicado anteriormente

hola me sale este error cuando hago la relacion alguien puede dicirme que significa
los dos (usuario_id, de datos de imagenes y registro de usuarios estan en primary key
gracias por las molestias

Error
consulta SQL:

ALTER TABLE `datos imagenes` ADD FOREIGN KEY ( `usuario_id` ) REFERENCES `fadog`.`usuarios` (

`usuario_id`
) ON DELETE CASCADE ON UPDATE CASCADE ;

MySQL ha dicho: Documentación

#1452 - Cannot add or update a child row: a foreign key constraint fails (`fadog/#sql-bd4_cc`, CONSTRAINT `#sql-bd4_cc_ibfk_1` FOREIGN KEY (`usuario_id`) REFERENCES `registro usuarios` (`usuario_id`) ON DELETE CASCADE ON UPDATE CASCADE)
  #30 (permalink)  
Antiguo 06/01/2015, 04:52
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: informacion sobre como relaciono una tabla con id usuarios

Altamente probable que tengas datos inconsistentes...
Si las tablas tienen datos, lo más probable es que una o mas de una a las que quieres poner la FK contienen en ese campo datos que no están en la tabla a la que harán referencia.
La solución más fácil es borrar todos los datos de todas las tablas antes de crear la FK.
Si no puedes, sólo resta eliminar los registros que están mal.

Nota: Otra posibilidad es que haya diferenta de tipo de dato en alguna tabla. Por ejemplo, no puedes relacionar INT con SMALLINT u otra cosa, como tampoco puedes relacionar un INT UNSIGNED con un INT con signo, ni tampoco VARCHAR(100) con VARCHAR(101), por dar una idea.
Los tipos de dato entre PK y FK deben ser exactamente los mismos.

En tu caso, a pesar de que en ambas tablas "usuario_id" es un INT, le estás poniendo esa basura de "(4)", que es totalmente innecesaria, pero puede traer problemas.
Los tipo de dato entero deben dejarse con su valor pro default, sin poner ese numerito que no restringe nada, sino que se usa para otra cosa.
Declaralo como UNSIGNED directamente y sin agregados:

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `registro usuarios` (
  2.   `usuario_nombre` varchar(15) NOT NULL,
  3.   `usuario_clave` varchar(50) NOT NULL,
  4.   `usuario_email` varchar(50) NOT NULL DEFAULT '',
  5.   `usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  6.   `tipo` enum('2','1') NOT NULL DEFAULT '2',
  7.   `facebook` varchar(250) NOT NULL,
  8.   `twitter` varchar(250) NOT NULL,
  9.   `avatar` varchar(500) NOT NULL,
  10.   PRIMARY KEY (`usuario_id`)
  11.  
  12.  
  13. CREATE TABLE IF NOT EXISTS `datos imagenes` (
  14. `usuario_id` INT UNSIGNED NOT NULL,
  15. `ruta` varchar(100) NOT NULL,
  16. `descripcion` text,
  17. PRIMARY KEY (`usuario_id`)
  18.  
  19. --
  20. -- esta es la relacion de las tablas
  21. --
  22. ALTER TABLE `datos`
  23.   ADD CONSTRAINT `datos_ibfk_1` FOREIGN KEY (`Usuario_ID`) REFERENCES `usuarios` (`usuario_ID`) ON DELETE CASCADE ON UPDATE CASCADE;

Otro detalle, producto más de lógica de sistemas que de SQL: Un nombre_usuario no puede tener un valor por default vacío, así como tampoco debe repetirse. Ese campo debe ser UNIQUE. Tampoco puede tener valor por defecto una clave. SI lo hicieras estarías permitiendo la entrada a cualquiera, tanto en uno como en otro caso.
¿Se entiende?
Código MySQL:
Ver original
  1. CREATE UNIQUE INDEX username_unq ON registro_usuarios(usuario_nombre);
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 06/01/2015 a las 06:05

Etiquetas: informacion, registro, 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 15:47.