Class pour représenter un membre

Rechercher

Class pour représenter un membre

Par saturn1  -  12 reponses  -  Le 29/11/2008 12:12  -  Editer  - 

Bonjour (merci de lire la charte !)

<?php
class Membre {
  public function connexion() {
    if(isset($_POST['pseudo'],$_POST['pass']) and !isset($_SESSION)) {
      $q_connexion_ok = mysql_query("SELECT COUNT(*) AS bon FROM membre WHERE membre_pseudo='".mysql_real_escape_string($_POST['pseudo'])."' AND membre_pass='".md5($_POST['pass'])."'");
      if(mysql_result($q_connexion_ok,0) == 1) {
        $_SESSION['membre_pseudo'] = mysql_real_escape_string($_POST['pseudo']);
        echo 'Vous êtes connecté.';
          private _dateCrea=mysql_query("SELECT ...");
          private _xp=mysql_query("SELECT ...");
          private _signature=mysql_query("SELECT ...");
          private _nom=mysql_query("SELECT ...");
          private _prenom=mysql_query("SELECT ...");
          private _age=mysql_query("SELECT ...");
          private _ville=mysql_query("SELECT ...");
          private _departement=mysql_query("SELECT ...");
          private _presentation=mysql_query("SELECT ...");
          private _rang=mysql_query("SELECT ...");
          private _validation=mysql_query("SELECT ...");
          private _banni=mysql_query("SELECT ...");
          private _mail=mysql_query("SELECT ...");
          private _avatar=mysql_query("SELECT ...");
          private _f_sujet_page=mysql_query("SELECT ...");
          private _f_msg_page=mysql_query("SELECT ...");
          private _mp_msg_page=mysql_query("SELECT ...");
          private _mp_mail=mysql_query("SELECT ..."); //Prévenir ou non par un mail quand le membre reçoit un mp.
          private _afficher_signature=mysql_query("SELECT ...");
          private _afficher_msg_cache=mysql_query("SELECT ...");
      }
      else {
        echo 'Vous n\'êtes pas connecté.';
      }
    }
  }
  public function setXp($xp) {
    $this->_xp = $xp;
  }
  /**
  *Suite de set pour modifier tous les propriétés de la classe membre
  **/
  public function getXp() {
    return $this->_xp;
  }
  /**
  *Suite des get pour afficher les propriétés de la classe membre
  **/
  public function save() {
    $q_update = mysql_query("UPDATE membre SET membre_xp='".$this->_xp."' ... WHERE membre_pseudo='".$_SESSION['membre_pseudo']."'");
    if($q_update)
    echo 'Votre profil a été modifié.';
    else
    echo 'Une erreur interne s\'est produite.';
  }
}
?>

Salut suite à tes conseils j'ai créé une classe membre.

Peux-tu me dire ce que tu en penses?

Merci!

 

Réponses apportées à cette discussion

Par Emacs  -  Le 29/11/2008 21:12  -  Haut de page  - 

Là encore ta classe n'est pas correcte. Tu mélanges tout. Avant de te dire comme faire pour aller plus loin, je te dirais de commencer par le commencement en te postant la question suivante :

Pour toi c'est quoi un membre ?

On va procéder par étape pour construire quelque chose de juste et simple. Réponds d'abord à ma question pour que l'on puisse avancer dans la bonne direction.

++

 
Par saturn1  -  Le 29/11/2008 21:25  -  Haut de page  - 

Un membre c'est tout d'abord unique.

Puis un membre est caractérisé par l'ensemble des propriétés de la table membre dans ma base de donneé.

 

Merci à toi !!!!!!

 
Par Emacs  -  Le 30/11/2008 13:11  -  Haut de page  - 

Je ne suis d'accord qu'à moitié avec toi sur cette réponse car ta réponse est vague et donne une vision base de données de ton "membre". En POO, on doit penser objet. Oublie la base de données pour le moment et essaie de modéliser un squelette de classe simple en te posant les questions suivantes :

  • Quelles sont les propriétés propres à mon objet "Membre" ?
  • Quelles sont les actions que l'on peut lui appliquer ?

Une fois que l'on aura poser ce squelette simple contenant définition des attributs et méthodes de base, on passera à l'écriture de la logique applicative. C'est à dire écrire le corps des méthodes et comment se coupler au système de stockage des informations (la base de données dans notre cas).

++

 
Par saturn1  -  Le 30/11/2008 13:35  -  Haut de page  - 

Bah je vais commencer par les actions car les propriétés d'un membre sa me semble être ses caractéristiques donc son id,pseudo,mail,age,nom...

Mais ses action c'est plus intéressants c'est :

-connexion , inscription (on peut les mettre en __construct en testant un argument pour savoir si c'est la connexion ou l'inscription ou aucune des deux)

-modification de données

-afficher les données

-suppression de compte non le membre il se désinscritjamais ahahah , car mon site est trop bien.. :D

 

Merci grandement de t on aide ;)

 
Par Emacs  -  Le 30/11/2008 14:22  -  Haut de page  - 

Bon on progresse doucement. Je suis d'accord pour les attributs mais pas pour les méthodes. Du moins qu'à moitié. En effet, une classe définit ce que l'on appelle le modèle donc ce qui contient les données. Les parties de connexion, inscription, modification sont davantage liées au contrôleur dans le modèle MVC même s'il y'a quelques parties qui sont rattachées au modèle. Quant à l'affichage des données, il n'a rien à faire dans ta classe puisque ça concerne la couche "Vue" du modèle MVC.

Maintenant propose moi un squelette simple de classe "Membre" avec juste la définition des propriétés et méthodes que tu verrais dedans.

 
Par saturn1  -  Le 30/11/2008 14:38  -  Haut de page  - 

Ok personnelement je m'y connais pas trop en MVC .

Mais si tu me dis que la classe définit le modèle donc tout ce qui contient les données sa donne donc dans la classe je ne met pas la connexion/inscription/modification mais juste les données sa donne :

<?php
class Membre {
  public function __construct {
    if(isset($_SESSION['membre_pseudo'])) {
       $info_membre = mysql_fetch_assoc(mysql_query("SELECT * FROM membre WHERE membre_pseudo='".$_SESSION['membre_pseudo']."'"));
         private _dateCrea=$info_membre['date_crea'];
        private _xp=$info_membre['xp'];
        private _signature=$info_membre['signature'];
        private _nom=$info_membre['nom'];
        private _prenom=$info_membre['prenom'];
        private _age=$info_membre['age'];
        private _ville=$info_membre['ville'];
        private _departement=$info_membre['departement'];
        private _presentation=$info_membre['presentation'];
        private _rang=$info_membre['rang'];
        private _validation=$info_membre['validation'];
        private _banni=$info_membre['banni'];
        private _mail=$info_membre['mail'];
        private _avatar=$info_membre['avatar'];
        private _f_sujet_page=$info_membre['f_sujet_page'];
        private _f_msg_page=$info_membre['f_msg_page'];
        private _mp_msg_page=$info_membre['mp_msg_page'];
        private _mp_mail=$info_membre['mp_mail'];
        private _afficher_signature=$info_membre['afficher_signature'];
        private _afficher_msg_cache=$info_membre['afficher_msg_cache'];
    }
  }
}
?>

Voilà merci ENORMEMENT DE TON AIDE !!!!!

 

 

 
Par Emacs  -  Le 30/11/2008 15:29  -  Haut de page  - 

Ta classe est archi fausse d'un point de vue syntaxique. PHP doit te générer des erreurs. Et pourquoi embarques-tu la session dans ton objet ?

Voilà déjà à quoi ta classe devrait à peu près ressembler :

<?php
class Membre {
  private $_xp = null;
  private $_signature = null;
  private $_nom = null;
  private $_prenom = null;
  private $_age = null;
  private $_ville = null;
  private $_departement = null;
  private $_presentation = null;
  private $_rang = null;
  private $_validation = null;
  private $_banni = null;
  private $_mail = null;
  private $_avatar = null;
  private $_f_sujet_page = null;
  private $_f_msg_page = null;
  private $_mp_msg_page = null;
  private $_mp_mail = null;
  private $_afficher_signature = null;
  private $_afficher_msg_cache = null;
  public function __construct() {
  }
}

Par contre je ne vois pas apparaître le champ pour le login et le password. Il te reste ensuite à faire les getters et setters pour chaque attribut avant de passer à la suite.

 
Par saturn1  -  Le 30/11/2008 15:56  -  Haut de page  - 

Oui mais je ne comprend plus car tu m'as dit que getter (en anglais cela signifie obtenir soit afficher) tu m'as dit

"Quant à l'affichage des données, il n'a rien à faire dans ta classe puisque ça concerne la couche "Vue" du modèle MVC. "

Sinon sa donne

<?php
class Membre {
  private _pseudo = null;
  private _pass = null;
  private $_xp = null;
  private $_signature = null;
  private $_nom = null;
  private $_prenom = null;
  private $_age = null;
  private $_ville = null;
  private $_departement = null;
  private $_presentation = null;
  private $_rang = null;
  private $_validation = null;
  private $_banni = null;
  private $_mail = null;
  private $_avatar = null;
  private $_f_sujet_page = null;
  private $_f_msg_page = null;
  private $_mp_msg_page = null;
  private $_mp_mail = null;
  private $_afficher_signature = null;
  private $_afficher_msg_cache = null;
  public function __construct() {
  }
  public function getPseudo() {
     return $this->_pseudo
  }
  //suite de get
  public function setPseudo($nPseudo) {//Même si on a pas le droit de changer de pseudo, c'est un exemple
    $this->_pseudo=$nPseudo
  }
  //suite de set
}
?>

Merci ^^ même si je sens que j'ai beaucoup de mal avec le MVC ^^

 
Par Emacs  -  Le 30/11/2008 17:42  -  Haut de page  - 

Pourquoi fais-tu un setter si tu sais que l'on n'a pas le droit de changer de pseudo ? D'autre part la déclaration du pseudo et du password est mauvaise. PHP génèrera une erreur.

 
Par saturn1  -  Le 30/11/2008 17:55  -  Haut de page  - 

Okj'ai corrigé cela donne :

<?php
class Membre {
  private $_pseudo = null;
  private $_pass = null;
  private $_xp = null;
  private $_signature = null;
  private $_nom = null;
  private $_prenom = null;
  private $_age = null;
  private $_ville = null;
  private $_departement = null;
  private $_presentation = null;
  private $_rang = null;
  private $_validation = null;
  private $_banni = null;
  private $_mail = null;
  private $_avatar = null;
  private $_f_sujet_page = null;
  private $_f_msg_page = null;
  private $_mp_msg_page = null;
  private $_mp_mail = null;
  private $_afficher_signature = null;
  private $_afficher_msg_cache = null;
  public function __construct() {
  }
  public function getPseudo() {
    return $this->_pseudo;
  }
  //suite de get
  public function setXp($nXp) {//Même si on a pas le droit de changer de pseudo, c'est un exemple
  $this->_xp=$nXp;
  }
  //Suite des set...
}
?>

Maintenat je dois faire la page ControleurMembre.php?

Peux-tu m'en donner la structure?

Merci

 

 
Par Emacs  -  Le 30/11/2008 20:49  -  Haut de page  - 

Le principe est expliqué ici :

http://www.apprendre-php.com/forums/topic-116-poo-besoin-de-quelque-eclairssisement.html#reponse449

 

 
Par saturn1  -  Le 30/11/2008 21:00  -  Haut de page  - 

Ok j'ai lu mais je n'ai pas tout compris car là il n'y a pas de controleur.

J'ai lu un tutoriel sur developpez.com

Et en faite je vais faire comme sa , dit moi si c'est bien stp :

<?php
class Membre {
  private $_pseudo = null;
  private $_pass = null;
  private $_xp = null;
  private $_signature = null;
  private $_nom = null;
  private $_prenom = null;
  private $_age = null;
  private $_ville = null;
  private $_departement = null;
  private $_presentation = null;
  private $_rang = null;
  private $_validation = null;
  private $_banni = null;
  private $_mail = null;
  private $_avatar = null;
  private $_f_sujet_page = null;
  private $_f_msg_page = null;
  private $_mp_msg_page = null;
  private $_mp_mail = null;
  private $_afficher_signature = null;
  private $_afficher_msg_cache = null;
  public function __construct() {
  }
  //GET
  public function getPseudo() {
    return $this->_pseudo;
  }
  public function getXp() {
    return $this->_xp;
  }
  public function getSignature() {
    return $this->_signature;
  }
  public function getNom() {
    return $this->_nom;
  }
  public function getPrenom() {
    return $this->_prenom;
  }
  public function getAge() {
    return $this->_age;
  }
  public function getVille() {
    return $this->_ville;
  }
  public function getDepartement() {
    return $this->_departement;
  }
  public function getPresentation() {
    return $this->_presentation;
  }
  public function getRang() {
    return $this->_rang;
  }
  public function getValidation() {
    return $this->_validation;
  }
  public function getBanni() {
    return $this->_banni;
  }
  public function getMail() {
    return $this->_mail;
  }
  public function getAvatar() {
    return $this->_avatar;
  }
  public function getFSujetPage() {
    return $this->_f_sujet_page;
  }
  public function getFMsgPage() {
    return $this->_f_msg_page;
  }
  public function getMpmsgPage() {
    return $this->_mp_msg_page;
  }
  public function getMpMail() {
    return $this->_mp_mail;
  }
  public function getAfficherSignature() {
    return $this->_afficher_signature;
  }
  public function getAfficherCache() {
    return $this->_afficher_cache;
  }
  //SET
  public function setPseudo($Pseudo) {
    $this->_pseudo=$Pseudo;
  }
  public function setXp($Xp) {
    $this->_xp=$Xp;
  }
  public function setSignature($Signature) {
    $this->_signature=$Signature;
  }
  public function setNom($Nom) {
    $this->_nom=$Nom;
  }
  public function setPrenom($Prenom) {
    $this->_prenom=$Prenom;
  }
  public function setAge($Age) {
    $this->_age=$Age;
  }
  public function setVille($Ville) {
    $this->_ville=$Ville;
  }
  public function setDepartement($Departement) {
    $this->_departement=$Departement;
  }
  public function setPresentation($Presentation) {
    $this->_presentation=$Presentation;
  }
  public function setRang($Rang) {
    $this->_rang=$Rang;
  }
  public function setValidation($Validation) {
    $this->_validation=$Validation;
  }
  public function setBanni($Banni) {
    $this->_banni=$Banni;
  }
  public function setMail($Mail) {
    $this->_mail=$Mail;
  }
  public function setAvatar($Avatar) {
    $this->_avatar=$Avatar;
  }
  public function setFSujetPage($FSujetPage) {
    $this->_f_sujet_page=$FSujetPage;
  }
  public function setFMsgPage($FMsgPage) {
    $this->_f_msg_page=$FMsgPage;
  }
  public function setMpMsgPage($MpMsgPage) {
    $this->_mp_msg_page=$MpMsgPage;
  }
  public function setMpMail($MpMail) {
    $this->_mp_mail=$MpMail;
  }
  public function setAfficherSignature($AfficherSignature) {
    $this->_afficher_signature=$AfficherSignature;
  }
  public function setAfficherMsgCache($AfficherMsgCache) {
    $this->_afficher_msg_cache=$AfficherMsgCache;
  }
}
?>

Voila ma classe Membre.php après je vais créer un controleur membre.php dans lequel je mettrai les fonction update , connexion,inscription .

Tu en penses quoi?

Dsl si je comprend pas vite.

 

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |