Notice: Undefined variable: infos

Fermé
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 - 3 juin 2015 à 14:48
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 - 3 juin 2015 à 16:56
Bonjour,

J'obtiens ceci : http://www.noelshack.com/2015-23-1433332144-erreur.jpg

Membre.php :
<div class='header'>
<?php
 $result= infos_membre_connecte();
//----------------------------------------//
 //le temps des tests :
//----------------------------------------//
 echo "<pre> Result de la fonction : <br>";
 print_r( $infos );
 echo "</pre>";
//----------------------------------------//
 
 $infos  = $result['result'];
 foreach($infos as $info){
   $pseudo = isset($info['pseudo'])?$info['pseudo']:'';
   echo "Bienvenue ". $pseudo;
 }
?>
</div


Membre.func.php :

<?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
 $infos['result'] = $prepare->fetchall();
}catch(Exception $e){
  die('Erreur : '.$e->getMessage());
}
 
return $infos;
}



Une solution svp ? Merci d'avance :)

2 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
3 juin 2015 à 14:56
Salut,

A la ligne 8 du fichier Membre.php tu essayes d'afficher la variable $infos alors que celle-ci n'existe pas encore.
La solution est de déplacer ton affichage de test (le code de la ligne 4 à la ligne 10) après l'affectation de la variable $infos (donc après la ligne
$infos = $result['result'];
).

Bonne journée
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
3 juin 2015 à 15:00
Merci de ta réponse ! ligne 4 ou 3 tu veux dire ? sinon j'ai déplacé le code ligne 3 et j'ai le meme probleme :/
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
3 juin 2015 à 15:15
code incorrect :
print_r($infos); // on affiche $infos alors qu'elle n'est pas définie -> erreur
$infos = $result['result']; // on défini la variable $infos


code correct :
$infos = $result['result']; // on défini la variable $infos
print_r($infos); // on affiche $infos
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10 > Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022
Modifié le 18 déc. 2020 à 17:39
J'obtiens :

Result de la fonction :

Array ( [0] => Array ( [id] => 16 [0] => 16 [pseudo] => machintruc [1] => machintruc [password] => df70f9b975b42116ee6c0231a7e6ead0bbb283aa [2] => df70f9b975b42116ee6c0231a7e6ead0bbb283aa [email] => xxx@gmail.com [3] => xxx@gmail.com [sexe] => Homme [4] => Homme [apropos] => salut les gens [5] => salut les gens ) ) Bienvenue machintruc

alors que je veux seulement "bienvenue machintruc "... :/

(Adresse mail supprimée par la modération)
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020
3 juin 2015 à 16:38
Il suffit de retirer le PRINT que je t'avais fais mettre pour les tests....
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
3 juin 2015 à 16:17
Dites moi si j'ai bon :

$infos['result'] = $prepare->fetchall();


plutôt faire ceci

$result = $prepare->fetchall();
if(count($result)!=0) $infos['result'] = $result[0];
else $infos['result'] = null;


car je cherche pas a avoir qu'un seul user... cela permettra de n'avoir qu'un seul tableau qui correspond bien à mon user.
Et du coup dans ùon fichier Membre.php, je teste si $result['result'] n'est pas null et j'affiche directement mon user ainsi :

if ($result['result']!=null) echo $result['result']['pseudo'];
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 3/06/2015 à 16:41
<div class='header'>
<?php
 $result= infos_membre_connecte();
 $infos  = $result['result'];
if(count($infos)>0){
 foreach($infos as $info){
   $pseudo = isset($info['pseudo'])?$info['pseudo']:'';
   echo "Bienvenue ". $pseudo;
 }
}
?>
</div>
 


Cordialement,
Jordane
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10
Modifié par Zakarya93 le 3/06/2015 à 16:47
Pas d'erreurs mais c'est affiché sur un bandeau blanc avec fond noir : Bienvenue Bienvenue Bienvenue Bienvenue Bienvenue Bienvenue Bienvenue Bienvenue Bienvenue Bienvenue Bienvenue Bienvenue

Mon membre.func.php :

<?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();
if(count($result)!=0) $infos['result'] = $result[0];
else $infos['result'] = null;
}catch(Exception $e){
  die('Erreur : '.$e->getMessage());
}

return $infos;
}
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié par jordane45 le 3/06/2015 à 16:52
Déjà .. évites quand tu le peux.. de faire des IF ELSE comme ça .. et préfères utiliser l'écriture TERNAIRE
if(count($result)!=0) $infos['result'] = $result[0];
else $infos['result'] = null;

Revient à écrire plus simplement :
$infos['result'] = (count($result)>0) ? $result[0]  : NULL; 


Et donc dans ta page d'affichage tu peux ensuite mettre :
<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.";
}
?>
</div>
0
Zakarya93 Messages postés 984 Date d'inscription lundi 27 avril 2015 Statut Membre Dernière intervention 18 décembre 2020 10 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
3 juin 2015 à 16:56
VOUS ETES REMARQUABLE !! que Dieu vous garde merci merci merci :) Topic résolu !
0