Foros del Web » Programando para Internet » PHP »

Insertar datos entre tablas relacionadas

Estas en el tema de Insertar datos entre tablas relacionadas en el foro de PHP en Foros del Web. Hola no voy a poder seguir de esta manera, el usuario me inicia sesion y a partir de ahy puedo comenzar a publicar. Obtengo los ...
  #1 (permalink)  
Antiguo 02/04/2012, 14:35
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 8 años
Puntos: 1
Insertar datos entre tablas relacionadas

Hola no voy a poder seguir de esta manera, el usuario me inicia sesion y a partir de ahy puedo comenzar a publicar.

Obtengo los datos de usuario correctamente pero si lo inserto normal me da un error a la hora de introducir los datos.

Cannot add or update a child row: a foreign key constraint fails (`kfernandez`.`album1`, CONSTRAINT `album1_ibfk_1` FOREIGN KEY (`id_usuario`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)
  #2 (permalink)  
Antiguo 02/04/2012, 14:40
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 11 años, 4 meses
Puntos: 1532
Respuesta: Insertar datos entre tablas relacionadas

muestranos el código del INSERT para ayudarte, lo que debes de hacer es colocar el ID del usuario, que es la FK requerida
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 02/04/2012, 14:49
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 11 años, 3 meses
Puntos: 139
Respuesta: Insertar datos entre tablas relacionadas

Ese error es mas bien de mysql y quiere decir que no puedes crear un album con un id_usuario que no existe
Antes de crear un album tienes que tener el id_usuario al cual vas avincular el album
Por que el tipo de realacion que tienes es de n:1 o sea un usuario puede tener muchos album pero un album solo puede tener un usuario.
  #4 (permalink)  
Antiguo 02/04/2012, 15:52
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 8 años
Puntos: 1
Respuesta: Insertar datos entre tablas relacionadas

mysql_query("insert into album1 values ('" . $id_album . "','" . $id_usuario . "','" . $album . "')")or die (mysql_error());;

este es el álbum, los datos los inserto normal.

Gracias y saludos!!

Respondo que a la tabla users he añadido una clave primaria pàra el id de usuario.

Última edición por kfh1992; 02/04/2012 a las 16:00
  #5 (permalink)  
Antiguo 02/04/2012, 16:04
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 11 años, 4 meses
Puntos: 1532
Respuesta: Insertar datos entre tablas relacionadas

quita las comillas simples si se tratan de enteros
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #6 (permalink)  
Antiguo 02/04/2012, 16:10
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 8 años
Puntos: 1
Respuesta: Insertar datos entre tablas relacionadas

ahora me sale esto

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'laiete)' at line 1

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ',amistad)' at line 1

Codigo php

<?php
include("../config.php");
session_start();
$id_album = $_POST['id_album'];
$id_usuario = $_POST['id_usuario'];
$album=$_POST['title_album'];
if (isset($_SESSION['user'])) {
//Crear album//
mkdir ("./album/$album");
mysql_query("insert into album1 values (" . $id_album . "," . $id_usuario . "," . $album . ")")or die (mysql_error());;
echo "Álbum creado correctamente";
include("formulario.php");
}else{
echo 'No puedes crear el álbum si no has Iniciado Sesión ';
}
?>
  #7 (permalink)  
Antiguo 02/04/2012, 16:30
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 11 años, 3 meses
Puntos: 139
Respuesta: Insertar datos entre tablas relacionadas

kfh1992, maycolalvarez te habia dicho
Cita:
Iniciado por maycolalvarez Ver Mensaje
quita las comillas simples si se tratan de enteros
Supongo que $album es el nombre del album por ende no es un entero
  #8 (permalink)  
Antiguo 02/04/2012, 16:32
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 8 años
Puntos: 1
Respuesta: Insertar datos entre tablas relacionadas

$album es el nombre del album $id_usuario el de usuario que es donde da el error.
  #9 (permalink)  
Antiguo 02/04/2012, 16:49
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 11 años, 3 meses
Puntos: 139
Respuesta: Insertar datos entre tablas relacionadas

Código PHP:
Ver original
  1. mysql_query("insert into album1 values (".$id_album.",".$id_usuario.",'".$album."')")or die (mysql_error());
  #10 (permalink)  
Antiguo 03/04/2012, 10:55
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 8 años
Puntos: 1
Respuesta: Insertar datos entre tablas relacionadas

Hola, me sigue saliendo el mismo error :(

<form id="form1" name="form1" method="post" action="create.php">
<label for="title_album"></label>
<input type="text" name="title_album" id="title_album" />
<input type="submit" name="create_album" id="create_album" value="Crear "/>
</form>

//////

<?php
include("../config.php");
session_start();
$id_album = $_POST['id_album'];
$id_usuario = $_POST['id_usuario'];
$album=$_POST['title_album'];
if (isset($_SESSION['user'])) {
//Crear album//
mkdir ("./album/$album");
mysql_query("insert into album1 values (".$id_album.",".$id_usuario.",".$album."")or die (mysql_error());
echo "Álbum creado correctamente";
include("formulario.php");
}else{
echo 'No puedes crear el álbum si no has Iniciado Sesión ';
}
?>
  #11 (permalink)  
Antiguo 03/04/2012, 12:43
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 11 años, 3 meses
Puntos: 139
Respuesta: Insertar datos entre tablas relacionadas

No veo los campos de
id_album y id_usuario
Como se supone que optienes esos dos valores ?
  #12 (permalink)  
Antiguo 03/04/2012, 13:11
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 8 años
Puntos: 1
Respuesta: Insertar datos entre tablas relacionadas

Como obtengo esos valores?Yo inicio sesion del usuario y mantengo la sesión correctamente...para introducir los datos no es necesario obtener los campos del usuario ?
  #13 (permalink)  
Antiguo 04/04/2012, 13:03
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 8 años
Puntos: 1
Respuesta: Insertar datos entre tablas relacionadas

mysql_query("insert into album1 values (".$id_album.",".$id_usuario.",'".$album.")")or die (mysql_error());

Este sql me sigue dando el mismo error
  #14 (permalink)  
Antiguo 04/04/2012, 13:08
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 11 años, 3 meses
Puntos: 139
Respuesta: Insertar datos entre tablas relacionadas

Es que yo por lo menos, no entiendo de donde sacas las variable
de $id_album No entiendo por que vas a insertar en la tabla de album con el $id_album de otro album.
  #15 (permalink)  
Antiguo 04/04/2012, 13:16
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 8 años
Puntos: 1
Respuesta: Insertar datos entre tablas relacionadas

ok entonces hay una cosa que no he explicado bien el $id_album crea un album nuevo y lo guarda en la base de datos, el $id_usuario es del usuario que ha iniciado sesión que ese es el error que da.
Ahora?
  #16 (permalink)  
Antiguo 07/04/2012, 08:17
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 8 años
Puntos: 1
Respuesta: Insertar datos entre tablas relacionadas

Tengo que hacer eddos inserts o como?
  #17 (permalink)  
Antiguo 07/04/2012, 09:43
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 11 años, 3 meses
Puntos: 139
Respuesta: Insertar datos entre tablas relacionadas

Bueno pues lo que te puedo sugerir es que imprimas el resultado de estas tres variables

Código PHP:
Ver original
  1. $id_album = $_POST['id_album'];
  2. $id_usuario = $_POST['id_usuario'];
  3. $album=$_POST['title_album'];
  4.  
  5. echo $id_album."<br />";
  6. echo $id_usuario."<br />";
  7. echo $album."<br />";

y el valor que te devuelvan tómalo he insertalos directamente en la base de datos haber si te genera algún error.
  #18 (permalink)  
Antiguo 08/04/2012, 07:25
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 8 años
Puntos: 1
Respuesta: Insertar datos entre tablas relacionadas

He puesto esto que me has dicho y me sale

( ! ) Notice: Undefined index: id_album in C:\wamp\www\script\galeria\create.php on line 12


( ! ) Notice: Undefined index: id_usuario in C:\wamp\www\script\galeria\create.php on line 13

Luego tengo que decir que a través de la base de datos los datos los puedo introducir sin ningun problema pero que a través de formulario no hay manera de lograrlo.
  #19 (permalink)  
Antiguo 08/04/2012, 09:19
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 11 años, 3 meses
Puntos: 139
Respuesta: Insertar datos entre tablas relacionadas

Eso esta bien claro la variables id_album y id_usuario estan indefinida o sea no existe.

esas dos variables supuestamente la recibes a través de un formulario en post anteriores habias puesto el formulario que utilizas

Código HTML:
Ver original
  1. <form id="form1" name="form1" method="post" action="create.php">
  2. <label for="title_album"></label>
  3. <input type="text" name="title_album" id="title_album" />
  4. <input type="submit" name="create_album" id="create_album" value="Crear "/>
  5. </form>

Solo veo un input para el titulo del album no se de donde supones que vas a sacar el id del album y id del usuario.

Me gustaria que hicieras un var_dump a la secciones para ver si es de ahi q quieres sacar esos datos.

Código PHP:
Ver original
  1. <?php
  2.  var_dump($_SESSION);
  3. ?>
  #20 (permalink)  
Antiguo 08/04/2012, 09:34
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 8 años
Puntos: 1
Respuesta: Insertar datos entre tablas relacionadas

Los valores que me da la sesion son estos

array
'user' => &
array
'username' => string '[email protected]' (length=19)
'password' => string '123456' (length=6)
'alias' => string 'kikofernandez' (length=13)
'name' => string 'Kiko' (length=4)
'surname' => string 'Fernandez' (length=9)

Este es mi login para poder adquirirlo ...creo que está un poco desordenado pero bueno

<?php
session_start();

if(isset($_POST['mail']) && isset($_POST['password'])){

$mail = $_POST['mail'];
$password = $_POST['password'];

include 'config.php' ;

$query = mysql_query("SELECT * FROM users WHERE mail='$mail' and password='$password' ") or die (mysql_error());
$numrows = mysql_num_rows($query);

if($numrows == 0){

echo 'el email o la contraseña no existen';

}else{

while ($row = mysql_fetch_assoc($query)){
$dbusername = $row['mail'];
$dbpassword = $row['password'];
$dbalias = $row['alias'];
$dbname = $row['name'];
$dbsurname = $row['surname'];

}
//fin de while

if($mail == $dbusername){ // comparamos el email

if($password == $dbpassword){ // comparamos la contraseña

// creamos la session con todos los datos en un array
$_SESSION['user'] = array(
'username' => $dbusername,
'password' => $dbpassword,
'alias' => $dbalias,
'name' => $dbname,
'surname' => $dbsurname);
echo "Se ha identificado correctamente $dbusername";
echo "Nombre: $dbname";
echo "Apellidos: $dbsurname";
echo "Alias: $dbalias";
////
;
}else{

echo 'El password no coincide';

}}else{ // fin de validacion de contraseña

echo 'el usuario introducido no es correcto';

}}}else{ // fin de validacion mail

echo 'No ha introducido ningun dato';

} // fin de isset


?>
  #21 (permalink)  
Antiguo 08/04/2012, 09:43
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 11 años, 3 meses
Puntos: 139
Respuesta: Insertar datos entre tablas relacionadas

Si te fijas, en ningún lugar recibes el id del usuario logiado para posteriormente crear el album con ese id.
deberias almacenar en una _SESSION el id del usuario.



PD: Debes utilizar la logica cuando programas, dibujar en tu mente el flujo de los datos, el problema que veo en todos los post que has hecho es de lógica.

Etiquetas: relacionadas, tablas, 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 13:30.