En la zona de admin, tengo una sección para subir productos...
Esos productos están relacionados con multiples tablas.
Tengo unos checkbox, que contienen varias opciones, las cuales pueden ir varias tildadas o sólo una, pero siempre tiene que llevar al menos una.
Mi problema es que no se como realizar ese insert. Lo estoy intentando de esta manera con un foreach, pero lo que hace es hacer como máximo 2 insert, y en la columna "compatible", en vez de añadir un valor distinto cada vez que añade un producto compatible, lo que hace es darle el mismo valor, es decir, si marco la casilla modelo 1, modelo 2 y modelo 3, Lo unico que me ingresa es:
Máximo de 2 insert
En la casilla compatible, a esos dos insert lo que hace es ponerle el mismo compatible (debería ser 1 y 2), es decir, sale 1 en los dos.
Código PHP:
Ver original
<?php //conexión con la base de datos $conexion = conecta_base_datos(); if($_POST) { //echo "he recibido los datos y procederé a insertarlos"; //primero se deben hacer algunas validaciones if ($_POST["nombre_producto"]==""){ echo "No he recibido el nombre del producto..."; }elseif($_POST["id_subgeneral"]==""){ echo "No he recibido la categoría del equipo..."; }else{ echo "He recibido datos correctos y procedo a insertarlos..."; $elec_array = $_POST['compatible']; if ($elec_array=='') { $query = "INSERT INTO productos (nombre_producto,id_subgeneral,id_fabricante,compatible) VALUES('" . $_POST["nombre_producto"] . "','" . $_POST["id_subgeneral"] . "','" . $_POST["id_fabricante"] . "','')"; } else { foreach ($elec_array as $one_elec) { $source .= $one_elec.", "; } echo $elec; $query = "INSERT INTO productos (nombre_producto,id_subgeneral,id_fabricante,compatible) VALUES('" . $_POST["nombre_producto"] . "','" . $_POST["id_subgeneral"] . "','" . $_POST["id_fabricante"] . "','" . $elec . "')"; } //$ssql ="INSERT INTO productos (nombre_producto,id_subgeneral,id_fabricante,compatible) values ('" . $_POST["nombre_producto"] . "','" . $_POST["id_subgeneral"] . "','" . $_POST["id_fabricante"] . "','" . $compatible . "')"; echo "<h4 class='alert_success'>¡Producto insertado correctamente!</h4>"; //print "<meta http-equiv=Refresh content=\"2 ; url=./\">"; }else{ echo"<h4 class='alert_error'>Hubo un error al insertar los datos</h4>"; } } }else{ ?> <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post"> <fieldset> <label>Nombre producto: </label> <input type="text" name="nombre_producto"> </fieldset> <fieldset> <label>Categoría:</label> <select name="id_subgeneral"> <?php $ssql = "select * from cat3_subgeneral"; echo "<option value=" . $fila["id_subgeneral"] . ">" .$fila["nombre_subgeneral"] . "</option>"; } ?> </select> </fieldset> <fieldset> <label>Fabricante:</label> <select name="id_fabricante"> <?php $ssql = "select * from fabricante"; echo "<option value=" . $fila["id_fabricante"] . ">" .$fila["nombre_fabricante"] . "</option>"; } ?> </select> </fieldset> <fieldset> <label>Coches compatibles:</label> <?php $conexion = conecta_base_datos(); $ssql = "SELECT * FROM modelo INNER JOIN marcas ON marcas.id_marca = modelo.id_marca"; echo '<br><input type="checkbox" name="compatible[]" value="' . $fila["id_modelo"] . '">' . utf8_encode($fila["nombre_modelo"]) . ' - ' . utf8_encode($fila["nombre_marca"]) . '<br>'; } ?> </fieldset> <fieldset> <input type="submit" value="Enviar"> </fieldset> </form> <?php } //Cerrar conexión con la base de datos, porque si no, al entrar demasiada gente, MYSQL se cae ?>
Este es el código.
También arroja otro error:
Notice: Undefined variable: source in C:\wamp\www\proyectos\...\admin\enviar-producto.php on line 26
Donde la variable indefinida es la variable que defino para usar el foreach:
$one_elec
La estructura de las tablas que aparecen:
modelo{id_modelo, nombre_modelo,id_marca}
marcas{id_marca,nombre_marca}
cat3_subcategoria{id_subcategoria,nombre_categoria }
productos{id_producto,nombre_producto,id_subcatego ria,compatible}
Donde la columna compatible, sería el valor de id_modelo.
Alguien sabe como podría solucionar esto?