Foros del Web » Programando para Internet » PHP »

Insertar datos en 3 tablas

Estas en el tema de Insertar datos en 3 tablas en el foro de PHP en Foros del Web. Hola necesito ayuda para realizar lo siguiente: A) Tengo 3 tablas relacionadas en mi base de datos ::::cliente:::: id_cliente (PK) nombre foto ::::telefono:::: id_telefono (PK) ...
  #1 (permalink)  
Antiguo 17/10/2009, 10:34
Avatar de acousticgerman  
Fecha de Ingreso: abril-2004
Ubicación: Merlo, buenos aires
Mensajes: 364
Antigüedad: 20 años
Puntos: 1
De acuerdo Insertar datos en 3 tablas

Hola necesito ayuda para realizar lo siguiente:


A) Tengo 3 tablas relacionadas en mi base de datos

::::cliente::::
id_cliente (PK)
nombre
foto

::::telefono::::
id_telefono (PK)
id_cliente (FK)
numero


::::localidad::::
id_localidad (PK)
id_cliente (FK)
ciudad


B) Mi código PHP:

$primarykey1 = "INSERT INTO cliente (nombre, foto) VALUES ('$nombrecliente', '$fotito')";


$idcostumer = mysql_insert_id($primarykey1);

mysql_query("INSERT INTO telefono (id_cliente, numero) VALUES ('$idcostumer',$numerotelefono')");

mysql_query("INSERT INTO localidad(id_cliente, ciudad) VALUES ('$nombreciudad')");


Lo que necesito es realizar un INSERT de datos y como las tablas están relacionadas ingrese los datos en c/u de ellas como corresponde, pero no puedo lograrlo con este código ya que me tira el siguiente error:

Warning: mysql_insert_id(): supplied argument is not a valid MySQL-Link resource in /home/wwwalte/public_html/upload.php on line 62

Cabe destacar que las variables las traigo de un form html que no es necesario detallar, gracias!
__________________
"Life goes on..."
  #2 (permalink)  
Antiguo 17/10/2009, 11:26
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Insertar datos en 3 tablas

Prueba así:
Código php:
Ver original
  1. $primarykey1 = "INSERT INTO cliente (nombre, foto) VALUES ('$nombrecliente', '$fotito')";
  2. mysql_query($primarykey1);
  3.  
  4. $idcostumer = mysql_insert_id();
  5.  
  6. mysql_query("INSERT INTO telefono (id_cliente, numero) VALUES ('$idcostumer',$numerotelefono')");
  7.  
  8. mysql_query("INSERT INTO localidad(id_cliente, ciudad) VALUES ('$nombreciudad')");

Espera que muevan el tema al foro de php.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 17/10/2009, 11:46
Avatar de acousticgerman  
Fecha de Ingreso: abril-2004
Ubicación: Merlo, buenos aires
Mensajes: 364
Antigüedad: 20 años
Puntos: 1
De acuerdo Respuesta: Insertar datos en 3 tablas

No me tira ningún error pero no sube los datos a la base de datos

¿Qué podrá ser?

Gracias x responder Huesos52
__________________
"Life goes on..."
  #4 (permalink)  
Antiguo 17/10/2009, 11:49
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Insertar datos en 3 tablas

acosticgerman... El problema es de php y no de base de datos
Ya reporté tu mensaje, espera que david mueva el tema al sitio adecuado. allí de seguro te lo solucionan
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 17/10/2009, 12:06
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Insertar datos en 3 tablas

Tema transladado desde la sección de MySQL.

En todas las consultas imprime el valor de mysql_error() en caso de que devuelva falso.
Como observación, en la última consulta no coincide la cantidad de campos con su valor a guardar.

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 17/10/2009, 12:16
Avatar de acousticgerman  
Fecha de Ingreso: abril-2004
Ubicación: Merlo, buenos aires
Mensajes: 364
Antigüedad: 20 años
Puntos: 1
De acuerdo Respuesta: Insertar datos en 3 tablas

Miren así tengo actualmente el código PHP

$primarykey1 = "INSERT INTO cliente (nombre, foto) VALUES ('$nombrecliente', '$fotito')";

mysql_query($primarykey1);

$idcostumer = mysql_insert_id();

mysql_query("INSERT INTO telefono (id_cliente, numero) VALUES ('$idcostumer',$numerotelefono')");

mysql_query("INSERT INTO localidad(id_cliente, ciudad) VALUES ('$idcostumer', '$nombreciudad')");

Pero sigue sin funcionar solo me ingresa los 2 campos de la TABLA CLIENTE, es como que no relaciona las otras 2.
__________________
"Life goes on..."
  #7 (permalink)  
Antiguo 17/10/2009, 12:21
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Insertar datos en 3 tablas

Como te comenté, imprime el valor de mysql_error() para saber qué problema están dando las consultas:
Código PHP:
Ver original 
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 17/10/2009, 12:27
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Insertar datos en 3 tablas

nose mucho de php, pero supongo que mysql_insert_id hace una ejecución de select last_insert_id() en mysql.
Para que esta función funcione (valga la redundancia) es necesario que el campo sea autoincrement y promary key.

Lo tienes así?

Por otro lado, prueba lo que te dice david y muestranos el error que genera.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 17/10/2009, 12:41
Avatar de acousticgerman  
Fecha de Ingreso: abril-2004
Ubicación: Merlo, buenos aires
Mensajes: 364
Antigüedad: 20 años
Puntos: 1
De acuerdo Respuesta: Insertar datos en 3 tablas

Me tira este error:

<?

$host = "localhost";
$user = "usuario_db";
$pass = "clave";
$db = "nombre_db";

$connect = mysql_connect($host,$user,$pass);
$database = mysql_select_db($db, $connect);

//CLIENTE

$nombrecliente = $_GET[nombrecliente];
$imgcliente = $_GET['imgcliente'];

//TELEFONO

$tipotelefono = $_GET[tipotelefono];
$codigoarea = $_GET[nombrecliente];
$numerotelefono = $_GET[numerotelefono];

// 22 VENTA

$cantidadventa = $_GET[cantidadventa];


//UPLOAD FOTO

$nombre=$_FILES['imgcliente']['name'];

$id = md5(uniqid(rand(), true));

$ext= substr(strrchr($nombre, "."),1);

$nvo= $id.".".$ext;


$foto= "imagenes/".$nvo;
move_uploaded_file($_FILES['imgcliente']['tmp_name'], $foto);



$insertSQL1 = "INSERT INTO cliente (nombre, foto) VALUES ('$nombrecliente', '$nvo')";

mysql_query($insertSQL1);

$idcostumer = mysql_insert_id();

$insertSQL2 = "INSERT INTO telefono (id_cliente, tipo_telefono, codigo_area, numero) VALUES ('$idcostumer','$tipotelefono',

'$codigoarea', $numerotelefono')";

$insertSQL3 = "INSERT INTO venta (cantidad) VALUES ('$idcostumer', '$cantidadventa')";


mysql_select_db($db, $connect);

$Result1 = mysql_query($insertSQL1, $connect) or die(mysql_error());

$Result2 = mysql_query($insertSQL2, $connect) or die(mysql_error());

$Result3 = mysql_query($insertSQL3, $connect) or die(mysql_error());


?>



BUENO ÉSTE ES EL CÓDIGO COMPLETO PHP CON MIS CAMPOS DE TABLAS ORIGINALES SIGUE SIN FUNCIONAR SOLO ME CARGA LOS CAMPOS DE LA TABLA CLIENTE LA 1ERA. Y ESTE ES EL ERROR QUE ACTUALMENTE ME TIRA:

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 '')' at line 1
__________________
"Life goes on..."
  #10 (permalink)  
Antiguo 17/10/2009, 13:02
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Insertar datos en 3 tablas

te falta o te sobra una comilla en el ultimo campo del segundo insert.

en el tercer insert debes pasarle dos parametros si le vas a insertar 2 parametros. Le estas psando solo cantidad y tratas de insertar el id_customer y la cantidad.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #11 (permalink)  
Antiguo 17/10/2009, 13:12
Avatar de acousticgerman  
Fecha de Ingreso: abril-2004
Ubicación: Merlo, buenos aires
Mensajes: 364
Antigüedad: 20 años
Puntos: 1
De acuerdo Respuesta: Insertar datos en 3 tablas

YES!!!! ahora sí muchachos!! era tan solo un error de sintáxis muchas gracias a los 2!!!

Un saludo enorme y muchísimas gracias!!!
__________________
"Life goes on..."
  #12 (permalink)  
Antiguo 17/10/2009, 13:12
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Insertar datos en 3 tablas

¿Cuál es la consulta que te genera el error? Imprime un valor en cada una para que sepas cuál es la que falla.

Por un lado, lo que veo es que en la tercera consulta nuevamente no coincide la cantidad de campos con la cantidad de valores a insertar. Además, $insertSQL1 la ejecutas dos veces.

EDITO: Llegué tarde. Me alegra que lo hayas solucionado. Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
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 00:12.