Warning: Invalid argument supplied for foreach()
Résolu
Zakarya93
Messages postés
984
Date d'inscription
Statut
Membre
Dernière intervention
-
Zakarya93 Messages postés 984 Date d'inscription Statut Membre Dernière intervention -
Zakarya93 Messages postés 984 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai cette erreur : Warning: Invalid argument supplied for foreach() in C:\wamp\www\rs\pages\membre.php on line 31
Voici mon membre.php :
Merci d'avance ;)
J'ai cette erreur : Warning: Invalid argument supplied for foreach() in C:\wamp\www\rs\pages\membre.php on line 31
Voici mon membre.php :
<div class='header'> <?php $result= infos_membre_connecte(); $infos = $result['result']; if(count($infos)>0){ $pseudo = isset($infos['pseudo'])?$infos['pseudo']:''; echo "Bienvenue ". $pseudo; }else{ echo "<br> Aucun résultat."; } if(!isset($_SESSION['pseudo'])) { header("Location:index.php?page=login"); } ?> <p><a href="index.php?page=logout">Se déconnecter</a></p> </div> <div class='menu'> <ul> <li><a href="index.php?page=membre">Accueil</a></li> <li><a href="">Changer vos informations</a></li> <li><a href="">les membres</a></li> <li><a href="">Vos amis</a></li> <li><a href="">Invitations</a></li> <li><a href="">Messages</a></li> <li class="nbr"><?php echo nombre_membre() > 1 ? nombre_membre()." membres" : nombre_membre(). " membre"; ?></li> </ul> </div> <div class="info"> <?php foreach($infos as $info) { ?> <p><strong>Email</strong><em><?php echo $info['email']; ?></em></p> <p><strong>Sexe</strong><em><?php echo $info['sexe']; ?></em></p> <p><strong>A propos de vous</strong><em><?php echo $info['apropos']; ?></em></p> <?php } ?> </div>
Merci d'avance ;)
A voir également:
- Message: invalid argument supplied for foreach()
- Warning zone telechargement - Accueil - Outils
- Téléchargement et streaming illégal : voici les adresses des sites pirates que les FAI vont bloquer - Accueil - Services en ligne
- Cpu fan fail warning control - Forum Matériel & Système
- Symbole warning word ✓ - Forum Word
- Comment faire le symbole attention ✓ - Forum Loisirs / Divertissements
8 réponses
Quand je demandais .. quel code tu as utilisé .... c'était ...
"Quel code tu as utilisé .... pour ENREGISTRER les données dans ta bdd ... " ?
Au passage ... les accolades ne sont pas nécéssaires aux lignes 31 et 38 !
.. et comme pour tous le reste... il est préférable de récupérer les variables AVANT de les utiliser .. (avec un ISSET + écriture TERNAIRE ! )
Cordialement,
Jordane
"Quel code tu as utilisé .... pour ENREGISTRER les données dans ta bdd ... " ?
Au passage ... les accolades ne sont pas nécéssaires aux lignes 31 et 38 !
.. et comme pour tous le reste... il est préférable de récupérer les variables AVANT de les utiliser .. (avec un ISSET + écriture TERNAIRE ! )
<?php // récupérations des variables AVANT de les utiliser $email = isset($infos['email'])?$infos['email']:''; $sexe = isset($infos['sexe'])?$infos['sexe']:''; $apropos = isset($infos['apropos'])?$infos['apropos']:''; ?> <div class="info"> <p><strong>Email :</strong><em><?php echo $email; ?></em></p> <p><strong>Sexe :</strong><em><?php echo $sexe; ?></em></p> <p><strong>A propos de vous :</strong><em><?php echo $apropos; ?></em></p> </div>
Cordialement,
Jordane
Tu as repris le code de ta précédente question pour ton fichier membre.func.php ????
Sachant que ... attention....
ta fonction
ne retourne qu'une seule ligne ...celle du USER CONNECTE...
donc ... le
Tu peux directement écrire :
ta fonction
infos_membre_connecte();
ne retourne qu'une seule ligne ...celle du USER CONNECTE...
donc ... le
foreach($infos as $info)est inutile ...
Tu peux directement écrire :
<p><strong>Email</strong><em><?php echo $infos['email']; ?></em></p> <p><strong>Sexe</strong><em><?php echo $infos['sexe']; ?></em></p> <p><strong>A propos de vous</strong><em><?php echo $infos['apropos']; ?></em></p>
<div class='header'> <?php $result= infos_membre_connecte(); $infos = $result['result']; if(count($infos)>0){ $pseudo = isset($infos['pseudo'])?$infos['pseudo']:''; echo "Bienvenue ". $pseudo; }else{ echo "<br> Aucun résultat."; } if(!isset($_SESSION['pseudo'])) { header("Location:index.php?page=login"); } ?> <p><a href="index.php?page=logout">Se déconnecter</a></p> </div> <div class='menu'> <ul> <li><a href="index.php?page=membre">Accueil</a></li> <li><a href="">Changer vos informations</a></li> <li><a href="">les membres</a></li> <li><a href="">Vos amis</a></li> <li><a href="">Invitations</a></li> <li><a href="">Messages</a></li> <li class="nbr"><?php echo nombre_membre() > 1 ? nombre_membre()." membres" : nombre_membre(). " membre"; ?></li> </ul> </div> <div class="info"> <?php { ?> <p><strong>Email :</strong><em><?php echo $infos['email']; ?></em></p> <p><strong>Sexe :</strong><em><?php echo $infos['sexe']; ?></em></p> <p><strong>A propos de vous :</strong><em><?php echo $infos['apropos']; ?></em></p> <?php } ?> </div>
pourquoi j'ai pas affiché les données que j'ai entré lors de la phase d'inscription ?? normalement il le fait automatique
Ben ... je ne sais pas .... comment les as tu enregistré dans ta BDD ?
- Quel code as tu utilisé ?
- As tu vérifié dans ta BDD que les infos étaient bien présentes ?
- Tu n'as bien qu' UN SEUL enregistrement pour le pseudo avec lequel tu fais les tests ?
Code :
-Oui
-Oui
<div class='header'> <?php $result= infos_membre_connecte(); $infos = $result['result']; if(count($infos)>0){ $pseudo = isset($infos['pseudo'])?$infos['pseudo']:''; echo "Bienvenue ". $pseudo; }else{ echo "<br> Aucun résultat."; } if(!isset($_SESSION['pseudo'])) { header("Location:index.php?page=login"); } ?> <p><a href="index.php?page=logout">Se déconnecter</a></p> </div> <div class='menu'> <ul> <li><a href="index.php?page=membre">Accueil</a></li> <li><a href="">Changer vos informations</a></li> <li><a href="">les membres</a></li> <li><a href="">Vos amis</a></li> <li><a href="">Invitations</a></li> <li><a href="">Messages</a></li> <li class="nbr"><?php echo nombre_membre() > 1 ? nombre_membre()." membres" : nombre_membre(). " membre"; ?></li> </ul> </div> <div class="info"> <?php { ?> <p><strong>Email :</strong><em><?php echo $infos['email']; ?></em></p> <p><strong>Sexe :</strong><em><?php echo $infos['sexe']; ?></em></p> <p><strong>A propos de vous :</strong><em><?php echo $infos['apropos']; ?></em></p> <?php } ?> </div>
-Oui
-Oui
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ta question est :
.....
Tu y parles des données que tu as entré dans la phase d'inscription....... je suppose donc que tu as un formulaire dans lequel les utilisateurs saisissent les infos (c'est bien de ça que tu parles non ? )
... et donc... que tu devrais avoir le code PHP qui permet d'insérer ces données dans une BDD.
(et donc.. non.. ce n'est pas automatique ! )
Il faut faire une requête de type INSERT ....
pourquoi j'ai pas affiché les données que j'ai entré lors de la phase d'inscription ?? normalement il le fait automatique
.....
Tu y parles des données que tu as entré dans la phase d'inscription....... je suppose donc que tu as un formulaire dans lequel les utilisateurs saisissent les infos (c'est bien de ça que tu parles non ? )
... et donc... que tu devrais avoir le code PHP qui permet d'insérer ces données dans une BDD.
(et donc.. non.. ce n'est pas automatique ! )
Il faut faire une requête de type INSERT ....
INSERT INTO utilisateurs (email,sexe,pseudo .....) VALUES ('toto@mmmm.fr','M','toto'. ...)
Dans la video .. il montre comment AFFICHER les données présentent en BASE ....
Je ne vois pas le moment où il fait l'inscription via un formulaire ....!
Pour qu'on soit bien sur la même longueur d'onde .. quand tu parles d'automatique .. c'est à quel sujet ?
Pour l'affichage ? ou pour l'insertion en base ??
Je ne vois pas le moment où il fait l'inscription via un formulaire ....!
Pour qu'on soit bien sur la même longueur d'onde .. quand tu parles d'automatique .. c'est à quel sujet ?
Pour l'affichage ? ou pour l'insertion en base ??
pour la vidéo tuto il n'a rien insérer seul le code a suffit pour afficher les données qui sont dans la bdd
..... donc ... il a inséré MANUELLEMENT des données dans sa BDD .... et donc ... son code sert ( uniquement ) à les afficher .... ok !
Donc.. ton souci est lequel EXACTEMENT ?
rien ne s'affiche ??
Tu as essayé de faire un PRINT de la variable pour voir ce qu'elle contenait ?
Tu as testé la requête en direct dans ta BDD pour t'assurer qu'elle était bonne ?
<div class='header'> <?php $result= infos_membre_connecte(); //-------------------------------------------------// // Pour savoir ce que contient ta variable : //-------------------------------------------------// echo "<pre> result : <br>"; print_r($result); echo "</pre>"; //-------------------------------------------------// $infos = $result['result'];
<!DOCTYPE html> <html> <head> <link rel='stylesheet' href='css/style.css'> </head> <meta charset="UTF-8" > <body> <div id='content'> ?<div class='header'> <pre> result : <br></pre><br> Aucun résultat.<p><a href="index.php?page=logout">Se déconnecter</a></p> </div> <div class='menu'> <ul> <li><a href="index.php?page=membre">Accueil</a></li> <li><a href="">Changer vos informations</a></li> <li><a href="">les membres</a></li> <li><a href="">Vos amis</a></li> <li><a href="">Invitations</a></li> <li><a href="">Messages</a></li> <li class="nbr">3 membres</li> </ul> </div> <div class="info"> <div class="info"> <p><strong>Email :</strong><em></em></p> <p><strong>Sexe :</strong><em></em></p> <p><strong>A propos de vous :</strong><em></em></p> </div> </div> </body>
<?php //*********************************************// //Fichier : membre.func.php //*********************************************// ini_set("display_errors", "1"); error_reporting(E_ALL); //------------------------------------------- // Include du fichier de connexion à la BDD //------------------------------------------- $DIR_SITE = $_SERVER['DOCUMENT_ROOT'] . "/rs"; // chemin racine de ton site $CnxBDD = $DIR_SITE . "/functions/connect.php"; // emplacement du fichier depuis la racine de ton site if(file_exists($CnxBDD)){ require_once($CnxBDD) ; }else{ echo "<br><b>ERREUR !</b> Fichier $CnxBDD Introuvable"; } /** * function qui va recuperer les infos de l'utilisateur connecté */ function infos_membre_connecte() { global $bdd; // déclaration globale de BDD $infos=array(); $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:''; $sql = "SELECT * FROM utilisateurs WHERE pseudo = :pseudo"; $params = array(":pseudo"=>$pseudo); //le temps des tests: $infos['sql'] = $sql; $infos['params'] = $params; //exécution de la requête try { $prepare = $bdd->prepare($sql); $prepare->execute($params); // on stocke le résultat de la requête dans un ARRAY $result = $prepare->fetchall(); $infos['result'] = (count($result)>0) ? $result[0] : NULL; } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } } //la function qui va compter le nombre de personnes inscrites function nombre_membre() { global $bdd; // déclaration globale de BDD $req = $bdd->query("SELECT id FROM utilisateurs")or die(print_r($bdd->errorInfo())); return $req->rowCount(); }
Je n'ai toujours pas compris aussi pourquoi j'ai eu 1 membre de plus au compteur ?
... et ben non .. tu n'as pas corrigé !!!
Je t'ai dis quoi tout à l'heure ????
Prends les soucis UN PAR UN !
function infos_membre_connecte(){ global $bdd; // déclaration globale de BDD $infos=array(); // Récupération variable de session PSEUDO $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:''; //préparation de la requete : $sql = "SELECT * FROM utilisateurs WHERE pseudo = :pseudo"; $params = array(":pseudo"=>$pseudo); //stocke la requête et les paramêtres dans la variable de retour (cela facilite le debogage au cas où ! ) $infos['sql'] = $sql; $infos['params'] = $params; //exécution de la requête try{ $prepare = $bdd->prepare($sql); $prepare->execute($params); // on stocke le résultat de la requête dans un ARRAY $result = $prepare->fetchall(); $infos['result'] = (count($result)>0) ? $result[0] : NULL; } catch(Exception $e){ die('Erreur : '.$e->getMessage()); } // /!\ NE PAS OUBLIER DE FAIRE UN RETURN !! return $infos; }//Fin de la fonction
Je n'ai toujours pas compris aussi pourquoi j'ai eu 1 membre de plus au compteur ?
Je t'ai dis quoi tout à l'heure ????
Prends les soucis UN PAR UN !
Ici il me semble :
<div class='header'> <?php $result= infos_membre_connecte(); //-------------------------------------------------// // Pour savoir ce que contient ta variable : //-------------------------------------------------// echo "<pre> result : <br>"; print_r($result); echo "</pre>"; //-------------------------------------------------// $infos = $result['result'];
Ah c'est bon, j'ai mtn un "résult :" au dessus de bienvenue xzak47 comment puis je l'enlever ?
<div class='header'> <?php $result= infos_membre_connecte(); //-------------------------------------------------// // Pour savoir ce que contient ta variable : //-------------------------------------------------// echo "<pre> result : <br>"; echo "</pre>"; //-------------------------------------------------// $infos = $result['result']; if(count($infos)>0){ $pseudo = isset($infos['pseudo'])?$infos['pseudo']:''; echo "Bienvenue ". $pseudo; }else{ echo "<br> Aucun résultat."; } if(!isset($_SESSION['pseudo'])) { header("Location:index.php?page=login"); } ?> <p><a href="index.php?page=logout">Se déconnecter</a></p> </div> <div class='menu'> <ul> <li><a href="index.php?page=membre">Accueil</a></li> <li><a href="">Changer vos informations</a></li> <li><a href="">les membres</a></li> <li><a href="">Vos amis</a></li> <li><a href="">Invitations</a></li> <li><a href="">Messages</a></li> <li class="nbr"><?php echo nombre_membre() > 1 ? nombre_membre()." membres" : nombre_membre(). " membre"; ?></li> </ul> </div> <div class="info"> <?php // récupérations des variables AVANT de les utiliser $email = isset($infos['email'])?$infos['email']:''; $sexe = isset($infos['sexe'])?$infos['sexe']:''; $apropos = isset($infos['apropos'])?$infos['apropos']:''; ?> <div class="info"> <p><strong>Email :</strong><em><?php echo $email; ?></em></p> <p><strong>Sexe :</strong><em><?php echo $sexe; ?></em></p> <p><strong>A propos de vous :</strong><em><?php echo $apropos; ?></em></p> </div>
vous parlez de ce code ?
1/ Dans mon espace membre, en haut à droite j'ai écris "Aucun résultat" ( http://www.noelshack.com/2015-23-1433354604-erreur.jpg ) au lieu de "Bienvenue [pseudo]" ( http://www.noelshack.com/2015-23-1433354604-erreur.jpg )