Function nombre_membre en pdo

Résolu
Zakarya93 Messages postés 1026 Statut Membre -  
hharchi9 Messages postés 693 Statut Membre -
Bonjour,

Pour ne pas faire de betises, j'aimerai savoir comment changer cette function nombre_membre en pdo sachant qu'elle est en mysql (obsolète) :

// la fonction qui va compter le nombre de personne incrite
function nombre_membre()
{
$query = mysql_query("SELECT COUNT(id) FROM utilisateurs");
return mysql_result($query,0);
}
?>


Merci d'avance :D

2 réponses

  1. hharchi9 Messages postés 693 Statut Membre 24
     
    Bonjour,

    Sauf erreur de ma part voici la fonction modifiée. J'ai supposé que la connexion à la base avait été faites avec la variable $bdd :

    function nombre_membre()
    {
    $query = $bdd->query("SELECT COUNT(id) FROM utilisateurs");
    return $query->rowCount();
    }
    0
    1. Zakarya93 Messages postés 1026 Statut Membre 10
       
      J'ai 2 erreurs, Notice: Undefined variable: bdd in C:\wamp\www\rs\functions\membre.func.php on line 49

      et

      Fatal error: Call to a member function query() on a non-object in C:\wamp\www\rs\functions\membre.func.php on line 49
      0
    2. Zakarya93 Messages postés 1026 Statut Membre 10
       
      Celui-ci est bon ?

      <?php
      // Connexion à la base de données
      try
      {
      $bd = new PDO('mysql:host=localhost;dbname=net', 'root', '');
      }
      catch(Exception $e)
      {
      die('Erreur : '.$e->getMessage());
      }
      $selinsc = $bd->query('SELECT COUNT (*) AS nbi FROM membres ');
      $nbins=$selinsc->fetch();
      echo"LES INSCRITS: ".$nbins['nbi'];
      ?>


      J'ai pourtant une erreur : Parse error: syntax error, unexpected '<', expecting '{' in C:\wamp\www\rs\functions\membre.func.php on line 49
      0
    3. hharchi9 Messages postés 693 Statut Membre 24
       
      Donnez le code des lignes 48 et 49 pour mieux situer l'erreur svp
      0
    4. hharchi9 Messages postés 693 Statut Membre 24
       
      Et $nbins doit être égale à $selinsc->rowCount() pas fetch() pour afficher le nombre de résultat
      0
    5. hharchi9 Messages postés 693 Statut Membre 24
       
      Sinon il suffirait d'afficher le dernier id de la base (c'est ce que vous faites dans votre script)
      0
  2. Zakarya93 Messages postés 1026 Statut Membre 10
     
    Erreur : Parse error: syntax error, unexpected end of file in C:\wamp\www\rs\functions\membre.func.php on line 49

    <?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() {
    $req = $bdd->query("SELECT id FROM utilisateurs")or die(print_r($bdd->errorInfo()));
    return $req->rowCount();
    }
    ?>


    P.S. : je pense qu'il manque une accolade fermante pour ma function infos_membre_connecte() non?
    0
    1. hharchi9 Messages postés 693 Statut Membre 24
       
      En effet, c'est bien le problème.
      0
    2. Zakarya93 Messages postés 1026 Statut Membre 10
       
      je l'ai mise mais j'ai au moins 6 erreurs :'(
      0
    3. hharchi9 Messages postés 693 Statut Membre 24
       
      Quelles sont-elles ?
      0
    4. Zakarya93 Messages postés 1026 Statut Membre 10 > hharchi9 Messages postés 693 Statut Membre
       
      J'ai reglé le problème un peu, je n'en ai que 2 maintenant :
      Notice: Undefined variable: bdd in C:\wamp\www\rs\functions\membre.func.php on line 51

      Fatal error: Call to a member function query() on a non-object in C:\wamp\www\rs\functions\membre.func.php on line 51


      <?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() {
      $req = $bdd->query("SELECT id FROM utilisateurs")or die(print_r($bdd->errorInfo()));
      return $req->rowCount();
      }
      ?>
      0
    5. Zakarya93 Messages postés 1026 Statut Membre 10 > hharchi9 Messages postés 693 Statut Membre
       
      Sachant que mon membre.php est :

      <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="">Messages</a></li>
      			   <li class="nbr"><?php echo nombre_membre() > 1 ? nombre_membre()." membres" : nombre_membre(). " membre"; ?></li>
             </ul>
      </div>
      0