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. Buenas gente! Estoy teniendo un problema con un formulario. La funcion que cumple es enviar los datos a una DB, pero me surgio el siguiente ...
  #1 (permalink)  
Antiguo 25/11/2009, 17:18
 
Fecha de Ingreso: mayo-2008
Ubicación: En algun lado!
Mensajes: 86
Antigüedad: 15 años, 11 meses
Puntos: 1
Problema con foreach

Buenas gente!
Estoy teniendo un problema con un formulario.
La funcion que cumple es enviar los datos a una DB, pero me surgio el siguiente error

Cita:
Warning: Invalid argument supplied for foreach() in C:\Archivos de programa\Xampp\htdocs\abcpoquer\admin\index.php on line 871
Y no se porque es.

Código PHP:
// Agregar Bonos
                                
case "addbank":
                                echo 
'<form action="index.php?act=addbank" method="post">
                                <h2>Agregar Bono</h2>    
                                <table border="1">
                                    <tr>
                                        <td>Nombre</td>
                                        <td><input type="text" name="title"></td>
                                    </tr>
                                    <tr>
                                        <td>URL Imagen <strong>(COMPLETA)</strong><br />
                                        Colocar imagen en images/bonos</td>
                                        <td><input type="text" name="urlimg"></td>
                                    </tr>
                                    <tr>
                                        <td>Link de Referido <b>(COMPLETO)</b></td>
                                        <td><input type="text" name="urlrefe"></td>
                                    </tr>
                                    <tr>
                                        <td>Descripcion Corta</b></td>
                                        <td><textarea type="text" name="desccorta" cols="60" rows="2"></textarea></td>
                                    </tr>
                                    <tr>
                                        <td>Pasos (podes usar HTML)</b></td>
                                        <td><textarea type="text" name="pasos" cols="60" rows="5"></textarea></td>
                                    </tr>
                                    <tr>
                                        <td>Salas</td>
                                        <td>'
;
                                        
$sql "SELECT * from logos WHERE bank='si' ORDER BY sala ASC";
                                        
$query mysql_query($sql);
                                        while (
$row=mysql_fetch_array($query))
                                        {
                                        echo 
'<input type="checkbox" name="logo[]" value="si">'$row["sala"].'&nbsp;&nbsp;&nbsp;'; }
                                        echo 
'</select></td>';
                                    echo 
'</tr> 
                                    <tr>
                                        <td>Posicion??</td>
                                            <td><table>
                                                <tr>'
;
                                                    for (
$i 1$i <= 10$i++) {
                                                    echo 
'<td><input type="radio" name="posicion" value="'.$i.'">Pos '.$i.'&nbsp;&nbsp;&nbsp;&nbsp;</td>';
                                                    }
                                                    echo 
'</tr></table></td>
                                                        
                                            <tr>
                                                                            <tr>
                                        <td>Publicado</td>
                                        <td>Si <input type="radio" name="status" value="si" CHECKED><br />
                                        No <input type="radio" name="status" value="no"></td>
                                    </tr> 
                                        <td></td>
                                        <td align="right"><br /><input type="submit" value="Agregar"><input type="reset" value="Reset"></td>
                                    </tr>
                                </table>
                                </form>'
;    

                                
$title $_REQUEST[title];
                                
$urlimg $_REQUEST[urlimg];
                                
$urlrefe $_REQUEST[urlrefe];
                                
$desccorta $_REQUEST[desccorta];
                                
$pasos $_REQUEST[pasos];
                                
$logoarray $_REQUEST[logo];
                                
$posicion $_REQUEST[posicion];
                                
$status $_REQUEST[status];
                                foreach (
$logoarray as $logos)
                                { 
$ids .=$logos.","; }
                                echo 
$ids;
                                
$title strtolower($_REQUEST[title]);
                                
$find = array(' ''&''\r\n''\n''+');
                                
$url str_replace ($find'-'$title);                                

                                if(
$title){
                                
$sql "INSERT INTO bank(url,title,urlimg,urlrefe,desccorta,pasos,logos,posicion,status,url) VALUES('$url','$title','$urlimg','$urlrefe','$bono','$caracs','$pasos','$screencaps','$status','$posicion')";
                                
$query mysql_query($sql);
                                if(
$query){
                                echo 
'<h2>Bank Agregado!!!</h2>';
                                }else{
                                echo 
'Error al insertar'.mysql_error();
                                }
                                } 
Saludos y gracias de antemano!
  #2 (permalink)  
Antiguo 25/11/2009, 17:59
Avatar de arthpix  
Fecha de Ingreso: diciembre-2003
Ubicación: Cancún
Mensajes: 2.340
Antigüedad: 20 años, 4 meses
Puntos: 93
Respuesta: Problema con foreach

Qué imprime si ejecutas un simple echo $logoarray; es realmente un arreglo ( "item1","item2","item3") ??
__________________
Antes de hacer rabietas infórmate: Linux != Windows
  #3 (permalink)  
Antiguo 25/11/2009, 18:10
 
Fecha de Ingreso: mayo-2008
Ubicación: En algun lado!
Mensajes: 86
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Problema con foreach

Estaria imprimiendo los valores de los checkboxes tildados :)
  #4 (permalink)  
Antiguo 25/11/2009, 18:33
Avatar de arthpix  
Fecha de Ingreso: diciembre-2003
Ubicación: Cancún
Mensajes: 2.340
Antigüedad: 20 años, 4 meses
Puntos: 93
Respuesta: Problema con foreach

Me refiero a que si lo ejecutas imprime efectivamente lo que quieres. Si el error te dice que pasó un argumento inválido para foreach, es probable que lo que estás obteniendo es otra cosa y no un arreglo con los valores.

La razón puede ser que tienes checkboxes de nombre "logo[]", sin embargo tu variable $logoarray es igual a un campo pasado por REQUEST de nombre "logo"...
__________________
Antes de hacer rabietas infórmate: Linux != Windows
  #5 (permalink)  
Antiguo 25/11/2009, 19:38
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Problema con foreach

Yo que vos me fijaria si podes hacer un array de checkboxes, o por lo menos si es que se puede hacer si no te estas equivocando.
Yo una vez tuve que hacer uno de options y se hacia con size="", pero aca es distinto.
Me parece que ahi esta el tema
  #6 (permalink)  
Antiguo 25/11/2009, 21:13
 
Fecha de Ingreso: noviembre-2009
Mensajes: 13
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Problema con foreach

foreach ($logoarray as $logos)
{ $ids .=$logos.","; }
echo $ids;


puede ser que estas imprimiendo fuera del foreach

foreach ($logoarray as $logos)
{
$ids .=$logos.",";
echo $ids;
}

creo que a medida que recorres el arreglo tienes que ir imprimiendo

saludos!!!!!
  #7 (permalink)  
Antiguo 25/11/2009, 21:16
 
Fecha de Ingreso: noviembre-2009
Mensajes: 13
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Problema con foreach

y lo otro que puede ser que si estas enviando por metodo POST....

$logoarray = $_POST['logo'];

foreach ($logoarray as $logos)
{
$ids .=$logos.",";
echo $ids;
}

me acorde pq yo antes tuve el mismo problema con select multiple ..
  #8 (permalink)  
Antiguo 25/11/2009, 22:03
 
Fecha de Ingreso: mayo-2008
Ubicación: En algun lado!
Mensajes: 86
Antigüedad: 15 años, 11 meses
Puntos: 1
Respuesta: Problema con foreach

Cita:
Iniciado por rfonseca Ver Mensaje
y lo otro que puede ser que si estas enviando por metodo POST....

$logoarray = $_POST['logo'];

foreach ($logoarray as $logos)
{
$ids .=$logos.",";
echo $ids;
}

me acorde pq yo antes tuve el mismo problema con select multiple ..
Nop ese no es el problema porque borre el echo $ids; e igual sigue apareciendo...

De todas formas, a pesar de ese error, los datos de los checkboxes seleccionados y el resto del formulario se pasa bien al DB.

Gracias de todas formas

Saludos!
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 12:19.