Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/04/2014, 15:03
Avatar de HackID1
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