Ver Mensaje Individual
  #6 (permalink)  
Antiguo 12/10/2016, 19:59
sonreiders19
 
Fecha de Ingreso: junio-2014
Mensajes: 30
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: insertar mi foreach en mysql

Cita:
Iniciado por manuparquegiralda Ver Mensaje
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.
Hola Gracias por ayudarme en mi pequeño problema

te cuento que ese metodo no me funciona ninguno de los dos me salta el siguiente error

Código PHP:
NoticeUndefined offset2 in C:xampphtdocsplanilla_2.php on line 267
UPDATE 
`inventario`.`registroSET `unidades_r` = `unidades_r` - 4 WHERE ID_R 1;
UPDATE `inventario`.`registroSET `unidades_r` = `unidades_r` - 11 WHERE ID_R = ; 
ya me habia pasado antes y uno del foro me dijo que use foreach y me funciona bien con el foreach lo que pasa es que la cadena se rompe.

.sobre lo que me dices de como los recibo, lo que pasa es que es un inventario por ejemplo tengo un tornillo en el id 1 una tuerca en el id 2 y un clavo en el id 3 si yo selecciono tuerca el codigo funciona, si selecciono dos materiales igual funciona perfecto tambien con tres materiales , el problema esta que si yo selecciono el id 1 y el id 3 se corta el array por eso me sale el error arriba, por eso uso foreach y sobre el $resta = array_filter($resta); lo uso porque en la lista de unidades todos inician con cero

Última edición por sonreiders19; 12/10/2016 a las 20:26