Warning: Invalid argument supplied for foreach() [Résolu/Fermé]
Signaler
Zakarya93
Zakarya93
- Messages postés
- 984
- Date d'inscription
- lundi 27 avril 2015
- Statut
- Membre
- Dernière intervention
- 18 décembre 2020
Zakarya93
- Messages postés
- 984
- Date d'inscription
- lundi 27 avril 2015
- Statut
- Membre
- Dernière intervention
- 18 décembre 2020
A voir également:
- Invalid argument supplied for foreach()
- Warning: invalid argument supplied for foreach() - Meilleures réponses
- Invalid argument supplied for foreach() php - Meilleures réponses
- Warning: Invalid argument supplied for foreach() ✓ - Forum - PHP
- Invalid argument supplied for foreach() ✓ - Forum - Programmation
- [PHP]Invalid argument supplied for foreach() ✓ - Forum - PHP
- Invalid argument during seek for read on /dev/sdb gparted ✓ - Forum - Ubuntu
- Problème iptables "Invalid argument" ✓ - Forum - Linux / Unix
8 réponses
jordane45
- Messages postés
- 31105
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 20 janvier 2021
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
ZeNairolf
- Messages postés
- 1688
- Date d'inscription
- vendredi 6 mars 2009
- Statut
- Membre
- Dernière intervention
- 24 septembre 2018
Et i tu fais un var_dump($infos) juste avant ta boucle, ça te retourne quoi?
jordane45
- Messages postés
- 31105
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 20 janvier 2021
Tu as repris le code de ta précédente question pour ton fichier membre.func.php ????
jordane45
- Messages postés
- 31105
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 20 janvier 2021
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>
Zakarya93
- Messages postés
- 984
- Date d'inscription
- lundi 27 avril 2015
- Statut
- Membre
- Dernière intervention
- 18 décembre 2020
- Messages postés
- 31105
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 20 janvier 2021
Merci c'est nickel ! juste : pourquoi j'ai pas affiché les données que j'ai entré lors de la phase d'inscription ?? normalement il le fait automatique
Zakarya93
- Messages postés
- 984
- Date d'inscription
- lundi 27 avril 2015
- Statut
- Membre
- Dernière intervention
- 18 décembre 2020
<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>
jordane45
- Messages postés
- 31105
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 20 janvier 2021
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 ?
Zakarya93
- Messages postés
- 984
- Date d'inscription
- lundi 27 avril 2015
- Statut
- Membre
- Dernière intervention
- 18 décembre 2020
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
jordane45
- Messages postés
- 31105
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 20 janvier 2021
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'. ...)
jordane45
- Messages postés
- 31105
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 20 janvier 2021
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'];
Zakarya93
- Messages postés
- 984
- Date d'inscription
- lundi 27 avril 2015
- Statut
- Membre
- Dernière intervention
- 18 décembre 2020
j'obtiens juste un "résult" qui apparait au dessus de "aucun résultat" qui est sur "se déconnecter"
<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']; 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>
Zakarya93
- Messages postés
- 984
- Date d'inscription
- lundi 27 avril 2015
- Statut
- Membre
- Dernière intervention
- 18 décembre 2020
Zakarya93
- Messages postés
- 984
- Date d'inscription
- lundi 27 avril 2015
- Statut
- Membre
- Dernière intervention
- 18 décembre 2020
<!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>
jordane45
- Messages postés
- 31105
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 20 janvier 2021
Il t'affiche donc :
... donc .. aucun résultat venant de cette fonction !
Peux tu nous montrer de nouveau ce que contient ta fonction infos_membre_connecte
(j'espère que tu avais corrigé le RETURN que tu avais retiré par mégarde..... !!! )
<pre> result : <br></pre>
... donc .. aucun résultat venant de cette fonction !
Peux tu nous montrer de nouveau ce que contient ta fonction infos_membre_connecte
(j'espère que tu avais corrigé le RETURN que tu avais retiré par mégarde..... !!! )
Zakarya93
- Messages postés
- 984
- Date d'inscription
- lundi 27 avril 2015
- Statut
- Membre
- Dernière intervention
- 18 décembre 2020
<?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 ?
jordane45
- Messages postés
- 31105
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 20 janvier 2021
... 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 !
Zakarya93
- Messages postés
- 984
- Date d'inscription
- lundi 27 avril 2015
- Statut
- Membre
- Dernière intervention
- 18 décembre 2020
Zakarya93
- Messages postés
- 984
- Date d'inscription
- lundi 27 avril 2015
- Statut
- Membre
- Dernière intervention
- 18 décembre 2020
- Messages postés
- 567
- Date d'inscription
- mercredi 18 décembre 2013
- Statut
- Membre
- Dernière intervention
- 1 juillet 2015
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>
hharchi9
- Messages postés
- 567
- Date d'inscription
- mercredi 18 décembre 2013
- Statut
- Membre
- Dernière intervention
- 1 juillet 2015
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'];
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 )