IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Récuperer formulaire avec des classes php


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 83
    Points : 47
    Points
    47
    Par défaut Récuperer formulaire avec des classes php
    Bonjour,

    Voilà, je débute en POO notamment avec php. J'ai beau chercher des cours ou des sources à ce sujet mais je ne trouve pas grand chose.

    En fait, j'aimerai comprendre comment utiliser des classes pour récupérer les données d'un formulaire classique.

    En gros, j'aimerai stocker dans une bdd mysql, les informations d'un client (nom, prenom...) donc j'aurai une class client avec ses attribut (nom, prenom, email....) surement une class mysql mais je ne sais pas vraiment comment m'y prendre.

    Quelqu'un pourrait-il m'aider ? Au moins me guider sur les démarches à faire.

    Merci d'avance.

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Il faut que tu modélises les entités que tu as en base de données sous forme de classe d'objets (i.e : une classe client). C'est la base de la base : http://php.developpez.com/faq/?page=classes

    Ensuite, ce n'est pas parce que tu évolues dans un langage objet que tu dois utiliser ou créer des classes tout le temps. En PHP, pour récupérer un champ de formulaire il suffit d'utiliser la superglobal $_REQUEST (ou $_GET / $_POST).

    Exemple, inscription d'un client dans le site :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    if(isset($_POST['submit']) && !empty($_POST['nom'])){
        $u = new client();
        $u->setNom($_POST['nom']);
        $u->save();
    }
    ?>
    <form action="" method="post">
        <fieldset>
            <input type="text" name="nom" value="" placeholder="Votre nom" />
            <input type="submit" value="Valider" name="submit" />
        </fieldset>
    </form>

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Merci d'avoir répondu aussi rapidement déjà

    Peux-tu me dire ce que contient ta fonction save() ? je suppose qu'elle se trouve dans la class client.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Peux-tu me dire aussi quelles fonctions doit contenir ma class client ?
    Si c'est à cet endroit que jdois mettre ma fonction insertion dans la base.

  5. #5
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Cela dépend de ce qu'est une entité client pour toi.
    L'insertion de la base peut se faire dans la classe "client", ou dans une classe "db". Mais il faut exposer une méthode dans la classe client qui permet d'insérer ou mettre à jour la base de données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class client{
        public function save(){
            if($this->isnew) // do insert
            else // do update
        }
    }

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 83
    Points : 47
    Points
    47
    Par défaut
    Pour le moment, j'ai 3 fichiers disons, index.php avec mon formulaire, classClient.php et classMysql.php (dans lequel je fais ma connexion à la base et ou je fais mes requetes SQL) ça semble cohérent ?

  7. #7
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Si tu passe ton identifiant de connexion a tes appelles aux class qui requièrent une requête, tu peux très bien intégrer tes requêtes au sein des class.

    Autrement, il faut que chaque class?????.php héritent de classMysql.php.

    Personnellement je préfère la première option. Quelqu'un d'autre saura sûrement me corriger si je me trompe.
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  8. #8
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Si tu passe ton identifiant de connexion a tes appelles aux class qui requièrent une requête, tu peux très bien intégrer tes requêtes au sein des class.
    Autrement, il faut que chaque class?????.php héritent de classMysql.php.
    @riete : Non, il existe la notion de singleton.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class classMysql{
        private static $_inst;
     
        public static function instance(){
            if(self::$_inst === NULL)
                self::$_inst = new classMysql;
            return self::$_inst;
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class classClient{
        private $_db;
     
        public function __construct(){
            $this->_db = classMysql::instance(); // keep local reference
        }
    }
    Pour le moment, j'ai 3 fichiers disons, index.php avec mon formulaire, classClient.php et classMysql.php (dans lequel je fais ma connexion à la base et ou je fais mes requetes SQL) ça semble cohérent ?
    @Arkoze : Oui.

    À bientôt,

  9. #9
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Citation Envoyé par ThomasR Voir le message
    @riete : Non, il existe la notion de singleton.
    Bonjour ThomasR,
    Tes remarques ton toujours très judicieuses. J'avoue humblement ne pas être un gourou de la programmation objet, même si je l'utilise. J'aimerais donc avoir une petite précision.

    Est ce que tu veux dire que ma remarque "il faut que chaque class?????.php héritent de classMysql.php" est une pure ineptie? ou simplement qu'il est préférable d'utiliser la notion de singleton pour préserver quelque chose? et dans ce cas quoi?

    La méthode que j'utilise depuis pas mal d'années fonctionne bien, mais je serais prêt à changer ma façon de faire s'il y a un intérêt réel à le faire ou si ce que je fais présente un risque que je n'ai jamais évalué.

    Merci
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  10. #10
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Est ce que tu veux dire que ma remarque "il faut que chaque class?????.php héritent de classMysql.php" est une pure ineptie? ou simplement qu'il est préférable d'utiliser la notion de singleton pour préserver quelque chose? et dans ce cas quoi?
    Salut @riete, et merci,

    D'après moi toutes entités ne devraient pas hériter d'une classe "classMysql", conceptuellement cela ne colle pas. Le principe de l'héritage c'est que le classe qui hérite doit représenter une entité plus spécifique que la classe mère. Concrètement, on ne souhaite pas signifier que la classe fille est une instance de la classe SQL mais qu'elle a une instance de la classe SQL.

    Un autre souci avec cette méthode d'héritage de "classMysql" c'est que cela appelle le constructeur de cette classe énormément de fois alors que souvent ce constructeur contient par exemple un appel à mysql_connect, alors qu'un seul serait nécessaire dans toute l'application. Le gain de performance est énorme à utiliser un singleton dans ce cas.

    Avec un singleton ca allège aussi pas mal le code.

  11. #11
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Salut ThomasR

    Tu confirme ce que j'écrivais plus haut, LIMPIDE, pour moi qui ai tant de mal à penser Objet

    En tous cas dans mes développements, je ne fais pas usage de l'héritage de classe "classMysql" pour mes objets qui utilisent la BDD. Je passe l'identifiant de connexion à chaque usage de méthode faisant appel à la BDD.

    Tu donnes des cours de conceptualisation objet ? je suis client.
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  12. #12
    Membre régulier
    Homme Profil pro
    à la recherche d'un stage de fin de formation dans le décisionnel
    Inscrit en
    Juillet 2002
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : à la recherche d'un stage de fin de formation dans le décisionnel

    Informations forums :
    Inscription : Juillet 2002
    Messages : 154
    Points : 85
    Points
    85
    Par défaut
    merci pour cet échange très instructif

    riete, peux tu mettre stp ton exemple ici pour qu'on puisse s'inspirer de travail réaliser.

    Merci

Discussions similaires

  1. [Librairies] Pb avec des classes d'envoi de mails
    Par sami_c dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 29/04/2006, 18h56
  2. Réponses: 5
    Dernier message: 25/04/2006, 17h04
  3. Formulaire avec des Onglets
    Par Orin dans le forum Langage
    Réponses: 2
    Dernier message: 06/04/2006, 11h28
  4. Ouverture d'un formulaire avec des requêtes différentes
    Par Jérémy VAUTIER dans le forum Access
    Réponses: 3
    Dernier message: 02/03/2006, 08h31
  5. Réponses: 9
    Dernier message: 25/09/2005, 17h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo