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 :

POO & BDD


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 60
    Par défaut POO & BDD
    Chalut chalut !

    J'ai un soucis avec PHP 5 et la POO: Je n'arrive pas à afficher le contenu de ma table dans ma BDD.

    Voici mon code:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    class Article
    	{
    		private 
    		$_id,
    		$_titre,
    		$_contenu,
    		$_categorie,
    		$_souscategorie;
     
     
     
     
     
    		public function __construct($id, $titre, $contenu, $categorie, $souscategorie)
    		{
     
    			function setId($id)
    			{
    				$this->_id = $id;
    			}
     
    			function setTitre($titre)
    			{
    				$this->_titre = $titre;
    			}
     
    			function setContenu($contenu)
    			{
    				$this->_contenu = $contenu;
    			}
     
    			function setCategorie($categorie)
    			{
    				$this->_categorie = $categorie;
    			}
     
    			function setSousCategorie($souscategorie)
    			{
    				$this->_souscategorie = $souscategorie;
    			}
    		}
     
     
     
     
     
    		public function getId()
    		{
    			return $this->_id;
    		}
     
    		public function getTitre()
    		{
    			return $this->_titre;
    		}
     
    		public function getContenu()
    		{
    			return $this->_contenu;
    		}
     
    		public function getCategorie()
    		{
    			return $this->_categorie;
    		}
     
    		public function getSouscategorie()
    		{
    			return $this->_souscategorie;
    		}
     
     
    	}
     
     
     
     
     
     
     
    $bdd = new PDO('mysql:host=localhost;dbname=pixelsnowis', 'root', '');
        $req = $bdd->query("SELECT id, titre, contenu, categorie, sous_categorie FROM articles");
     
     
        while ($donnees = $req->fetch())
        {
            $art = new Article($donnees['id'], $donnees['titre'], $donnees['contenu'], $donnees['categorie'], $donnees['sous_categorie']);
     
            echo $art->getTitre();
            echo $art->getContenu();
        }
     
        echo $donnees;
    Ma boucle n'affiche rien, et mon echo non plus.
    Est-ce que quelqu'un pourrait me donner un petit coup de pouce ?

  2. #2
    Membre éclairé
    Homme Profil pro
    Sécurité
    Inscrit en
    Février 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2011
    Messages : 53
    Par défaut
    Bonjour,


    Pour ma part, voilà comment je ferais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $bdd = new PDO('mysql:host=localhost;dbname=pixelsnowis', 'root', '');
    $req = $bdd->query("SELECT id, titre, contenu, categorie, sous_categorie FROM articles");
     
    $req->setFetchMode(PDO::FETCH_OBJ);  // Transforme en objet
     
    while ($donnees = $req->fetch()) {
         $art = new Article($donnees->id, $donnees->titre, $donnees->contenu, $donnees->categorie, $donnees->sous_categorie);
     
         echo $art->getTitre();
         echo $art->getContenu();
    }
     
        echo $donnees; // n'affichera normalement rien

    Je transforme le résultat de la requête en objet pour garder de la cohérence puisque vous travailler avec des objets (new Article).

    Sinon, je ne sais pas si ça peut poser un problème ou non, mais le nom de vos attributs préfixés d'un underscore. Personnellement je trouve que ca n'apporte rien et je n'aurais pas forcément confiance.

    En admettant que ça ne pose aucun problème, le code ci-dessus devrait normalement marcher si la connexion à votre base de données se fait bien (pour ce qui est de des données brutes)

    Concernant le rangement de ses données, votre constructeur n'est pas bon. En effet, il vous faut sortir les setters du constructeurs et simplement mettre dans le constructeur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function __construct($param1, $param2, $param3, ...) {
         $this->attribut1 = $param1;
         $this->attribut2 = $param2;
         $this->attribut3 = $param3;
         ...
    }
    En gros, exactement le contenu de vos setters... donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function __construct($id, $titre, $contenu, $categorie, $souscategorie) {
         $this->_id = $id;
         $this->_titre = $titre;
         $this->_contenu = $contenu;
         $this->_categorie = $categorie;
         $this->_souscategorie = $souscategorie;
    }



    J'espère vous avoir (un peu) aidé!


    Cordialement,

    Graimbault

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 60
    Par défaut
    J'ai suivis tes conseilles, mais cela ne m'affiche toujours rien

    J'ai transformé ma requête en objet et supprimé les undescore, mais rien à faire, ma boucle n'affiche toujours rien.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    class Article
    	{
    		private 
    		$id,
    		$titre,
    		$contenu,
    		$categorie,
    		$souscategorie;
     
     
     
     
     
    		public function __construct($id, $titre, $contenu, $categorie, $souscategorie)
    		{
     
    			function setId($id)
    			{
    				$this->id = $id;
    			}
     
    			function setTitre($titre)
    			{
    				$this->titre = $titre;
    			}
     
    			function setContenu($contenu)
    			{
    				$this->contenu = $contenu;
    			}
     
    			function setCategorie($categorie)
    			{
    				$this->categorie = $categorie;
    			}
     
    			function setSousCategorie($souscategorie)
    			{
    				$this->souscategorie = $souscategorie;
    			}
    		}
     
     
     
     
     
    		public function getId()
    		{
    			return $this->id;
    		}
     
    		public function getTitre()
    		{
    			return $this->titre;
    		}
     
    		public function getContenu()
    		{
    			return $this->contenu;
    		}
     
    		public function getCategorie()
    		{
    			return $this->categorie;
    		}
     
    		public function getSouscategorie()
    		{
    			return $this->souscategorie;
    		}
     
     
    	}
     
     
    $bdd = new PDO('mysql:host=localhost;dbname=pixelsnowis', 'root', '');
    	$req = $bdd->query("SELECT id, titre, contenu, categorie, sous_categorie FROM articles");
     
    	$req->setFetchMode(PDO::FETCH_OBJ);
     
    	while ($donnees = $req->fetch())
    	{
    		$art = new Article($donnees->id, $donnees->titre, $donnees->contenu, $donnees->categorie, $donnees->sous_categorie);
     
    		echo $art->getTitre();
    		echo $art->getContenu();
    	}
     
    	echo $donnees;

  4. #4
    Membre éclairé
    Homme Profil pro
    Sécurité
    Inscrit en
    Février 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2011
    Messages : 53
    Par défaut
    Le constructeur n'est toujours pas bon !

    Regarde mon message précédent !

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 60
    Par défaut
    Citation Envoyé par Graimbault Voir le message
    Le constructeur n'est toujours pas bon !

    Regarde mon message précédent !
    En effet, je n'avais pas vu que vous aviez édité votre post.
    Après modification du constructeur, cela fonction !

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.4] POO et BDD, comment utiliser un manager dans un objet métier ?
    Par comode dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2014, 13h51
  2. [PHP 5.3] POO : Connexion BDD
    Par gwendoline-bricout dans le forum Langage
    Réponses: 7
    Dernier message: 05/02/2014, 22h31
  3. POO, BDD, ArrayList et fichier .txt
    Par nicaud dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 27/04/2011, 07h48
  4. Apport de la POO aux BDD
    Par Just-Soft dans le forum Langage
    Réponses: 13
    Dernier message: 27/08/2008, 08h35
  5. [POO] Objet et gestion de BDD
    Par hush dans le forum Langage
    Réponses: 9
    Dernier message: 16/06/2007, 12h12

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