Foros del Web » Programando para Internet » PHP »

ayuda con codigo foreach()

Estas en el tema de ayuda con codigo foreach() en el foro de PHP en Foros del Web. Buenos días, Necesito ayuda con este código porque no consigo solucionar el error que me aparece. El error es del tipo 'Invalid argument supplied for ...
  #1 (permalink)  
Antiguo 14/06/2007, 02:06
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 8 meses
Puntos: 0
ayuda con codigo foreach()

Buenos días,

Necesito ayuda con este código porque no consigo solucionar el error que me aparece. El error es del tipo 'Invalid argument supplied for foreach()' y mi código es el siguiente:

En el archivo que recibe las variables del formulario:

Código PHP:
$row_selected $_POST['row_selected'];
foreach (
$row_selected as $key=>$row){
   echo 
$row." with key ".$key."<br></br>";
   foreach (
$row as $field=>$i){
        echo 
"Value -- Este es el field ".$field." con el valor: ".$i."<br></br>";
    }

El error anterior se refiere al segundo foreach. El primero imprime: Array with key 'número'.

En el archivo del formulario que envía:

Código PHP:
$field_names = array();
for (
$f=0;$f<mysql_num_fields($result);$f++) {
    
$field_names[] = mysql_field_name($result,$f);
}

if (
is_array($field_names)) {
    echo 
"Is array.<br></br>";
}

echo 
"<table><th><input name=\"row_selected[]\" type=\"checkbox\" value=\"".$field_names."\" /></th>\n";

.....

while (
$registro mysql_fetch_assoc($result)) {
      if (
is_array($registro)) {
    echo 
"registro is array.<br></br>";
    echo 
"<tr><td><input name=\"row_selected[]\" type=\"checkbox\" value=\"".$registro."\" /></td></tr>"
En esta página $field_names y $registro son array.

Os agradecería cualquier sugerencia. Muchas gracias.
  #2 (permalink)  
Antiguo 14/06/2007, 02:26
Avatar de Yranac  
Fecha de Ingreso: junio-2007
Mensajes: 125
Antigüedad: 16 años, 10 meses
Puntos: 1
Re: ayuda con codigo foreach()

El problema es que $row realmente no es un array porque lo pasas como el value de un <input> y al recogerlo en la otra pagina es un string. Yo creo que el problema es ese. Que te devuelve
Código PHP:
echo $row
?
  #3 (permalink)  
Antiguo 14/06/2007, 03:17
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: ayuda con codigo foreach()

Hola!

Me devuelve 'Array'. Eso significa que en la página que recoje las variables sigue siendo un array, no? Si no es así, como lo puedo pasar manteniéndose como array del formulario a la página que recoje los datos?

Muchas gracias.
  #4 (permalink)  
Antiguo 14/06/2007, 03:57
Avatar de laaccaal  
Fecha de Ingreso: julio-2003
Ubicación: Murcia
Mensajes: 147
Antigüedad: 20 años, 9 meses
Puntos: 1
Sonrisa Re: ayuda con codigo foreach()

Hola,
Al parecer tiene un foreach demas,

prueba con este

$row_selected = $_POST['row_selected'];
foreach ($row_selected as $key=>$row){
echo "Value -- Este es el field ".$key." con el valor: ".$row."<br></br>";
}

bye.
__________________
Album Fotos
Blog MisApuntes
  #5 (permalink)  
Antiguo 14/06/2007, 04:19
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: ayuda con codigo foreach()

Hola!

He probado con lo que comentas y el resultado es el siguiente:

Value -- Este es el field 0 con el valor: Array

Value -- Este es el field 1 con el valor: Array

No imprime los valores correctos que contiene, supuestamente, el array.
He probado pasando los arrays como variable session pero tampoco lo consigo. Ya me quedo sin imaginación!!
  #6 (permalink)  
Antiguo 14/06/2007, 04:40
Avatar de Yranac  
Fecha de Ingreso: junio-2007
Mensajes: 125
Antigüedad: 16 años, 10 meses
Puntos: 1
Re: ayuda con codigo foreach()

No contiene el array, contiene la palabra "array" solamente
  #7 (permalink)  
Antiguo 14/06/2007, 04:46
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: ayuda con codigo foreach()

Entonces como puedo pasar el array bidimensional, manteniéndose como array, del formulario a la página que recoje los datos? El array bidimensional lo genero dinámicamente.

Un saludo.
  #8 (permalink)  
Antiguo 14/06/2007, 04:50
Avatar de laaccaal  
Fecha de Ingreso: julio-2003
Ubicación: Murcia
Mensajes: 147
Antigüedad: 20 años, 9 meses
Puntos: 1
Re: ayuda con codigo foreach()

Hola
para ver el contenido de tu array usa:

print_r($variable);
__________________
Album Fotos
Blog MisApuntes
  #9 (permalink)  
Antiguo 14/06/2007, 05:00
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: ayuda con codigo foreach()

Esto es lo q imprime cuando pongo print_r($row_selected):

Array ( [0] => Array [1] => Array )

$row_selected es la variable que recoge el $_POST de los campos seleccionados con el checkbox del formulario.

Viendo esto supongo que lo que hago mal es pasar el array del formulario a la otra página, pero entonces, como puedo hacer para que solo se envien aquellos valores seleccionados desde el checkbox? el valor de cada checkbox es otro array.

Muchas gracias por su ayuda.
  #10 (permalink)  
Antiguo 14/06/2007, 07:49
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 18 años, 8 meses
Puntos: 0
Re: ayuda con codigo foreach()

Hola de nuevo,

He conseguido recuperarlo correctamente. Lo único que faltaba era convertir en string el valor de cada checkbox. Esto lo hago con:

$field_names_string = implode(",",$field_names);
$registro_string = implode(",",$registro);

Cada una antes de su checkbox. Y luego en el archivo que recoje las variables tengo esto:

$row_selected = $_POST['row_selected'];
$registro = array();
if (is_array($row_selected)) {
$row_selected_size = count($row_selected);
for ($j=0;$j<$row_selected_size;$j++) {
print_r($row_selected[$j]);
echo "<br></br>";
$registro[] = explode (",",$row_selected[$j]);
}
} else {
echo "row selected is NOT an array<br></br>";
}

print_r($registro);
echo "<br></br>";
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:39.