Foros del Web » Programando para Internet » PHP »

Algo mal en Foreach

Estas en el tema de Algo mal en Foreach en el foro de PHP en Foros del Web. Buenas gente. Me gustaria saber si alguien ve algun error en este pequeño codigo, el problema que tengo es que no puedo insertar todos los ...
  #1 (permalink)  
Antiguo 29/04/2012, 14:16
Avatar de jmacc  
Fecha de Ingreso: marzo-2007
Ubicación: Mexico
Mensajes: 94
Antigüedad: 17 años, 1 mes
Puntos: 6
Busqueda Algo mal en Foreach

Buenas gente.
Me gustaria saber si alguien ve algun error en este pequeño codigo, el problema que tengo es que no puedo insertar todos los valores de array y no se por que.
Ejemplo:
Código PHP:
Ver original
  1. $_POST['id'] = array(4,5,6,7,8,9);
  2.  
  3.          $_POST['anioini']='201';
  4.          $_POST['mesini']='04';
  5.          $_POST['diaini']='12';
  6.          $_POST['anioinidep']='201';
  7.          $_POST['mesinidep']='04';
  8.          $_POST['diainidep']='03';
  9.          $_POST['cantidad']=522;
  10.          $_POST['grupo']=4;
  11.          $_POST['ciclo']=1;
  12.          $_POST['bloque']=1;
  13.          $_POST['informacion']="asasdasdasdasdsd";
  14.  
  15. $id = implode(",",$_POST['id']);
  16. $idn = explode(',',$id);
  17.  
  18. $fecha_recepcion=$_POST['anioini']."-".$_POST['mesini']."-".$_POST['diaini'];
  19.     $fecha_deposito=$_POST['anioinidep']."-".$_POST['mesinidep']."-".$_POST['diainidep'];
  20.  
  21. $ciclo = $_POST['ciclo'];
  22.         $bloque = $_POST['bloque'];
  23.         $grupo = $_POST['grupo'];
  24.         $observa = $_POST['informacion'];
  25.  
  26.         $cantidad=$_POST['cantidad'] / $num_rs_per['Dive'];
  27.  
  28.     foreach ($idn as $ida=>$idx){
  29.    
  30. $sql = sprintf("INSERT INTO `pagos`(`id_beneficiario`,`id_ciclo`,`id_bloque`,`id_grupo`,`fecha_recepcion`,`fecha_deposito`,`monto`,`observaciones`,`activo`)VALUES ('$idn[$ida]','$ciclo','$bloque','$grupo','$fecha_recepcion','$fecha_deposito','$cantidad','$observa',1)");
  31.      }

Al imprimer el codigo sale bien como debe de ser el id que es el que me interesa cambios y los demas valores quedan bien.
El problema es que al realizar en insert en mysql solo queda el ultimo (9) y los demas no.
Se deberia de insertar el 4 y todos los datos ,luego 5 y todos su datos, asi hasta llegar al ultimo.

De antemano gracias por tomarse el tiempo.
  #2 (permalink)  
Antiguo 30/04/2012, 05:18
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Algo mal en Foreach

Código PHP:
Ver original
  1. Notice: Undefined variable: num_rs_per in /var/www/_test.php on line 29
  2. Warning: Division by zero in /var/www/_test.php on line 29

Además, no sé como envias la query a la Db pero en la línea:

Código PHP:
Ver original
  1. $sql = sprintf("INSERT INTO `pagos`(`id_beneficiario`,`id_ciclo`,`id_bloque`,`id_grupo`,`fecha_recepcion`,`fecha_deposito`,`monto`,`observaciones`,`activo`)VALUES ('$idn[$ida]','$ciclo','$bloque','$grupo','$fecha_recepcion','$fecha_deposito','$cantidad','$observa',1)");
la variable $sql siempre se sobreescribe y śólo guardas el último valor.
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 30/04/2012, 18:48
Avatar de jmacc  
Fecha de Ingreso: marzo-2007
Ubicación: Mexico
Mensajes: 94
Antigüedad: 17 años, 1 mes
Puntos: 6
Pregunta Respuesta: Algo mal en Foreach

Bueno aqui lo dejo para copiar y probar.
Solo inserta el ultimo. Que esta mal
Código PHP:
Ver original
  1. <?php
  2. ///datos de conexion
  3.     //include "Funciones/conectarbase.php";
  4.     //include "basico.php";
  5.     //$conex= conectar();
  6.  
  7.         $_POST['id'] = array(4,5,6,7,8,9);
  8.          $_POST['anioini']='201';
  9.          $_POST['mesini']='04';
  10.          $_POST['diaini']='12';
  11.          $_POST['anioinidep']='201';
  12.          $_POST['mesinidep']='04';
  13.          $_POST['diainidep']='03';
  14.          $_POST['cantidad']=522;
  15.          $_POST['grupo']=4;
  16.          $_POST['ciclo']=1;
  17.          $_POST['bloque']=1;
  18.          $_POST['informacion']="asasdasdasdasdsd";
  19.    
  20. $id = implode(",",$_POST['id']);
  21. $idn = explode(',',$id);
  22.  
  23. $fecha_recepcion=$_POST['anioini']."-".$_POST['mesini']."-".$_POST['diaini'];
  24. $fecha_deposito=$_POST['anioinidep']."-".$_POST['mesinidep']."-".$_POST['diainidep'];
  25.  
  26. $ciclo = $_POST['ciclo'];
  27. $bloque = $_POST['bloque'];
  28. $grupo = $_POST['grupo'];
  29. $observa = $_POST['informacion'];
  30. $cantidad=$_POST['cantidad'] / 3;
  31.     foreach ($idn as $ida=>$idx){
  32. echo $idx.'-Ciclo: '.$ciclo.'-Bloque: '.$bloque.'-Grupo: '.$grupo.'-FechaRecepcion: '.$fecha_recepcion.'-FechaDeposito: '.$fecha_deposito.'-Cantidad: '.$cantidad .'-Informacion: '.$observa.'<br>';
  33.        
  34. $sql = sprintf("INSERT INTO `pagos`(`id_beneficiario`,`id_ciclo`,`id_bloque`,`id_grupo`,`fecha_recepcion`,`fecha_deposito`,`monto`,`observaciones`,`activo`)VALUES ('$idx','$ciclo','$bloque','$grupo','$fecha_recepcion','$fecha_deposito','$cantidad','$observa',1)");
  35.      }
  36.  
  37. //insert
  38. //if(!mysql_query($sql))
  39. //  echo "Error al guardar:\n$sql";
  40. //      else
  41. //  echo "agrego correctamnte";  
  42.  ?>
  #4 (permalink)  
Antiguo 30/04/2012, 21:04
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 8 meses
Puntos: 103
Respuesta: Algo mal en Foreach

asi mejor?
fijate que $_POST['id'] es un array, no una cadena, los arrays no se le pueden usar explode y implode directamente a la variable padre, despues que el mysql_query, debe estar adentro de el foreach
Código PHP:
Ver original
  1. <?php
  2. ///datos de conexion
  3. * * //include "Funciones/conectarbase.php";
  4. * * //include "basico.php";
  5. * * //$conex= conectar();
  6. *
  7. * * * * $_POST['id'] = array(4,5,6,7,8,9);
  8. * * * * *$_POST['anioini']='201';
  9. * * * * *$_POST['mesini']='04';
  10. * * * * *$_POST['diaini']='12';
  11. * * * * *$_POST['anioinidep']='201';
  12. * * * * *$_POST['mesinidep']='04';
  13. * * * * *$_POST['diainidep']='03';
  14. * * * * *$_POST['cantidad']=522;
  15. * * * * *$_POST['grupo']=4;
  16. * * * * *$_POST['ciclo']=1;
  17. * * * * *$_POST['bloque']=1;
  18. * * * * *$_POST['informacion']="asasdasdasdasdsd";
  19. * * *
  20. $fecha_recepcion=$_POST['anioini']."-".$_POST['mesini']."-".$_POST['diaini'];
  21. $fecha_deposito=$_POST['anioinidep']."-".$_POST['mesinidep']."-".$_POST['diainidep'];
  22. *
  23. $ciclo = $_POST['ciclo'];
  24. $bloque = $_POST['bloque'];
  25. $grupo = $_POST['grupo'];
  26. $observa = $_POST['informacion'];
  27. $cantidad=$_POST['cantidad'] / 3;
  28. * * foreach ($_POST['id'] as $id){
  29. echo $id.'-Ciclo: '.$ciclo.'-Bloque: '.$bloque.'-Grupo: '.$grupo.'-FechaRecepcion: '.$fecha_recepcion.'-FechaDeposito: '.$fecha_deposito.'-Cantidad: '.$cantidad .'-Informacion: '.$observa.'<br>';
  30. * * * *
  31. $sql = "INSERT INTO `pagos`(`id_beneficiario`,`id_ciclo`,`id_bloque`,`id_grupo`,`fecha_recepcion`,`fecha_deposito`,`monto`,`observaciones`,`activo`)VALUES ('$id','$ciclo','$bloque','$grupo','$fecha_recepcion','$fecha_deposito','$cantidad','$observa',1)";
  32. if(!mysql_query($sql)) echo "Error al guardar:\n$sql"; else echo "agrego correctamnte";
  33. * * *}
  34. *?>
  #5 (permalink)  
Antiguo 01/05/2012, 00:16
Avatar de jmacc  
Fecha de Ingreso: marzo-2007
Ubicación: Mexico
Mensajes: 94
Antigüedad: 17 años, 1 mes
Puntos: 6
Respuesta: Algo mal en Foreach

Gracias por Contestar, ya ven detalles que se pasan por alto.
Problema Resuelto. :)

Última edición por jmacc; 01/05/2012 a las 00:16 Razón: Agradecer.

Etiquetas: foreach, insert, mysql, phparrays
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 13:07.