Foros del Web » Programando para Internet » PHP »

Problema con foreach

Estas en el tema de Problema con foreach en el foro de PHP en Foros del Web. Hola y gracias de antemano por su ayuda, no sé si ya haya una solución a este problema que tengo en otro post pero se ...
  #1 (permalink)  
Antiguo 22/05/2014, 13:10
Avatar de elessarjulius  
Fecha de Ingreso: mayo-2014
Mensajes: 5
Antigüedad: 9 años, 11 meses
Puntos: 0
Exclamación Problema con foreach

Hola y gracias de antemano por su ayuda, no sé si ya haya una solución a este problema que tengo en otro post pero se los muestro para que me ayuden si son tan amable.

Tengo el siguiente formulario

<form method="post" action="actualizar.php">
<table>
<tr>
<td>Seleccionar</td>
<td>Folio</td>
<td>Fecha de pago</td>
</tr>
<?php
$query=mysql_query("SELECT * FROM facturas WHERE fechapago='0000-00-00'");
while($row=mysql_fetch_array($query)){
?>
<tr>
<td><input type="checkbox" name="id[]" value="<?php echo $row['id']; ?>"></td>
<td><?php echo $row['folio']; ?></td>
<td><input type="date" name="fechapago[]" ></td>
</tr>
<?php
}
</table>
</form>

En este formulario se me muestran las facturas que están pendientes de pago, el número de facturas es variable día con día por lo que quiero actualizar la fecha a las que ya fueron pagadas pero mi problema esta en como hacer esta actualización por medio de PHP, en la página "actualizar.php" tengo el siguiente codigo:

<?php
foreach($_POST['id'] as $id){
mysql_query(" UPDATE `facturas` SET `fechapago`='' WHERE `id`=$id ");
}
?>

mi duda o problema es como insertar la fecha que corresponde al id de cada folio seleccionado, espero haberme dado a entender.

Gracias
  #2 (permalink)  
Antiguo 22/05/2014, 13:13
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Problema con foreach

Por que no le hace un print_r a $_POST a ver que sale ?
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #3 (permalink)  
Antiguo 22/05/2014, 13:22
Avatar de elessarjulius  
Fecha de Ingreso: mayo-2014
Mensajes: 5
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Problema con foreach

Gracias por responder, me aparece así con print_r
Array ( [id] => Array ( [0] => 1237 [1] => 1429 [2] => 603 ) [foliofactura] => Array ( [0] => E472 [1] => E473 [2] => E474 [fechapago] => Array ( [0] => 2014-05-12 [1] => [2] => 2014-05-13 [3] => [4] => [5] => 2014-05-14

Mi duda es como le hago para obtener los valores y hacer la consulta de UPDATE.
  #4 (permalink)  
Antiguo 22/05/2014, 13:24
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
Respuesta: Problema con foreach

coloquele como índice al campo fecha el id del registro


Código PHP:
fechapago[<?php echo $row['id']; ?>];
luego en el foreach accede a la fecha de l siguiente manera

Código PHP:
$_POST['fechapago'][$id]; 

Saludos
  #5 (permalink)  
Antiguo 23/05/2014, 08:02
Avatar de elessarjulius  
Fecha de Ingreso: mayo-2014
Mensajes: 5
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Problema con foreach

Gracias helacer, lo intente de la siguiente manera y me da lo que necesito

Código PHP:
<?php

for($i=0$c=count($_POST['id']); $i<=$c$i++){
    echo 
$_POST['id'][$i]."-".$_POST['foliofactura'][$i]."-".$_POST['fechapago'][$i]."<br>";
}

?>
solo que me aparece al final el siguiente mensaje

Notice: Undefined offset: 1 in C:\'''''\actualizar.php on line 4

¿Sabrán el porque y como solucionarlo?
  #6 (permalink)  
Antiguo 23/05/2014, 08:15
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Problema con foreach

Código PHP:
// MAL
for($i=0$c=count($_POST['id']); $i<=$c$i++){ ..} 
Ahi hay un error... se itera de 0 a count() y no a count()+1 porque rebasas el arreglo:


Código PHP:
Ver original
  1. // bien
  2. for($i=0, $c=count($_POST['id']); $i<$c; $i++){ ..}
__________________
Salu2!
  #7 (permalink)  
Antiguo 23/05/2014, 08:17
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
Respuesta: Problema con foreach

No entiendo porque ese for tan complejo.. creeria que asi no mas funcionaria y no le saldria el warning

Código PHP:
for ($i=0$i<count($_POST['id']); $i++) 
Edito: Se me adelanto itálico, creo que las 2 soluciones funcionan.
  #8 (permalink)  
Antiguo 23/05/2014, 08:19
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Problema con foreach

O sea.. si tienes hay un solo elemento en el array interno de $_POST['id'], como estaba escrito itera en [0] y en [1] .. y como la posicon 1 esta vacia...

Cita:
Notice: Undefined offset: 1 in C:\'''''\actualizar.php on line 4

@helacer : tienes arazon en algo y es que... asigna la cantidad de elementos a $c para luego que ... ? usar $c cuando mas ?
__________________
Salu2!
  #9 (permalink)  
Antiguo 23/05/2014, 08:35
Avatar de elessarjulius  
Fecha de Ingreso: mayo-2014
Mensajes: 5
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Problema con foreach

Cita:
Iniciado por Italico76 Ver Mensaje
Código PHP:
// MAL
for($i=0$c=count($_POST['id']); $i<=$c$i++){ ..} 
Ahi hay un error... se itera de 0 a count() y no a count()+1 porque rebasas el arreglo:


Código PHP:
Ver original
  1. // bien
  2. for($i=0, $c=count($_POST['id']); $i<$c; $i++){ ..}
¡Listo! ya quedo, ¡Muchas gracias Italico y helacer!

Etiquetas: fecha, foreach, formulario, mysql, select, sql, variable
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 10:29.