Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] duda con foreach en array multidimensional

Estas en el tema de duda con foreach en array multidimensional en el foro de PHP en Foros del Web. Hola a todos/as! Estoy cargando datos (desde un input text dinámico) en un array bidimensional y me los carga bien, pero siempre me carga algunos ...
  #1 (permalink)  
Antiguo 26/11/2015, 13:30
 
Fecha de Ingreso: febrero-2008
Ubicación: Bahia Blanca
Mensajes: 173
Antigüedad: 16 años, 9 meses
Puntos: 7
duda con foreach en array multidimensional

Hola a todos/as!

Estoy cargando datos (desde un input text dinámico) en un array bidimensional y me los carga bien, pero siempre me carga algunos registros extra y vacíos.
Ej: cargo 3 artículos y me los carga bien en la BD pero me carga 6 o 7 (los ultimos son registros vacíos y los agrega solo).

Lo que busco es que cada par de color/stock se ingrese en un registro diferente, y lo hago así:

Código HTML:
<input type="text" name="color[]" /> <input type="text" name="stock[]" />
<input type="text" name="color[]" /> <input type="text" name="stock[]" />
<input type="text" name="color[]" /> <input type="text" name="stock[]" /> 
Código:
$i = 0;

foreach ((array) $_POST as $val) {


$sql = "INSERT INTO ".$DBNAME.".`stock` (
`idPublicacion` ,
`codArticulo` ,
`color` ,
`stock`
)
VALUES (
'$idPublicacion', '$codArticulo', '".$_POST["color"][$i]."', '".$_POST["stock"][$i]."')";
mysqli_query($conexion,$sql);

       $i++;
   
   } mysqli_close($conexion);
En este punto es donde carga todo el array , pero en vez de 3 carga 6 y éstos ultimos vacíos.

Entiendo que es un problema con el foreach pero no se en qué estoy fallando. Alguna idea?
o alguna otra forma recomendada de hacer un foreach para un array bidimensional?

Gracias!
  #2 (permalink)  
Antiguo 26/11/2015, 13:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: duda con foreach en array multidimensional

Estás iterando todo $_POST y solamente usas "color" y "stock", definitivamente eso está mal.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 26/11/2015, 17:05
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 2 meses
Puntos: 214
Respuesta: duda con foreach en array multidimensional

Saludo.
Imagino que los otros valores se obtienen en las variables
que se estàn usando dentro del foreach.

Ahora bien, lo primero es que $_POST es un array como tal,
no hay necesidad de la conversiòn que haces.

Lo segundo es que imagino que color y stock seràn arrays
con la misma longitud, pero como foreach no tiene una clàusula directa
para iterar sobre dos arrays al tiempo, sugiero se cambie a un for
que acceda a los dos valores de los arrays de una vez.

Ej
Código PHP:
Ver original
  1. for($i=0;$i<=sizeof($_POST['color'];$i]++)
  2. {
  3. $sql = "INSERT INTO tabla (..., color, stock) VALUES (...,'".$_POST['color'][$i]."','".$_POST['stock'][$i]."')";
  4. }
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #4 (permalink)  
Antiguo 27/11/2015, 06:27
 
Fecha de Ingreso: febrero-2008
Ubicación: Bahia Blanca
Mensajes: 173
Antigüedad: 16 años, 9 meses
Puntos: 7
Respuesta: duda con foreach en array multidimensional

Gracias mortiprogramador y pateketrueke , ya se me exclarecieron mis conceptos.

Lo solucioné con un for, con un cambio al ejemplo citado, ya que igualmente me seguía generando un registro extra.

Código:
 for ($i = 0; $i < count($_POST['stock']); $i++) {

Etiquetas: foreach, multidimensional, mysql, registro, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:08.