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 :

Passer de PHP a POO [PHP 5.0]


Sujet :

Langage PHP

  1. #41
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    Et il va savoir les valeurs des attributs ?
    Sans lui dire que ce sont des variables dont les valeurs sont présentes dans fonction.php ?

    Mais c'est magique ce truc la

    Bon maintenant il reste le problème d'affichage des noms des techniciens...
    Non malheureusement tu n'as rien compris...
    Dans ton constructeur TU NE FAIS RIEN, et il n'attend AUCUN parametre et donc tu n'as pas besoin de lui envoyer.

    Il arrive a connecté a ta base car dans ton connect tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->conn = new PDO ("mysql:host={$this->hostname};dbname={$this->dbname}",$this->username,$this->pw );
    le $this fait qu'il va chercher les valeurs qui sont dans ta classe, donc dans MaBase....

    De plus, je pense que celles-ci devrait etre des constantes car elles ne deraient pas etre editable dans le code....

    T'es vraiment sure d'avoir lu des tutos et tout??? Si oui alors tu ne les as vraiment pas compris la...

  2. #42
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Citation Envoyé par marcuscircus Voir le message
    Je crois que tu n'as pas compris ce qu’était la POO et le principe d'encapsulation des données...

    Technicien est une classe qui doit contenir des proprietes et des methodes spécifiques au Technicien.
    Le tien n'a ni propriétés ni la methodes getNom() que tu essayes d’appeler...

    De plus tu construis un tableau mais pas un tableau d'objets, et donc si tu veux appelé la methode getNom() (qu'il faut d'abord definir dans la classe Technicien) Il faut que ce soit un objet de type Technicien....
    Oui donc dans la méthode getNom je dois le créer la mon tableau ?

    Non je ne comprend pas tout je m'accroche pourtant c'est promis mais ce plonger la dedans d'un coup c'est pas évident du tout

    Donc je créer mon tableau mais il faut que ce soit un objet

    -----------------

    Ahhh oui on a connect() je l'avais oublié celle-ci =)
    Oui j'te jure pendant deux semaines 7h par jour j'ai fais que ça mais franchement la POO ça va être une épreuve ^^

  3. #43
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    Donc je créer mon tableau mais il faut que ce soit un objet
    Un tableau est un tableau, un objet est un objet.....
    Par contre un tableau peut contenir un ou plusieurs objet...
    Et un objet peut avoir une propiete (ou plusieurs) qui est un tableau (mais c'est pas ton cas la)

  4. #44
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Alors c'est un tableau avec des objets dedans que je dois construire ?
    Et mettre les résultats de la requête dedans ?

  5. #45
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    Oui j'te jure pendant deux semaines 7h par jour j'ai fais que ça mais franchement la POO ça va être une épreuve ^^
    Mais la comprendre qu'une méthode attend des paramètres ou non c'est plus de la POO pourtant, c'est juste des développement classique...

  6. #46
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Non ça c'est compris je suis juste une étourdis rien de plus et j'avoue ne pas avoir la logique et le cerveau de certain dev"

  7. #47
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    Alors c'est un tableau avec des objets dedans que je dois construire ?
    Enfin, j'allais désespérer....

    Et mettre les résultats de la requête dedans ?
    Presque, avec le resultat de la requete tu crees des objets Technicien que tu mets dans ton tableau.

  8. #48
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    OKKKK compris chef' ! Maintenant je cherche comment dépatouiller tout ça et je poste dès que je teste quelque chose pour te montrer
    Allé a toute l'ami et merci beaucoup de ta patiente et surtout de tes conseils et de tes explications !!!

    ----------

    Hé marcus le PDO::prepare je le garde hin ? Par ce qu'ils disent bien dans les docs que ça retourne un objet ... ?

  9. #49
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Bon j'ai tenter un p'tit délire comme ça mais il aime pas trop :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	public function doSelect()
    	{
            $base = new MaBase();//création d'une instance de la classe MaBase()
    		$req = $this->base->query("SELECT * FROM technicien");
     
    		$tab = req->fetchall(PDO::FETCH_OBJ);
                    array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
     
    		return $tab ; 
    }
    Voici le message d'erreur :
    Parse error: syntax error, unexpected T_OBJECT_OPERATOR in C:\wamp\www\LCEsa\fonctions.php on line 55

  10. #50
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    Essaies d'exécuter ton script partie par partie pour pourvoir déjà comprendre comment fonctionne une classe et comment peut-on l'utiliser dans un autre script avant même de pouvoir associer une classe à une autre .
    Par exemple tu peux utiliser la classe MaBase pour accéder à la BD, envoyer des requêtes sql.
    Dans le fichier MaBase.php:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <?php
    //MaBase.php
    class MaBase
    {
     
     
    public $conn = NULL;
    public $hostname="localhost";
    public $dbname="lcesa";
    public $username="root";
    public $pw="lcesa";
     //constructeur vide ne contient aucun paramètre
    	public function __construct()
    	{
    		//$this->connect();
    	}
     
     
           /**
         * Renvoie une instance de connexion à la BD
         * 
         * @return type PDO :une instance de connexion à la  BD
         */
    	public function connect()
    	{
    		try {
    		  $this->conn = new PDO ("mysql:host={$this->hostname};dbname={$this->dbname}",$this->username,$this->pw );   
               echo "connexion à la BDD effectuée avec succès";
          return $this->conn;
    		}
    		catch( PDOException $Exception ) {
    				echo "Echec connexion:",$Exception->getMessage();
     
    		}
    	}
    }
    On peut dores et déjà utiliser cette classe pour essayer d'envoyer des requêtes sql à la BD. Par exemple dans un fichier affiche.php, on souhaite extraire les informations de tous les techniciens:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <?php
    //affiche.php
            /*
    	creation d'une instance($base) de la classe MaBase
            * $base->connect() réference maintenant un objet de type PDO, c'est comme si on faisait :$base = new PDO($dsn, $user, $password)
            * A partir de la méthode connect() de MaBase on peut maintenant invoquer toutes les méthodes de PDO( query(), prepare()...)
            */
             $base = new MaBase();//
    	$sql = "SELECT * FROM technicien";
     
    	$sth = $base->connect()->prepare($sql);
            $sth->execute();
          //débogage du tableau 
           var_dump($sth->fetchAll());/que retourne ce tableau?
     
     
    ?>

    arrives-tu maintenant à afficher quelque chose avec la fonction de débogage?

  11. #51
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Bonjour armel et merci de ton aide,
    pourquoi doit on les mettre dans des fichiers séparés ?

    J'ai créé le fichier maBase.php j'y ai introduis le code que tu m'as fournis mais quand je l'ouvre zéro résultat page blanche ..

  12. #52
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    pourquoi doit on les mettre dans des fichiers séparés ?
    C'est plus propre et plus facile a maintenir.

    J'ai créé le fichier maBase.php j'y ai introduis le code que tu m'as fournis mais quand je l'ouvre zéro résultat page blanche ..
    Normal MaBase.php est juste une classe utilitaire, c'est affiche.php qu'elle voulait que tu ouvres.

  13. #53
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Pourtant il y a des echo dans MaBase.php ...
    Voici ce que m'affiche affiche.php :
    Fatal error: Class 'MaBase' not found in C:\wamp\www\test\affiche.php on line 9
    Je reflechis vraiment ave mes pieds hin ...
    Manquait le include voici ce que m'affiche affiche.php :
    connexion à la BDD effectuée avec succès

    array (size=7)
    0 =>
    array (size=6)
    'ID' => string '1' (length=1)
    0 => string '1' (length=1)
    'Nom' => string 'Vanags Tony' (length=11)
    1 => string 'Vanags Tony' (length=11)
    'pass_md5' => string '*63D85DCA15EAFFC58C908FD2FAE50CCBC60C4EA2' (length=41)
    2 => string '*63D85DCA15EAFFC58C908FD2FAE50CCBC60C4EA2' (length=41)
    1 =>
    array (size=6)
    'ID' => string '2' (length=1)
    0 => string '2' (length=1)
    'Nom' => string 'Baron Jonathan' (length=14)
    1 => string 'Baron Jonathan' (length=14)
    'pass_md5' => string '' (length=0)
    2 => string '' (length=0)
    2 =>
    array (size=6)
    'ID' => string '3' (length=1)
    0 => string '3' (length=1)
    'Nom' => string 'Nobile Guillaume' (length=16)
    1 => string 'Nobile Guillaume' (length=16)
    'pass_md5' => string '' (length=0)
    2 => string '' (length=0)
    3 =>
    array (size=6)
    'ID' => string '4' (length=1)
    0 => string '4' (length=1)
    'Nom' => string 'Garello Jean-Michel' (length=19)
    1 => string 'Garello Jean-Michel' (length=19)
    'pass_md5' => string '' (length=0)
    2 => string '' (length=0)
    4 =>
    array (size=6)
    'ID' => string '5' (length=1)
    0 => string '5' (length=1)
    'Nom' => string 'Bonnefous Gerard' (length=16)
    1 => string 'Bonnefous Gerard' (length=16)
    'pass_md5' => string '' (length=0)
    2 => string '' (length=0)
    5 =>
    array (size=6)
    'ID' => string '6' (length=1)
    0 => string '6' (length=1)
    'Nom' => string 'Pierrot Claude' (length=14)
    1 => string 'Pierrot Claude' (length=14)
    'pass_md5' => string '' (length=0)
    2 => string '' (length=0)
    6 =>
    array (size=6)
    'ID' => string '7' (length=1)
    0 => string '7' (length=1)
    'Nom' => string 'Brochard Ludovic' (length=16)
    1 => string 'Brochard Ludovic' (length=16)
    'pass_md5' => string '' (length=0)
    2 => string '' (length=0)
    Donc ca fonctionne bien ca ..

  14. #54
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    Ca on s'en doutait nous que ca marche bien tu sais. mais regarde le type de tes données grace au var_dump tu peux bien les voir.

  15. #55
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Je partage ma joie un peu de compassion voyons :p

    Les string ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    include ("MaBase.php");
    //affiche.php
            /*
    	creation d'une instance($base) de la classe MaBase
            * $base->connect() réference maintenant un objet de type PDO, c'est comme si on faisait :$base = new PDO($dsn, $user, $password)
            * A partir de la méthode connect() de MaBase on peut maintenant invoquer toutes les méthodes de PDO( query(), prepare()...)
            */
             $base = new MaBase();//
    	$sql = "SELECT * FROM technicien";
     
    	$sth = $base->connect()->prepare($sql);
            $sth->execute();
    		$tab = $sth->fetchall(PDO::FETCH_OBJ);
          //débogage du tableau 
           var_dump($sth->fetchAll(PDO::FETCH_OBJ))//que retourne ce tableau?
     
     
    ?>
    J'ai tenté ça en essayant de retourner en objet le résultat c'est bien ca qu'on avait dit il me semble..
    Mais le var_dump retourne un tableau vide ... Quoi de plus normal il dois manquer un millier de chose mais, au moins, suis-je sur la bonne voie ?

  16. #56
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    Non, STOP ton PDO::FETCH_OBJ.

    Je te mets une idée de ce qui pourrais fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // instanciate objects
    foreach ($arrayResult as $res) {
     
          $technician= new Technicien();
          $technician->constructFromResource($res);
          $array[]   = $technician;
    }

  17. #57
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Mais je les sors d'où ces variables ?

  18. #58
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    Citation Envoyé par gwendoline-bricout Voir le message
    Je partage ma joie un peu de compassion voyons :p

    Les string ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    include ("MaBase.php");
    //affiche.php
            /*
    	creation d'une instance($base) de la classe MaBase
            * $base->connect() réference maintenant un objet de type PDO, c'est comme si on faisait :$base = new PDO($dsn, $user, $password)
            * A partir de la méthode connect() de MaBase on peut maintenant invoquer toutes les méthodes de PDO( query(), prepare()...)
            */
             $base = new MaBase();//
    	$sql = "SELECT * FROM technicien";
     
    	$sth = $base->connect()->prepare($sql);
            $sth->execute();
    		$tab = $sth->fetchall(PDO::FETCH_OBJ);
          //débogage du tableau 
           var_dump($sth->fetchAll(PDO::FETCH_OBJ))//que retourne ce tableau?
     
     
    ?>
    J'ai tenté ça en essayant de retourner en objet le résultat c'est bien ca qu'on avait dit il me semble..
    Mais le var_dump retourne un tableau vide ... Quoi de plus normal il dois manquer un millier de chose mais, au moins, suis-je sur la bonne voie ?
    il faut activer le rapport d'erreurs php pour pouvoir afficher les erreurs car au lieu de fetchAll() tu écris fetchall().

    Maintenant si tu veux afficher les résultat de ton select tu peux parcourir le tableau :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     <?php
         $base = new MaBase();//
    	$sql = "SELECT * FROM technicien";
     
    	$sth = $base->connect()->prepare($sql);
            $sth->execute();
    		$tab = $sth->fetchAll(PDO::FETCH_OBJ);
     
     
     
     
    foreach ($tab as $row){
     
     echo $row->Nom,'<br>';
    }

    Le but ici était de te montrer comment utiliser la classe MaBase pour communiquer avec la BD. La prochaine étape consiste à intégrer la classe MaBase dans la classe Technicien

  19. #59
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Mais je peux m'en servir ou pas de fetch_obj pour mettre le résultat de la requête en objet ?

    Quand tu écris :
    LE "Nom," tu peux écrire ce que tu souhaites il ne retournera pas d'erreur ? Pourquoi ?

  20. #60
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 429
    Points : 135
    Points
    135
    Par défaut
    Citation Envoyé par marcuscircus Voir le message
    Non, STOP ton PDO::FETCH_OBJ.

    Je te mets une idée de ce qui pourrais fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // instanciate objects
    foreach ($arrayResult as $res) {
     
          $technician= new Technicien();
          $technician->constructFromResource($res);
          $array[]   = $technician;
    }
    la variable $arrayResult represente mes resultats?
    $res represente le nom que je leur donne?
    et $ technician est un objet de la classe Technicien ?
    La fonction constructFromResource(), je dois la creer ?
    $array[] est le nom du tableau de l'objet technician ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. [POO] Livre sur PHP la POO et UML
    Par Sourrisseau dans le forum Livres
    Réponses: 2
    Dernier message: 11/04/2008, 19h46
  2. Réponses: 11
    Dernier message: 23/11/2007, 11h31
  3. [POO] bouquin php et poo
    Par leblaireau dans le forum Langage
    Réponses: 1
    Dernier message: 13/09/2006, 22h40
  4. Passer de PHP a Word ou PDF
    Par guillaumeIOB dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 06/09/2006, 12h26
  5. Réponses: 2
    Dernier message: 06/01/2005, 22h09

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