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] BD et Classe en php5


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Novembre 2004
    Messages : 151
    Points : 106
    Points
    106
    Par défaut [POO] BD et Classe en php5
    Bonjour tout le monde,
    Je suis en train de créer un site web dans lequel il y aura des catégories, des articles faisant partis de catégories etc ...
    Et je me posais une tite question
    Je voulais passer mon objet PDO $bdh au constructeur de ma classe catégorie de manière à pouvoir le réutiliser ensuite dans toute la classe pour faire des requetes.
    Mais cela ne marche il me dit "Call to a member function quote() on a non-object in..."
    Alors que quand je passe mon objet PDO à une méthode de ma classe ca marche très bien ...
    Auriez vous une idée ?
    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
     
    class Categorie {
    	private $idCat;
    	private $nomCat;
    	private $description;
     
    	function nvelleCat($nomCat,$description){
    		$nomCat = $dbh->quote($nomCat);
    		$description = $dbh->quote($description);
    		$sql = "INSERT into categories (nomCat, description) 
    				VALUES ($nomCat,$description)";
    		$retour = $dbh->exec($sql);
    		if($retour == false) die("Erreur dans la requete");
    		elseif($retour == 0) echo ("Aucun modification effectuée");
    		else echo $retour.'Lignes ont été affectées';
    	}
     
    }
    Si je le passe comme ca ca marche !
    Si je le passe par le constructeur comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function __construct($dbh){
    		$this->dbh = $dbh;
    	}
    et que j'utilise $this->$dbh->quote() etc ... dans ma méthode au dessus il me dit ce que je vous ai écrit au dessus !

    Merci d'avance pour votre réponse si réponse il y a :p

  2. #2
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Novembre 2004
    Messages : 151
    Points : 106
    Points
    106
    Par défaut
    bon d'accord ... j'avais mis un "$" en trop en écrivant $this->$dbh-> ...
    *pardon*
    lol -> post inutile

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Heu ce n'est pas très clair pour moi mais déjà $this->dbh->quote() me semble plus juste.

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Novembre 2004
    Messages : 151
    Points : 106
    Points
    106
    Par défaut
    qu'est ce qui n'est po très clair ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Ce qui n'était pas très clair à mes yeux c'était le $dbh qui ne sortait de nul part dans ta fonction nvelleCat.

    Tu faisais appel dans la fonction à une variable qui n'etait pas passée en parametre, ni meme à priori défini en session ou en global.

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Novembre 2004
    Messages : 151
    Points : 106
    Points
    106
    Par défaut
    a oui pardon
    en fait j'appelle ma classe Categories dans une page comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    	include_once('conf/conf.inc.php');
    	include_once('fonctions.php');
     
    	$cat = new Categorie($dbh);
     
     
    ?>
    sachat que dans conf.inc.php il y a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    define ('USER', 'root');
    define('PASS','');
    define ('DSN','mysql:host=localhost;dbname=communaute');
    try {
    	$dbh = new PDO(DSN,USER,PASS);
    }catch (PDOException $e){
    	print "Erreur ! ".$e->getMessage()."<br/>";
    	die();
    }
    ?>

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Novembre 2004
    Messages : 151
    Points : 106
    Points
    106
    Par défaut
    j'essaye de comprendre l'interface iterateur de php5 ce qui me permettrait d'afficher mes catégories avec une ptite boucle foreach bien propre...
    tu pourrais m'aider ?
    Je vois pas trop comment m'en servir dans ce cas là ...
    J'ai lu tous les posts de mjl94 concernant les collections etc ... j'en déduis qu'il faut que je fasse une classe collectionCatégorie qui implémente iteratorAgregate (d'après le manuel php;-) )
    Mais je vois pas trop comment mettre ca en place ??

    d'après ce que je comprends il faudrait que je fasse ca :
    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
     
    class CollectionCategories implements IteratorAggregate
    {
      private $items = array();
      private $count = 0;
     
      // Définition requise de l'interface IteratorAggregate
      public function getIterator() {
       return new MyIterator($this->items);
      }
     
      public function add($value) {
       $this->items[$this->count++] = $value;
      }
    }
    mais ensuite ?
    dois je à chaque fois que je fais une nouvelle catégorie faire un CollectionCategorie->add ? Pour pouvoir ensuite faire un foreach dessus ??
    Je trouve ca un peu bizarre, je crois que je fais pas ce qu'il faut ?

    vu que c'est une nouvelle question je devrais déplacer le sujet non ?

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Désolé je n'ai jamais utilisé personnellement cette classe et je ne saurais que te répondre ce que je trouverais éventuellement dans la doc
    Je connais d'avantage la théorie UML sur les collections que la pratique en php ^^"

  9. #9
    Membre régulier
    Inscrit en
    Novembre 2004
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Novembre 2004
    Messages : 151
    Points : 106
    Points
    106
    Par défaut
    hop hop
    Résolu ^^ et création d'un nouveau sujet :-p

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

Discussions similaires

  1. [POO] Réalisation de classe sous PHP5 pour plus de lisibilité
    Par ChriGoLioNaDor dans le forum Langage
    Réponses: 4
    Dernier message: 19/02/2007, 20h42
  2. [POO] méthode de classe PHP5
    Par gregal dans le forum Langage
    Réponses: 7
    Dernier message: 26/04/2006, 12h38
  3. [POO] Débutant en POO, class mysql php5
    Par ouafouaf dans le forum Langage
    Réponses: 9
    Dernier message: 06/02/2006, 10h21
  4. [POO] Classe en PHP5
    Par neptune dans le forum Langage
    Réponses: 5
    Dernier message: 01/09/2005, 18h55
  5. Réponses: 3
    Dernier message: 19/05/2005, 11h46

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