Foros del Web » Programando para Internet » PHP »

tengo el siguiente warning

Estas en el tema de tengo el siguiente warning en el foro de PHP en Foros del Web. Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\siap\op\insertaProductos.php on line 22 Código PHP: <?php $enlace  =  mysql_connect ( "localhost" ,  "root" ,  "" ) or die( "No pudo conectarse : "  ...
  #1 (permalink)  
Antiguo 22/01/2009, 07:59
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
tengo el siguiente warning

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\siap\op\insertaProductos.php on line 22
Código PHP:
<?php
$enlace 
mysql_connect("localhost""root""") or die("No pudo conectarse : " mysql_error());
mysql_select_db("name") or die("No pudo seleccionarse la BD.");
$id_guia=$_POST['id_guia'];
foreach(
$_POST as $key => $valor)
{
    list(
$constante$numField)=split("_"trim($key));
    if(
$constante=="categoria")
    {
        
$cat[$numField]=$valor;
    }
    if(
$constante=="cantidad")
    {
        
$can[$numField]=$valor;
    }
    if(
$constante=="producto")
    {
        
$prod[$numField]=$valor;
    }
}

foreach(
$cat as $key => $valor)
{
    
$Ssql="insert into tblguiasdetalle (categoria, id_Guia, Cantidad, id_Produccion) values (";
    
$Ssql.=$valor.", ".$id_guia.", ".$can[$key].", ".$prod[$key].")";
    echo 
"<script>alert(\"$Ssql\")</script>";
    
$resIns=mysql_query($Ssql);
}
echo 
'<head><meta http-equiv="refresh" content="0; url=ingr_guias.php"></head>';
?>
y este es el codigo
  #2 (permalink)  
Antiguo 22/01/2009, 10:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: tengo el siguiente warning

Haz un var_dump($cat) para que veas que datos tiene, es probable que no sea un array.

Saludos
  #3 (permalink)  
Antiguo 22/01/2009, 10:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: tengo el siguiente warning

es obvio que $cat existe si solo hay $_POST, de ahí el error.... si no hay POST no hay $cat !!!

¿como solucionarlo??

antes de alterar $cat declaralo al inicio, como array.... así evitas el error!

Código PHP:
$cat = array();

// ....

foreach ($cat /* ... */
¿listo??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 22/01/2009, 11:15
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: tengo el siguiente warning

Otra solución rápida, pero que saca de bastantes apuros, es agregar el modificador (array) delante del nombre de la variable:

Código PHP:
foreach((array)$cat as $key => $valor) {
    
// ...

Si $cat es un array, no tiene efecto; pero si no, trata de convertir $cat, cualquiera sea su tipo, en un array.

Pero como dije, es una solución rápida. Si el foreach se ha de ejecutar sólo si $_POST existe, entonces lo ideal es crear un apartado que incluya todos los procesos que se ejecutarán si el request es POST, incluyendo el foreach. Un if sería suficiente.



P.D.: @pateketrueke, ese ¿listo?? suena algo espeluznante
  #5 (permalink)  
Antiguo 22/01/2009, 11:22
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
De acuerdo Respuesta: tengo el siguiente warning

el error esta en la linea 22

por el mal uso del array
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
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 22:18.