Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/01/2012, 14:38
Sabin
 
Fecha de Ingreso: marzo-2008
Mensajes: 60
Antigüedad: 16 años, 1 mes
Puntos: 0
Insertar array en DB

Buenas, necesito ayuda a la hora de insertar unos datos en forma de array desde un formulario dinamico en mi base de datos.

En si se insertan perfectamente el problema que tengo es que quisiera que un dato que se inserta y no tiene la misma cantidad de elementos que los demas arrays repita su valor en cada insert hasta completar la misma cantidad que los demas.

No se si me logre explicar, expongo el codigo, lo que inserto actualmente y lo que quisiera que se inserte.

De momento recibo estos arrays por el metodo Post y los inserto en la base de datos:


[album] => Array
(
[0] => valor de album 0
)

[imagen] => Array
(
[0] => valor de imagen 0
[1] => valor de imagen 1
[2] => valor de imagen 2
)

[tumb] => Array
(
[0] => valor de tumb 0
[1] => valor de tumb 1
[2] => valor de tumb 2
)

[contador] => 3
[Submit] => Enviar

De los arrays [imagen] y [tumb] Pueden llegar tanto 1 como 108 valores por ejemplo, ya que provienen de campos de texto que se generan de manera dinamica, pudiendo agregar la cantidad que uno quiera.

Lo cual mediante este codigo lo inserto en la base de datos:


Código HTML:
Ver original
  1. <form name="form1" method="POST" action="prueba.php">
  2. <input type="text" name="album[]" /><br/>
  3. <input type="button" value="Crear" onclick="crear(this)">
  4. <input type="button" name="b2" value="Quitar" onClick="borrar()" >
  5. <fieldset id="fiel">
  6. <input type="hidden" name="contador" value="" />
  7. <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="Enviar" onClick="return verificar()">
  8. </form>

Código PHP:
<?php
for ($i 0count($_POST['imagen']); $i++) {
    
    if( !isset(
$_POST['imagen'][$i]) || !isset($_POST['tumb'][$i]) ) {
        continue;
    }

    
$sql 'INSERT INTO multiples
        (imagenes, tumbs, album)
        VALUES
        ("'
.addslashes($_POST['imagen'][$i]).'", "'.addslashes($_POST['tumb'][$i]).'", "'.addslashes($_POST['album'][$i]).'")';
        
echo 
$sql."<br/>";
}
?>
De esta manera logro el siguiente insert:

INSERT INTO multiples (imagenes, tumbs, album) VALUES ("valor de imagen 0", "valor de tumb 0", "valor de album 0")

Notice: Undefined offset: 1 in C:\Archivos de programa\EasyPHP-5.3.6.1\www\mioprueba.php on line 89
INSERT INTO multiples (imagenes, tumbs, album) VALUES ("valor de imagen 1", "valor de tumb 1", "")

Notice: Undefined offset: 2 in C:\Archivos de programa\EasyPHP-5.3.6.1\www\mioprueba.php on line 89
INSERT INTO multiples (imagenes, tumbs, album) VALUES ("valor de imagen 2", "valor de tumb 2", "")

El "Undefined offset" aparece para indicar que estoy intentando agregar un valor que no esta definido, en este caso seria [album][1] y [album][2],
Esto lo puedo solucionar con un simple isset para evitar me lo inserte como campos vacio,


Pero lo que quiero lograr es que se repita el valor de [album][0], por lo cual se inserte lo siguiente:

INSERT INTO multiples (imagenes, tumbs, album) VALUES ("valor de imagen 0", "valor de tumb 0", "valor de album 0")

INSERT INTO multiples (imagenes, tumbs, album) VALUES ("valor de imagen 1", "valor de tumb 1", "valor de album 0")

INSERT INTO multiples (imagenes, tumbs, album) VALUES ("valor de imagen 2", "valor de tumb 2", "valor de album 0")

No se si supe explicarme soy bastante noob, si alguien comprende desde ya gracias :D

Última edición por Sabin; 10/01/2012 a las 15:26