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.