Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/04/2015, 15:41
Fer_912013
 
Fecha de Ingreso: diciembre-2013
Mensajes: 3
Antigüedad: 10 años, 11 meses
Puntos: 0
Problema al subir imagenes multples en php!!

Hola amigos del foro, tengo el siguiente problema y espero que alguien me ayude a saber en que estoy mal:
Estoy haciendo una aplicación que envia un formulario con dos inputs de tipo text y dos de tipo file y almacenar la información en una BDD. El problema es que al almacenarlo me multiplica los datos en mi base. Lo que quiero es que me almacene las dos imagenes que generen en el input file y los text.
La estructura de mi base de datos es la siguiente:
Tabla Productos
--------------------
Id_producto
nombre_producto
clave_producto

Tabla Imagenes
---------------------
id_imagen
nombre_imagen
id_producto

Almacenara los input text en la tabla productos y los input file en la tabla imagenes, y se relacionaran las imagenes por medio de el id del producto.

Tengo el siguiente codigo....
El form que envia los datos por post:
Código HTML:
<form action="upload.php" method="post" enctype="multipart/form-data">
 <label>Nombre Producto:</label><input type="text">
<label>Clave Producto:</label><input type="text">
<label>Imagen 1: <input type="file" name="archivo[]">
<label>Imagen 2: <input type="file" name="archivo[]">
<input type=""
Archivo upload.php:
Código PHP:
$ruta="imagenes_productos/";
 
//Recibe por post los inputs
    
$nombre_producto $_POST['nombre_producto'];
    
$cve_producto $_POST['cve_producto'];

//Inserta los input text en la tabla productos
    
$sql "INSERT INTO producto (id_producto, nombre_producto, cve_producto) VALUES ('','$nombre_producto','$cve_producto')";
    echo 
$sql;
    
$consulta mysql_query($sql,$conn) or die("Valio madre >_<...1");
    
$res mysql_query($sql);

//Guarda el id del ultimo registro generado con el insert
        
$id_producto=mysql_insert_id();
        echo 
"ultimo id: ".$id_producto;

//Bucle para leer los inputs de tipo file
        
for($i=0$i <= count($_FILES["archivo"]); $i++){
       
$nombre_fichero=$_FILES["archivo"]["name"][$i];
       
$nombre_temporal_que_le_ha_dado_php=$_FILES["archivo"]["tmp_name"][$i];
            
//mueve el archivo a la ruta especificada
            
move_uploaded_file($nombre_temporal_que_le_ha_dado_php,$ruta.$nombre_fichero);
    
//permisos
            
chmod($ruta.$nombre_fichero,0777);

Realiza el insert en la tabla imagenes con el id del producto registrado en query anterior
                $sql2 
"INSERT INTO imagenes (id_imagen, nombre_imagen, producto_id_producto) VALUES ('','$nombre_fichero','$id_producto')";
                
$res2=mysql_query($sql2) or die("Valio madre >_<...2");
                if(
$res2){
                    echo 
"Subido Correcto";
                }
                else{
                    echo 
$_FILES["archivo"]["name"][$i]." Se subió mal";
                }
            }
            exit; 
El problema que tengo es que al enviar el form si guarda los datos en la base de datos, pero me genera registros duplicados en la tabla productos y en la tabla imagenes almacena bien el nombre de la imagen y el id del ultimo registro, bueno digamos que entre comillas porque toma el id del producto del registro duplicado y ademas genera valores nulos, graficamente me da esto en la BDD:

Tabla Productos
---------------------------
id_producto nombre_prod desc_prod
1 Libreta Cuadros
2 Libreta Cuadros

Tabla Imagenes
---------------------------
id_imagen nombre_imagen id_producto
1 imagen1.jpg 2
2 imagen2.jpg 2
3 null null
4 null null
5 null null
6 null null

No se a que se deba esto pero se supone que debería ser asi:

Tabla Productos
---------------------------
id_producto nombre_prod desc_prod
1 Libreta Cuadros

Tabla Imagenes
---------------------------
id_imagen nombre_imagen id_producto
1 imagen1.jpg 1
2 imagen2.jpg 1

Espero puedan apoyarme, desde ya gracias.