Ver Mensaje Individual
  #5 (permalink)  
Antiguo 12/10/2016, 19:10
Avatar de manuparquegiralda
manuparquegiralda
 
Fecha de Ingreso: junio-2012
Ubicación: Barcelona
Mensajes: 241
Antigüedad: 11 años, 10 meses
Puntos: 39
Respuesta: insertar mi foreach en mysql

Tu problema si te he entendido bien porque no estoy seguro de haberlo hecho es que tienes un bucle dentro de otro bucle, de manera que en el ejemplo que has puesto justo arriba tienes esto:

Código PHP:
Ver original
  1. $resta = array("4","11");
  2. $id = array("1", "6");

De manera que si te fijas, en el primer foreach recorres el array $resta y dentro de éste recorres el array $id por eso te imprime los cuatro resultados. Los dos primeros corresponden al valor 4 del array $resta que dentro pasa por los dos valores del array $id (1 y 6). Despues te vuelve a pasar por el array $resta con el valor 11 y dentro de éste te vuelve a pasar por el array $id recorriendote los dos valores (1 y 6) y aquí tienes tus cuatro resultados.

Algo que no entiendo es porque pasas a $resta el array_filter() si no le estás pasando ninguna función de evaluación. Si no le pasas la funcion de callback lo que hace es eliminarte todas las entradas del array que sean false. Entonces ahí está mi duda de si las claves del array $resta son coincidentes con las del array $id ya que en tu primer mensaje pones que los array te reciben los valores con las mismas claves, de modo que no sería necesario pasar $resta por el array_filter().

Como no sé donde estás asignando los datos a los arrays $resta e $id no sé bien si la solución que te voy a dar te valdrá, pero en el caso de que las claves de los array sean iguales puedes hacer esto:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $res = "";
  4. $str = "";
  5.  
  6. foreach($resta as $k => $valor) {    
  7.     $str .= "UPDATE `inventario`.`registro` SET `unidades_r` = `unidades_r` - ".$resta[$k]." WHERE ID_R = ".$id[$k].";</br>";
  8. }
  9.  
  10. echo $str;
  11.  
  12. ?>

También te valdría un for en lugar de un foreach si los array te vienen ordenados como pones en el primer mensaje:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $res = "";
  4. $str = "";
  5.  
  6. for($k=0; isset($resta[$k]); $k++) {  
  7.     $str .= "UPDATE `inventario`.`registro` SET `unidades_r` = `unidades_r` - ".$resta[$k]." WHERE ID_R = ".$id[$k].";</br>";
  8. }
  9.  
  10. echo $str;
  11.  
  12. ?>

Si no te sirve lo que te he puesto, intenta pasarnos como reciben los valores los dos arrays con los que estás trabajando y así lo tendremos más claro.
__________________
Diseño Web - Arisman Web

Última edición por manuparquegiralda; 12/10/2016 a las 19:23