Problème de code

Résolu
Aidez-moi s'il vous je suis coincé sur la construction de ma page membre

Voici le code de mon fichier (membre.func.php)
<?php
//la function qui va recuperer les infos de l'utilisateur connecté
function infos_membre_connecte(){
 $infos=array();
 $pseudo = isset($_SESSION['pseudo'])?$_SESSION['pseudo']:NULL;
if($pseudo){
 $req = $bdd->query("SELECT * FROM utilisateurs WHERE pseudo = '$pseudo'");

 while ($data = $req->rowCount()){
  $infos [] = $data;
 }
}else{
 $infos[] = "Erreur : Variable de Session Utilisateur introuvable";
}
return $infos;
}

?>


Voici le code de mon fichier (membre.php)
<div class='header'>
     <?php
  $infos = infos_membre_connecte();

    foreach($infos as $info)

  {
     echo "Bienvenue".$info['pseudo'];
     }
  
 ?>
</div>


EDIT : Ajout des balises de code

Et voici l'erreur que cela m'affiche:

Remarque: Variable indéfinie: bdd dans C: \ wamp64 \ www \ rs \ functions \ membre.func.php à la ligne 7

et

Erreur fatale: Appel à une fonction membre query () sur null dans C: \ wamp64 \ www \ rs \ functions \ membre.func.php à la ligne 7

Alors que faire svp

3 réponses

  1. Modérateur
    function infos_membre_connecte(){ 
      global $bdd; // ajout  ici
      $infos=array(); 
      $pseudo = isset($_SESSION
    
    
    

    1
    1. Après avoir inséré global $bdd; voici la nouvelle erreur affichée:

      Remarque: La conversion de tableau en chaîne dans C: \ wamp64 \ www \ rs \ functions \ membre.func.php à la ligne 9
      0
    2. Modérateur
      $req = $bdd->query("SELECT * FROM utilisateurs WHERE pseudo = '$pseudo'");
      
       while ($data = $req->rowCount()){
        $infos [] = $data;
       }
      

      Est à remplacer par

      $sql = "SELECT * FROM utilisateurs WHERE pseudo = :pseudo";
      $datas = array(":pseudo"=>$pseudo);
      //exécution de la requête
      try{
        $prep = $bdd->prepare($sql);
        $prep->execute($datas);
      }catch(Exception $e){
        echo "Erreur " . $e->getMessage();
      }
      
      //on stocke le resultat dans un array:
      $infos = $prep->fetchAll();
      
      


      Pour l'écriture de ton code Je t'invite fortement à lire et à appliquer ceci :
      https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
      et ça
      https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
      0
    3. ok
      0
    4. Mais cela ne marche pas toujours
      0
    5. Modérateur
      Si tu as respecté les consignes qui se trouvent dans les liens que je t'ai donné... tu devrais avoir un message d'erreur..... quel est il ??
      Et ensuite... montre nous ton code modifié !
      0
  2. Voici mon fichier de connexion connect.php

    <?php
    session_start();
    
    //connexion à la base de données
    
    try
    {
     // On se connecte à MySQL
     $bdd = new PDO('mysql:host=localhost;dbname=nonvitcha;charset=utf8', 'root', '',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    
    }
    
    catch(Exception $e)
    {
     // En cas d'erreur, on affiche un message et on arrête tout
    
            die('Erreur : '.$e->getMessage());
    }
    ?>
    0