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. tengo un error qu me lleva ya dos horas, debe ser alguna tonteria pero no capto, y ahe utilizado el foreach varias veces pero hoy ...
  #1 (permalink)  
Antiguo 11/06/2009, 09:53
 
Fecha de Ingreso: mayo-2008
Ubicación: Caracas
Mensajes: 33
Antigüedad: 15 años, 11 meses
Puntos: 0
Problema con foreach

tengo un error qu me lleva ya dos horas, debe ser alguna tonteria pero no capto, y ahe utilizado el foreach varias veces pero hoy como que estoy bloqueada. De verdad que este error me tiene verde. Por fis HELP ME!!!

el error que me da es este :Warning: Invalid argument supplied for foreach() in ....

Código PHP:
        $i=0;    
        foreach(
$_POST["mes"] as $meses){
        
        
$sql2=mysql_query("update calendario set mes_calendario='".$meses."' where id_calendario='".$_POST["id_calendario"][$i]."'") or (mysql_error()); 
        
$i++; 
    
        }
        

 
$sql=mysql_query("SELECT * from calendario"); 
Código HTML:
 <form name="form1" method="post" action="">
  <table width="98%" border="0" align="center" cellpadding="2" cellspacing="0" class="table">
    <tr>
      <td colspan="2" class="fondoAzul">&nbsp;Elija los meses que desea ver en el calendario.</td>
    </tr>
    <tr>
 
      <td align="center" class="fondoGrisClaro">
	    <div align="left">
	      <? while($res=mysql_fetch_array($sql)){?>  
	      #
	      <?=1+$i++;?> 
	      <select  id="mes[]" name="mes[]">
	        <option <? if($res["mes_calendario"]=='') echo 'selected="selected"';?> value="">.::Ninguno</option>
	        <option <? if($res["mes_calendario"]=='01') echo 'selected="selected"';?> value="01">Enero</option>
	        <option <? if($res["mes_calendario"]=='02') echo 'selected="selected"';?> value="02">Febrero</option>
	        <option <? if($res["mes_calendario"]=='03') echo 'selected="selected"';?> value="03">Marzo</option>
	        <option <? if($res["mes_calendario"]=='04') echo 'selected="selected"';?> value="04">Abril</option>
	        <option <? if($res["mes_calendario"]=='05') echo 'selected="selected"';?> value="05">Mayo</option>
	        <option <? if($res["mes_calendario"]=='06') echo 'selected="selected"';?> value="06">Junio</option>
	        <option <? if($res["mes_calendario"]=='07') echo 'selected="selected"';?> value="07">Julio</option>
	        <option <? if($res["mes_calendario"]=='08') echo 'selected="selected"';?> value="08">Agosto</option>
	        <option <? if($res["mes_calendario"]=='09') echo 'selected="selected"';?> value="09">Septiembre</option>
	        <option <? if($res["mes_calendario"]=='10') echo 'selected="selected"';?> value="10">Octubre</option>
	        <option <? if($res["mes_calendario"]=='11') echo 'selected="selected"';?> value="11">Noviembre</option>
	        <option <? if($res["mes_calendario"]=='12') echo 'selected="selected"';?> value="12">Diciembre</option>
          </select>  
	      <input type="hidden" id="id_calendario[]" name="id_calendario[]" value="<?=$res["id_calendario"]?>"/>
          <? }?>
      </div></td>
      <td width="2%" rowspan="2" class="fondoGrisClaro"></td>
    </tr>
    <tr>
      <td align="center" class="fondoGrisClaro">&nbsp;</td>
    </tr>
    
    

    <tr>
      <td class="fondoGrisClaro"><input name="button" type="submit" class="botones" id="button" value="Aceptar" />
      <br></td>
      <td class="fondoGrisClaro">&nbsp;</td>
    </tr>
  </table>
</form> 
  #2 (permalink)  
Antiguo 11/06/2009, 09: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: Problema con foreach

eso es porque indiscriminadamente estas usando una variable POST sin que exista un envío POST ...

antes de usar una variable, debes asegurarte que existe... y que es del tipo que necesitas, usa isset() e is_array()
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/06/2009, 10:01
Avatar de Sommy  
Fecha de Ingreso: septiembre-2008
Mensajes: 228
Antigüedad: 15 años, 7 meses
Puntos: 6
Respuesta: Problema con foreach

Hola!

De todas formas dudo que puedas meter un array adentro...

Una vez que corrijas lo que dijo pateketrueke proba de hacer un var_dump de post y decime que te sale para elaborar un loop a medida del resultado.

Código PHP:
var_dump($_POST['mes']); 
  #4 (permalink)  
Antiguo 11/06/2009, 10:28
 
Fecha de Ingreso: mayo-2008
Ubicación: Caracas
Mensajes: 33
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Problema con foreach

Cita:
Iniciado por Sommy Ver Mensaje
Hola!

De todas formas dudo que puedas meter un array adentro...

Una vez que corrijas lo que dijo pateketrueke proba de hacer un var_dump de post y decime que te sale para elaborar un loop a medida del resultado.

Código PHP:
var_dump($_POST['mes']); 
Hola Sommy el resultado que me da es:

array(3) { [0]=> string(2) "06" [1]=> string(2) "07" [2]=> string(0) "" }
  #5 (permalink)  
Antiguo 11/06/2009, 10:39
Avatar de Baleog  
Fecha de Ingreso: abril-2009
Ubicación: Medellin
Mensajes: 34
Antigüedad: 15 años
Puntos: 4
Respuesta: Problema con foreach

En realidad creo que tu problema deberia estar mas del lado del formulario

Código PHP:
 <form name="form1" method="post" action="">
  <table width="98%" border="0" align="center" cellpadding="2" cellspacing="0" class="table">
    <tr>
      <td colspan="2" class="fondoAzul">&nbsp;Elija los meses que desea ver en el calendario.</td>
    </tr>
    <tr>
 
      <td align="center" class="fondoGrisClaro">
        <div align="left">
          <? while($res=mysql_fetch_array($sql)){?>  
          #
          <?=1+$i++;?> 
          <select  id="mes[]" name="mes[]">
            <option <? if($res["mes_calendario"]=='') echo 'selected="selected"';?> value="">.::Ninguno</option>
            <option <? if($res["mes_calendario"]=='01') echo 'selected="selected"';?> value="01">Enero</option>
            <option <? if($res["mes_calendario"]=='02') echo 'selected="selected"';?> value="02">Febrero</option>
            <option <? if($res["mes_calendario"]=='03') echo 'selected="selected"';?> value="03">Marzo</option>
            <option <? if($res["mes_calendario"]=='04') echo 'selected="selected"';?> value="04">Abril</option>
            <option <? if($res["mes_calendario"]=='05') echo 'selected="selected"';?> value="05">Mayo</option>
            <option <? if($res["mes_calendario"]=='06') echo 'selected="selected"';?> value="06">Junio</option>
            <option <? if($res["mes_calendario"]=='07') echo 'selected="selected"';?> value="07">Julio</option>
            <option <? if($res["mes_calendario"]=='08') echo 'selected="selected"';?> value="08">Agosto</option>
            <option <? if($res["mes_calendario"]=='09') echo 'selected="selected"';?> value="09">Septiembre</option>
            <option <? if($res["mes_calendario"]=='10') echo 'selected="selected"';?> value="10">Octubre</option>
            <option <? if($res["mes_calendario"]=='11') echo 'selected="selected"';?> value="11">Noviembre</option>
            <option <? if($res["mes_calendario"]=='12') echo 'selected="selected"';?> value="12">Diciembre</option>
          </select>  
          <input type="hidden" id="id_calendario[]" name="id_calendario[]" value="<?=$res["id_calendario"]?>"/>
          <? }?>
      </div></td>
      <td width="2%" rowspan="2" class="fondoGrisClaro"></td>
    </tr>
    <tr>
      <td align="center" class="fondoGrisClaro">&nbsp;</td>
    </tr>
    
    

    <tr>
      <td class="fondoGrisClaro"><input name="button" type="submit" class="botones" id="button" value="Aceptar" />
      <br></td>
      <td class="fondoGrisClaro">&nbsp;</td>
    </tr>
  </table>
</form>
Porque veo que estas armando el select dentro de un ciclo while, si la consulta tiene un solo resultado esto deberia trabajar bien. pero si retorna varios resultados te pondría varios select lo que te generaría un error.

y lo otro seria poner el foreach dentro de un if(isset($_POST['mes'])) y esto te solucionaria el error, me avisas si algo
  #6 (permalink)  
Antiguo 11/06/2009, 15:29
 
Fecha de Ingreso: mayo-2008
Ubicación: Caracas
Mensajes: 33
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Problema con foreach

con esto funciono perfectamente gracias a todos =) !!!! amo este foro, siempre me salvan:

Código PHP:
if($_POST){

    
extract($_POST);
        
$i=0;            
        foreach(
$_POST["mes"] as $meses){
        
$sql2=mysql_query("update calendario set mes_calendario='".$meses."' where id_calendario='".$_POST["id_calendario"][$i]."'") or (mysql_error()); 
        
$i++; 
    
        }
        

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 21:33.