Foros del Web » Programando para Internet » PHP »

problemas con foreach

Estas en el tema de problemas con foreach en el foro de PHP en Foros del Web. Muchachos mi problema radica en lo siguiente: Genero un formulario y mando datos de una tabla y los recupero en un foreach como vector.. bueno ...
  #1 (permalink)  
Antiguo 13/07/2010, 10:27
 
Fecha de Ingreso: diciembre-2009
Ubicación: La Paz - Bolivia
Mensajes: 67
Antigüedad: 14 años, 4 meses
Puntos: 1
problemas con foreach

Muchachos mi problema radica en lo siguiente:
Genero un formulario y mando datos de una tabla y los recupero en un foreach como vector.. bueno el problema es que existe la posibilidad de no llenar la tabla pero cuando recupero los datos me aparece el siguiente error:
Warning: Invalid argument supplied for foreach()
Quisiera saber si es posible corregir el error anterior.

aca genero el formulario
Código PHP:
   <form name="form" action="guardar_resumen.php" method="post">
    
2.Desarrollo Cuadro de Actividades:<br>
<
table>
<
tr><td><input type="text" name="acti[]" size="58"></td></tr>
<
tr><td><input type="text" name="acti[]" size="58"></td></tr>
<
tr><td><input type="text" name="acti[]" size="58"></td></tr>
<
tr><td><input type="text" name="acti[]" size="58"></td></tr>
<
tr><td><input type="text" name="acti[]" size="58"></td></tr>
<
tr><td><input type="text" name="acti[]" size="58"></td></tr>
<
tr><td><input type="text" name="acti[]" size="58"></td></tr>
<
tr><td><input type="text" name="acti[]" size="58"></td></tr>
<
tr><td><input type="text" name="acti[]" size="58"></td></tr>
<
tr><td><input type="text" name="acti[]" size="58"></td>
</
tr>
</
table>
  <
input type="hidden" name="tiempo[]">        
 <
input type="button" value="Enviar!" onclick="valida_envia()" style="background-color:#004990; color:#FFFFFF">
          </
form
aca se guarda el dato...
Código PHP:
<?php
   
include("../conectar.php");
   
$link=Conectarse();

   
$f=0;
   foreach ( 
$_POST['acti'] AS $a)
   { 
$z[$f]=$a$f++; } 
//despues manejo el array z en otras actividades
no se si es posible llenar algun valor por defecto o que solucion se hallaría de antemano gracias...
  #2 (permalink)  
Antiguo 13/07/2010, 10:29
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 19 años
Puntos: 4
Respuesta: problemas con foreach

yo veria el tamaño del array para ver si contiene datos o no...
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #3 (permalink)  
Antiguo 13/07/2010, 11:35
 
Fecha de Ingreso: julio-2010
Mensajes: 3
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: problemas con foreach

Hay que revisar si se envío algo por POST y además, también hay que inicializar $z como tipo array, para asegurar que no marque error posteriormente
Código PHP:
Ver original
  1. <?php
  2.    include("../conectar.php");
  3.    $link=Conectarse();
  4.  
  5.    $f=0;
  6.    [B]$z=array();
  7.    if( $_POST['acti'] ){[/B]
  8.         foreach ( $_POST['acti'] AS $a)
  9.         { $z[$f]=$a; $f++; }  
  10.    [B]}[/B]
Saludos
  #4 (permalink)  
Antiguo 13/07/2010, 12:31
 
Fecha de Ingreso: diciembre-2009
Ubicación: La Paz - Bolivia
Mensajes: 67
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: problemas con foreach

Bueno lo que pasa es que el array enviado puede que no contenga datos es decir que este vacio...se que puede llegar vacio y no se si existe alguna forma de colocar datos si esta vacio el array o no se que se pude hacer.
  #5 (permalink)  
Antiguo 13/07/2010, 13:32
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 2 meses
Puntos: 10
Respuesta: problemas con foreach

Al parecer filtras con js
Tambien puedes agregar esto:

Código PHP:

//solo se cumple si el array tiene almenos un valor
if(count($_POST['acti']) > 0){

   
$f=0
   foreach ( 
$_POST['acti'] as $a){ 
   
   
//y aca filtra los campos vacios 
  //lo cual te puede servir para el array $z.
 //y para $f++ (manejalo a tu modo)
   
if($a){
   echo 
$a."<br />";
   }else{
   echo 
"Vacio....<br />";
   }

   
$z[$f]=$a
   
$f++; 

}  



Etiquetas: foreach
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:39.