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

PHP & Base de données Discussion :

Syntaxe pour une classe qui hérite de PDO [PDO]


Sujet :

PHP & Base de données

  1. #1
    fey
    fey est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Points : 93
    Points
    93
    Par défaut Syntaxe pour une classe qui hérite de PDO
    bonjour,

    je rencontre un souci avec une fonction, voila d'abord le code...


    ma page classique :
    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
     
    //inclusion de mon fichier de classe.....
     
    $pdo = PDO2::getInstance();
    $composants = new composants();
     
    $compo = $_SESSION['id_composant_EC']; // a pour valeur: a
     
    //test1
    $ls = $composants->selInfosCompoId($compo);
    //test2
    $resultats = $pdo->query('SELECT * FROM '.TB_ART);
    $resultats->setFetchMode(PDO::FETCH_OBJ);
    //test3
    $resultats_prep=$pdo->prepare('SELECT * FROM '.TB_ART);
    $resultats_prep->execute();
    et mon fichier de classe :
    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
     
        class PDO2 extends PDO {
     
        	private static $instance = null;
            private $PDOInstance = null;
     
     
        	/* Constructeur : héritage public obligatoire par héritage de PDO */
        	public function __construct( ) {
     
        	}
        	// End of PDO2::__construct() */
     
        	/* Singleton */
        	public static function getInstance() {
                if(is_null(self::$instance)){
                    self::$instance = new PDO(SQL_DSN, SQL_LOGIN, SQL_PASSWORD);
                }
                return self::$instance;
        	}
            public function query($query){
                return $this->PDOInstance->query($query);
            }
     
        	//select general avec where
            public	function sqlSelect($var,$nomtable,$nomwhere){
        		$sql = "SELECT $var FROM $nomtable WHERE $nomwhere";
        		$result=$this->query($sql);
        		if(DBUG_SITE == 'o'){
        			echo $sql."<br />";
        		}
        		return $result;
        	}
     
        	// End of PDO2::getInstance() */
        }
        //////////////////////////////////
     
        class composants extends PDO2{
     
        	//recupere toutes les infos en fonction de l'id
        	function selInfosCompoId($id){
        		$req = PDO2::sqlSelect("*",TB_COMPO,"id='$id'");
        		return $req;
        	}
     
        }
    voila le souci que je rencontre :

    le test 2 & 3 fonctionnent bien alors que pour le 1er j'ai ce message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call to a member function query() on a non-object
    apparement de ma classe composant j'arrive pas appeler la fonction query de la classe pdo2.

    parce qu'avec le test2 je l'utilise.

    je dois surement faire des trucs de travers ??
    quelqu'un peut me dire comme je fais pour resoudre ce probleme ??

    merci beaucoup
    .fey

  2. #2
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    tu fait un appel à "sqlSelect" comme une méthode statique et dans cette méthode tu utilises un "$this" qui n'existe pas donc il y a 2 erreurs dans la façon de faire

  3. #3
    fey
    fey est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    slt,

    donc faudrait que je fasse comment ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Comme tu le fais dans ta procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            function selInfosCompoId($id){
        		$pdo = PDO2::getInstance();
                    $req = $pdo->sqlSelect("*",TB_COMPO,"id='$id'");
        		return $req;
        	}
    Par exemple.

  5. #5
    fey
    fey est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    ok j'ai saisi :p

    sauf qu'en fait ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdo = PDO2::getInstance();
    il faut que je l'utilise dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public	function sqlSelect($var,$nomtable,$nomwhere){
    merci beaucoup

  6. #6
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    dans ce cas la méthode "sqlSelect" doit être statique et tu pourras l'appeler en faisant "PDO2::sqlSelect(..."

  7. #7
    fey
    fey est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 231
    Points : 93
    Points
    93
    Par défaut
    ok merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/05/2009, 09h41
  2. Réponses: 2
    Dernier message: 22/04/2008, 11h13
  3. Réponses: 9
    Dernier message: 13/07/2007, 11h03
  4. Réponses: 7
    Dernier message: 25/03/2005, 14h05
  5. Réponses: 14
    Dernier message: 14/03/2005, 09h16

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