Notice: Undefined variable: infos
Zakarya93
Messages postés
1026
Statut
Membre
-
Zakarya93 Messages postés 1026 Statut Membre -
Zakarya93 Messages postés 1026 Statut Membre -
Bonjour,
J'obtiens ceci : http://www.noelshack.com/2015-23-1433332144-erreur.jpg
Membre.php :
Membre.func.php :
Une solution svp ? Merci d'avance :)
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
-
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-
-
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
- 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)
-
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'];
-
-
<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-
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; } -
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>
-