Bonjour je tente de creer une class membre me permettant de me coonecter à ma BDD et d'afficher les coordonnes d'un membres comme son pseudo ;mail; mais mes fichier
Membre.class.php beug.
avec le mesage suivant:

Missing argument 1 for Membre::__construct(), called in C:\wamp\www\siteduzero\Partie3\PHP-objet\testMembre.php on line 7 and defined in C:\wamp\www\siteduzero\Partie3\PHP-objet\Membre.class.php on line 46

voici le fichier en question

<?php



class Membre{
// paramettres de connexion
private $server ;
private $user ;
private $db ;
private $mdp ;

// ici on crée les variables
private $pseudo;
private $email;
private $signature;
private $actif;
private $membre_id;


// Avant tout d'abord créons une fonction de connexion à la BDD.
public function connexion($server ='localhost',$user ='root',$db='projet_bah',$mdp ='')
{

// je stock les paramettres de connexion dans l'objet $this.
$this->server = $server;
$this->user = $user;
$this->mdp = $mdp;
$this->db = $db;



// je vérifie s'il y a erreur j'envoie une alerte et j'arrete le script;
if(mysql_connect($this->server,$this->user,$this->mdp)=== false)
{
echo "<p>Une erreur de connexion s'est produite!</p>";
echo $this;
exit(1);
}// je verifie la selection de la base.
if(mysql_select_db($this->db)===false)
{
echo"<p>impossible de se connecter à la base</p>";
echo $this;
exit(2);
}
}
public function __construct($membre_id)
{
// Je stock les variables dans l'objet $this;



// Récupérer en base de données les infos du membre
$requete = 'SELECT pseudo, email, signature, actif FROM membres WHERE membre_id = 1';

// Définir les variables avec les résultats de la base
$this->pseudo = $requete['pseudo'];
$this->email =$requete['email'];
// etc.
}

// 1- fonctions pour afficher (get) pour modifier (set)
// a-pour afficher un pseudo (get)
public function getPseudo()
{
return $this->pseudo;
}
//b- Pour modifier un pseudo (set)
public function setPseudo($nouveauPseudo)
{
// on vérifie si le pseudo n'est pas vide et s'il est inférieur à 15 caractères.
if(!empty($nouveauPseudo) AND strlen($nouveauPseudo) < 15)
{// on le change(on stock le nouveau dans l'ancien)
return $this->pseudo = $nouveauPseudo;
}

}
// 2-Autres fonctions.

// a-fonctions pour envoyer un mail
public function envoyerEmail($titre, $message)
{
ini_set($titre,$message);
}
//b-Fonction pour bannir
public function bannir()
{
$this-> actif = false;
$this-> envoyerEmail('Vous aves été banni ','Ne revenez plus!');

}

}// fin de la class;

######################

<?php


include_once('Membre.class.php');

// créons notre objet membre.
$membre = new Membre();
// je stock un pseudo dns l'ojet qui est vide à sa création.
$membre -> setPseudo('Saikou');
// j'affiche le pseudo et lui envoi un messag
echo $membre->getPseudo().' Je vais te bannir!';
$membre -> bannir();

$objet = new Membre(2);
echo $objet;

?>
Salut,
Ta fonction demande un argument, la variable membre_id
tu crées cette variable en private mais elle reste vide.
Le plus logique est qu'il l'attende de la BDD (est elle renseignée ?) mais on ne connais pas sa structure et je ne vois pas de requête pour la récupérer.
Apres j'ai une question pourquoi cette fonction ne s'occupe que du 1er membre ?
Modifié par Lemonstr (02 Mar 2013 - 21:23)
Comme le dit Lemonstr, ton constructeur attend une valeur, ici "membre_id". Or dans ton test, tu ne lui fournis pas.
// créons notre objet membre.
$membre = new Membre();
// tu devrais lui donner un membre_id ici :
$membre = new Membre(1);


De plus, dans ta requête SQL, tu n'utilises pas cette variable. Essaye ceci :
public function __construct($membre_id)
{
// Je stock les variables dans l'objet $this;
// Récupérer en base de données les infos du membre
$requete = 'SELECT pseudo, email, signature, actif FROM membres WHERE membre_id = \''.$membre_id.'\'';