Foros del Web » Programando para Internet » PHP »

Insert en 3 tablas mediante formulario php. se duplica

Estas en el tema de Insert en 3 tablas mediante formulario php. se duplica en el foro de PHP en Foros del Web. Hola a todos!!!. Bueno posteo aqui mi pregunta es sobre 3 consultas INSERT SQL en un formulario PHP. MI PROBLEMA es que la inserción de ...
  #1 (permalink)  
Antiguo 07/04/2014, 15:03
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 2 meses
Puntos: 17
Pregunta Insert en 3 tablas mediante formulario php. se duplica

Hola a todos!!!.

Bueno posteo aqui mi pregunta es sobre 3 consultas INSERT SQL en un formulario PHP.

MI PROBLEMA es que la inserción de datos en las tablas, se hace 2 veces es decir, se repite 2 veces por cada cliente en la tabla realizados.
Espero me puedan ayudar, dejo aquí los datos de creación de tablas y la consulta php que hice.


Tengo 3 tablas en una bd llamada "prueba"

Las tablas son:

Código SQL:
Ver original
  1. -- CREACION TABLAS bd  prueba
  2.  
  3.     /* pongo fecha varchar10 para permitir almacenar la forma de dd/mm/yy*/
  4. CREATE TABLE clientes (
  5.         codcliente  INT AUTO_INCREMENT,
  6.         fecha_alta  VARCHAR(10),
  7.         nombre      VARCHAR(50),
  8.     PRIMARY KEY (codcliente)
  9.             );
  10.            
  11. CREATE TABLE trabajos (
  12.         codtrabajo      INT AUTO_INCREMENT,
  13.         tipo_trabajo    VARCHAR(20),
  14.         imagen          mediumblob,        
  15.         tipo_imagen     VARCHAR(30),
  16.     PRIMARY KEY (codtrabajo)
  17.             );
  18.            
  19. CREATE TABLE realizados (
  20.         codrealizado    INT AUTO_INCREMENT,
  21.         codcliente      INT,
  22.         codtrabajo      INT,
  23.         descripcion     VARCHAR(200),
  24.         precio          DECIMAL(6,2),
  25.     PRIMARY KEY (codrealizado),
  26.     FOREIGN KEY (codcliente) REFERENCES clientes(codcliente),
  27.     FOREIGN KEY (codtrabajo) REFERENCES trabajos(codtrabajo)
  28.             );


Bien pues como ven hay 2 campos FOREIGN KEY en la tabla "realizados"
los cuales son: codcliente proviene de tabla clientes y codtrabajo proviene tabla trabajos.

Bueno hasta hay bien, todo creado, pero tengo un formulario el cual quiero insertar datos del cliente, y como saben el idcliente debería rellenarse en la otra tabla,
ejm: si inserto cliente1 este tomará el IDCLIENTE = 1.
Luego ese IDCLIENTE pasaría también a guardarse en la tabla "realizados" para tener relacion entre ellos.

tengo el formulario y cuando le doy el boton envio llama este fichero.

---------------ficheroalta.php

Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4.     $nombre = $_SESSION['nombre'] ;
  5.     $f_alta = $_SESSION['f_alta'] ;
  6.        
  7. //CONECTO A LA BD.
  8.     include ("abre_conexion.php");
  9. //$conecta=mysql_connect('localhost', 'root', '');
  10. //mysql_select_db ('control1',$conecta);
  11.  
  12. //INSERTO LOS DATOS EN LA 1 tabla clientes
  13. $operacion="insert into clientes
  14.         values('','$f_alta','$nombre')";
  15.  
  16. //COMPRUEBO SI HAY ERROR.
  17. if(!mysql_query($operacion)) echo mysql_error();
  18.  
  19.  
  20. //Obteniendo último id insertado (qué es el de USUARIOS, ya que es el que necesitaremos para ligarlo a las otras tablas.
  21. $codcliente = mysql_insert_id();
  22.  
  23. //INSERTO DATOS EN LA 2 tabla trabajos
  24. $operacion="insert into trabajos
  25.         values('','','','' ) ";
  26. if(!mysql_query($operacion)) echo mysql_error();
  27.  
  28. //Obteniendo último id insertado (qué es el de TRABAJO, ya que es el que necesitaremos para ligarlo a las otras tablas.
  29. $codtrabajo = mysql_insert_id();
  30.  
  31. //INSERTO DATOS EN LA 3 tabla realizados
  32. $operacion="insert into realizados
  33.         values('','$codcliente','$codtrabajo','','','')";
  34. if(!mysql_query($operacion)) echo mysql_error();
  35.  
  36. /**/
  37.            
  38. if (mysql_query($operacion,$conexion_db)){
  39. print "<br>" . "La consulta se ha realizado correctamente";
  40. } else {
  41. print " <br>" . "La consulta no se ha realizado correctamente.";
  42. }
  43.  
  44. ?>

Bien los datos se insertan .
PERO se insertan 2 veces en la "tabla realizados"

¿Esto porque, como puedo solucionarlo. porfavor es urgente. ?

Muchas gracias a todos los que me puedan ayudar, no he podido solucionarlo y no se a que se debe que se repita la inserción de datos en esa tabla.

Un saludo!!!!
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1
  #2 (permalink)  
Antiguo 07/04/2014, 15:51
Avatar de asus090102  
Fecha de Ingreso: mayo-2012
Ubicación: Ensenada- Buenos Aires
Mensajes: 67
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: Insert en 3 tablas mediante formulario php. se duplica

<?php
session_start();
include ("abre_conexion.php");

$nombre = $_SESSION['nombre'] ;
$f_alta = $_SESSION['f_alta'] ;

$operacion="insert into clientes values('','$f_alta','$nombre')";
mysql_query($operacion1);

$codcliente = mysql_insert_id();
$operacion1="insert into trabajos values('','','','' ) ";
mysql_query($operacion1);

$codtrabajo = mysql_insert_id();
$operacion2="insert into realizados values('','$codcliente','$codtrabajo','','','')";
mysql_query($operacion2);
?>
  #3 (permalink)  
Antiguo 07/04/2014, 17:39
Avatar de andresgarciadev  
Fecha de Ingreso: junio-2013
Mensajes: 218
Antigüedad: 10 años, 9 meses
Puntos: 32
Respuesta: Insert en 3 tablas mediante formulario php. se duplica

pues claro estas haciendo dos veces
Código PHP:
Ver original
  1. mysql_query($operacion)
apesar de solo estar llamando para validar eso hace que realice por dentro dos veces la consulta
no es necesario usar $conexion_db por que arriba ya estas incluyendo la connexion
y bueno.... en otras palabra procura solo hacer una vez $conexion_db y las dos validaciones que hacs juntarlas en una
  #4 (permalink)  
Antiguo 08/04/2014, 06:53
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 2 meses
Puntos: 17
Respuesta: Insert en 3 tablas mediante formulario php. se duplica

Gracias por la pronta respuesta asus090102, en si era eso quite el if del final y funciono.

Y muchas gracias a "andresgarciadev" por la explicación rápida que me ha dado, magnifico la ayuda que me aportais muchas gracias.

Ahora seguiré y bueno he comentado otro nuevo post en el cual tengo algunas dudas un saludo, ya seguiré posteando problemas que tenga porque estoy realizando una serie de proyectos y siempre hay dudas y cosas nuevas.

Un saludo!!! y gracias a todos. en fin la respuesta es tal como la han comentado arriba. :)
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1

Etiquetas: formulario, insert, sql
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 20:17.