Function nombre_membre en pdo

Résolu/Fermé
Signaler
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
-
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

Messages postés
567
Date d'inscription
mercredi 18 décembre 2013
Statut
Membre
Dernière intervention
1 juillet 2015
23
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
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
9
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
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
9
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
Messages postés
567
Date d'inscription
mercredi 18 décembre 2013
Statut
Membre
Dernière intervention
1 juillet 2015
23
Donnez le code des lignes 48 et 49 pour mieux situer l'erreur svp
0
Messages postés
567
Date d'inscription
mercredi 18 décembre 2013
Statut
Membre
Dernière intervention
1 juillet 2015
23
Et $nbins doit être égale à $selinsc->rowCount() pas fetch() pour afficher le nombre de résultat
0
Messages postés
567
Date d'inscription
mercredi 18 décembre 2013
Statut
Membre
Dernière intervention
1 juillet 2015
23
Sinon il suffirait d'afficher le dernier id de la base (c'est ce que vous faites dans votre script)
0
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
9
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
Messages postés
567
Date d'inscription
mercredi 18 décembre 2013
Statut
Membre
Dernière intervention
1 juillet 2015
23
En effet, c'est bien le problème.
0
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
9
je l'ai mise mais j'ai au moins 6 erreurs :'(
0
Messages postés
567
Date d'inscription
mercredi 18 décembre 2013
Statut
Membre
Dernière intervention
1 juillet 2015
23
Quelles sont-elles ?
0
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
9 >
Messages postés
567
Date d'inscription
mercredi 18 décembre 2013
Statut
Membre
Dernière intervention
1 juillet 2015

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
Messages postés
984
Date d'inscription
lundi 27 avril 2015
Statut
Membre
Dernière intervention
18 décembre 2020
9 >
Messages postés
567
Date d'inscription
mercredi 18 décembre 2013
Statut
Membre
Dernière intervention
1 juillet 2015

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