Ver Mensaje Individual
  #5 (permalink)  
Antiguo 17/12/2013, 19:20
Avatar de Briss
Briss
 
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 13 años, 5 meses
Puntos: 12
Respuesta: Warning: Invalid argument supplied for foreach()...

Cita:
Iniciado por pateketrueke Ver Mensaje
Caray, ¿de dónde has leído eso?

Esa función no sirve de nada (sólo agrega comillas a una variable), es una absoluta tontería, ¿tu problema es de comillas o arrays?

¿O acaso creías que agregando dicho código mágico se iba a corregir tu error?

Jamás había conocido a un programador tan creyente de la metafísica.

Entiende que tu problema se soluciona verificando que $clases exista, que no esté vacía, y que además sea un array.

Si no verificas eso entonces te dará error, si en algún otro punto de tu código modificas dicha variable y no cumple los requisitos te dará error de nuevo, etc.

¿No vas a mostrar el código real verdad?
jajaja comillas ammm ammm


este es el codigo que uso para elegir mis Meses
Código PHP:
mysql_select_db($database_connection$connection); 
$query_pagos=sprintf ("SELECT * FROM mensualidades  Where periodo=%s "GetSQLValueString($ID"text")); 
pagos =  mysql_query($query_ pagos$connection) or die(mysql_error()); 
    echo 
"<h1>Meses</h1>"
    echo 
"<form method=\"post\" action=\"comprobar_pagos.php\" > 
    <table> 
    <tr> 
    <td>Mes</td> 
               <td></td> 
    </tr>"


    
$filas mysql_num_rows($pagos); 
    if(
$filas == 0){ 
        echo 
"<tr> 
                <td colspan=6>No hay datos registrados.</td> 
            </tr>"

    }else{ 
        while(
$pagos 2 mysql_fetch_array($pagos)){ 
            echo 
"<tr> 
<td>"
.$ pagos 2['Mes']."</td>                     
<td><input type=\"checkbox\" name=\"clases[]\" value=\""
.$ pagos ['id_mensualidad']."\"></td> 
            </tr>"

        } 
        echo 
"<tr> 
            <td> 
             
<input type=\"submit\" value=\"Pagos realizados\"> 
            </td> 
            </tr>"

    } 
     
    echo 
"</table></form>"
?> 



comprobar_pagos.php

Código PHP:
if ( !empty($_POST['clases']) && is_array($_POST['clases']))

foreach(
$clases as $clase){
    
$q_clase =($clase);
        
        
$query_precedente "SELECT M.Mes FROM mensualidades AS M WHERE M.id_mensualidad= (SELECT MI.precede  FROM mensualidades AS MI where MI.id_mensualidad= '$q_clase')";
        
        
$query_precedente_detalle "SELECT M.Mes, M.precede FROM mensualidades AS M WHERE M.id_mensualidad = (SELECT MI.precede FROM mensualidades AS MI, mpagadas AS CI WHERE MI.id_ mensualidad = CI.id_ mensualidad = '$q_clase')";
        
        
$result_precedente = @mysql_query($query_precedente$connection) or die(mysql_error());
        
        
$filas = @mysql_num_rows($result_precedente);
        
$tiene_precedente true;
        if(
$filas == 0){
            
$tiene_precedente false;
        }else{
            
$precedente = @mysql_fetch_array($result_precedente);
            
$mes$precedente['Mes'];
            
            
$result_precedente_detalle = @mysql_query($query_precedente_detalle$connection) or die(mysql_error());
            
$filas = @mysql_num_rows($result_precedente_detalle);
            if(
$filas == 0){
                
$errores[$clase] = "No se a registrado el pago previo del Mes de: $mes";
            
            }
        }
        
        
$query_clase "SELECT * from mensualidades WHERE id_ mensualidad = '$q_clase'";
        
        
$result_clase = @mysql_query($query_clase$connection) or die(mysql_error());
        
        
$filas = @mysql_num_rows($result_clase);
        if(
$filas != 0){
            
$clase = @mysql_fetch_array($result_clase);
            
$query_precedente_detalle "SELECT M.Mes, M.precede FROM mensualidades AS M WHERE M.id_ mensualidad = (SELECT MI.precede FROM mensualidades AS MI, mpagadas AS CI WHERE MI.id_ mensualidad = CI.id_ mensualidad = '$q_clase')";
        
        
$result_precedente = @mysql_query($query_precedente$connection) or die(mysql_error());
            echo 
"<tr>
                     <td>"
.$clase['id_ mensualidad ']."</td>
            <td>"
.$clase['Mes']."</td>
            <td>"

        
        
$filas mysql_num_rows($result_precedente);
        
$tiene_precedente true;
        if(
$filas == 0){
            
$tiene_precedente false;
            echo 
"<a href='agregar.php?id={$id_ mensualidad }&name={$Mes}' class='customButton'>";
            echo 
"<img src='images/add-to-cart.png' title='Pagar' />";
            
            
        }else{
            
$precedente mysql_fetch_array($result_precedente);
            
$mes$precedente['Mes'];
            
            
$result_precedente_detalle mysql_query($query_precedente_detalle$connection) or die(mysql_error());
            
$filas mysql_num_rows($result_precedente_detalle);
            if(
$filas == 0){
                
                echo 
"<img src='images/cancel.png' title='Pagar' />";
            }
        }
            
"</td>        
                </tr>"
;
        }else{
            echo 
"<tr><td colspan=6>No seleccionó mes</td></td></tr>";
        }
    } 
Como decia si hay un mes q no tenga precedente arroja el error... si selecciono uno con precedente no hay error