Invalid argument supplied for foreach()

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Invalid argument supplied for foreach()

par zzzSev » 10 juin 2006, 14:09

oups, problème résolu mais je n'ai pas eu le temps de poster ...
Désolée et merci pour tout !!!!

Bonne journée !

par Insomniak » 10 juin 2006, 13:37

Je réitere donc : RTM : read the manual...

Un indice : www.php.net
il y a tout ce qu'il faut

par zzzSev » 10 juin 2006, 13:25

Voici le code fourni par le prof, juste une précision : il développait en PDO
// Faire une requete et retourner le resultat
    public static function requete($req)
    {
        self::msg("Requete: $req") ;
        // Existe-t-il une instance de Connexion ?
        if (is_null(connexion::$connexion))
        {
            // NON : il faut en creer une
            connexion::$connexion = new connexion() ;
        }
        $res = mysql_query($req, connexion::$base) ;
        if (!$res)
        {
            throw new Exception("Erreur pour la requete <i>$req</i> :<br>".mysql_error(connexion::$base)) ;
        }
        return $res ;
    }

par insomniak » 10 juin 2006, 11:13

Salut,

Pourrais tu expliquer ce que fait connexion::requete stp ? du moins recopier le code de cette methode ?

Car si tu fais comme moi ca devrait marcher mais si ce n'est pas le cas, forcement, ca ne marchera point...

En gros : si tu fais juste un mysql_query il ne te renverra qu'un resultat non exploitable comme ca.
Il faut balancer un mysql_fetch_array derriere pour qu'il te renvoie un tableau de resultats.Et surtout fais les tests qui vont bien et RTFM ;)

@++ et bon courage

par zzzSev » 10 juin 2006, 10:24

Bonjour et merci pour la réponse.

J'ai testé les 2 solutions mais aucune ne fonctionne, j'ai toujours le même message d'erreur ... y aurait-il autre chose que j'aurais oublié ? (je suis sur le bon fichier, j'ai vérifié au cas où ...)

Merci d'avance !

par insomniak » 10 juin 2006, 00:55

Salut,

Essayes de faire un

$req = array(); pour initialiser ta variable... car un foreach attend un tableau. Or si ton resultat ne contient pas de tuple, tu n'as pas un tableau mais rien du tout... Donc dans ton cas, c'est meme pas un $req = array qu'il faut faire mais simplement tester si $req == false ou pas avant de faire un foreach dessus ;)

@++

Invalid argument supplied for foreach()

par zzzsev » 09 juin 2006, 22:49

Bonsoir,

Voici mon message d'erreur : " Invalid argument supplied for foreach() ... "
suite au code
public function __construct ($id=null)
  {
	// id = identifiant du theme pere
	
	$req = connexion::requete("SELECT * FROM THEME WHERE THMPID ".(is_null($id) ? "IS NULL" : "= '$id'")." ORDER BY THMNOM") ;
	
        $theme = new Theme() ;
        foreach ($req as $ligne)         // ERREUR ICI
        {
            $theme->Chargement($ligne) ;
            $this->liste[] = clone $theme ;
        }
	
  }
J'ai la même erreur dans une autre classe sur un foreach, sachant que ce code vient du prof, je pige pas ...
Merci pour votre aide !