Foros del Web » Programando para Internet » PHP »

Warning: Invalid argument supplied for foreach() como recibo variables array

Estas en el tema de Warning: Invalid argument supplied for foreach() como recibo variables array en el foro de PHP en Foros del Web. Hola quiero borrar registros de una lista selecionada pòr checkbox todo va bìen se muestran los registros, loc check box para señalarlos y borrarlos pero ...
  #1 (permalink)  
Antiguo 13/10/2004, 13:47
 
Fecha de Ingreso: octubre-2004
Mensajes: 2
Antigüedad: 13 años, 2 meses
Puntos: 0
Warning: Invalid argument supplied for foreach() como recibo variables array

Hola quiero borrar registros de una lista selecionada pòr checkbox todo va bìen se muestran los registros, loc check box para señalarlos y borrarlos pero cuando envio a borrar y llama a la accion del formulario que lo envia a un archivo llamado procesarborrado.php4 me sale este error
Warning: Invalid argument supplied for foreach() in

el codigo es este
foreach ($borra as $indice=>$valor)
{
mysql_query("DELETE FROM usuario WHERE (codigou=$indice)",$conexion);

}

Creo que el error esta en que al enviar llama a esta pàgina pero a nungun momento estoy recogiendo en la variable $borra el array que envio.

el codigo del formulario es:

echo "<td align=center> <input type=checkbox name= borra[$salida[0]] value='Si'></td><tr>";
alguien Ayudeme porfavor
  #2 (permalink)  
Antiguo 13/10/2004, 14:35
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 15 años, 11 meses
Puntos: 1
Si $borra es el nombre del arreglo de los check,

porque usas foreach?? el valor de los codigou estan en arreglos internos a $borrar o es simplemente el $borrar = (1,2,4,6,8) ???

Si es así entonces usa el for

for ($i=0; $i<$count($borra); $i++) {
mysql_query("DELETE FROM usuario WHERE (codigou=$borra[$i])",$conexion);
}

Suerte
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #3 (permalink)  
Antiguo 13/10/2004, 15:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Puedes usar también implode() en conjunto con la función SQL: IN (lista de valores) tal cual muestra esta FAQ que trata el tema.

En tu caso ese:
<input type=checkbox name= borra[$salida[0]] value='Si'></td><tr>";

debería ser:
Código PHP:
echo "<input type=\"checkbox\" name=\"borra[]\" value=\"$salida[0]\"></td><tr>"
Supongo que "$salida[0]" corresponderá al "codigo" que vas a borrar ..

En el bucle foreach() .. debes usar el "valor" no el "indice" pero revisa antes que "valor" das.


Fijate también que respeto la sintax HTML como debe ser . .si hay comillas .. se escapan y se ponen igualmente. Respeta siempre la sintax!.

Una vez más te recomiendo leer la FAQ que te indico .. tienes ambos ejemplos de uso completo (con un foreach() o con IN() y el implode())

http://www.forosdelweb.com/f18/faqs-php-530600-post518710/

Un saludo,
  #4 (permalink)  
Antiguo 13/10/2004, 15:55
 
Fecha de Ingreso: octubre-2004
Mensajes: 2
Antigüedad: 13 años, 2 meses
Puntos: 0
ayudame

no, el error esta en que no estoy pasando los datos a la variable $borrar del archivo procesar.php4 para que haga el proceso, no se como hacerlo si el valor borra[$salida[0]] que esta el formulario borrar.php4
echo "<td align=center> <input type=checkbox name=borra[$salida[0]] value='Si'></td><tr>";

Creo que lo llaman Cgi y no se como recojer un array que mando desde unformulario en otra variable de otra pàgina.
  #5 (permalink)  
Antiguo 13/10/2004, 16:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Será mejor que pongas el código que usas para generar esos checkbox .. Realemente no tiene sentido lo que haces teniendo en cuenta que al seleccionar ese checkbox lo que pasa es el "value" que indicas ahí .. en tu caso ese tal "Si" .. ahí debería ir un identificador de un registro .. y más concretamente un valor de: codigou no un "Si" .. otra cosa es que para ese codigou .. el valor tenga que ser "SI" si está seleccionado ese checkbox .. en tal caso seguimos en las mismas, se necesita ese "ID" de ese registro para dar el valor que corresponda.

Un saludo,
  #6 (permalink)  
Antiguo 13/10/2004, 16:38
 
Fecha de Ingreso: octubre-2004
Mensajes: 143
Antigüedad: 13 años, 1 mes
Puntos: 0
Tu problema se da cunado no hay ningun registro seleccionado en el checkbox ?...o no??

A mi me paso algo similar.. lo que hice fue crear un registro "fantasma"

en la pagina del formulario

<input type="hidden" name="busqueda[]" value="0">
<input type="checkbox" name="busqueda[]">.....

y hay lo podia tomar con el foreach...

La otra solucion es que uses el ciclo for ....

Cuentanos como lo solucionaste
  #7 (permalink)  
Antiguo 14/10/2004, 05:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. si no hay chekbox seleccionado .. el dato que pasa a tu script PHP (el array) no es un array .. así que puedes hacer una comprobación del tipo:

Código PHP:
if (is_array($_POST['buscar'])){
// aplicas el foreach() ....
} else {
  echo 
"no se seleccionó nada";

así se evita tener que usar "registros fantasmas" y se controla el problema.

Un saludo,
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 20:41.