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 :

utilisation d'objet dans une class


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Points : 239
    Points
    239
    Par défaut utilisation d'objet dans une class
    Bonjour, j'ai un souci de compréhension pour utiliser des objets type ceux d'une base de donnée à l'intérieur de la class que j'essaie de construire.

    bien pardonner moi si ça vous semble trivial mais je ne comprends pas trop comment ça fonctionne
    voilà ma class:
    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
     
    class pdoOracle{
    var $db ;
    var $stmt;
    function pdoOracle(){
    try { 
        $db = new PDO ("oci:dbname=//localhost/ORCL", "toto", "toto"); 
        printf("Connexion Ok\n"); 
     
    } 
    catch(PDOException $e) { 
       printf("ERREUR : %s\n", $e->getMessage()); 
    }
    }	
    function afficher(){
       $stmt = $db->prepare("SELECT I_CRI_NUMERO,C_CRI_LIBELLE from T_CRITERE");
       if ($stmt->execute()) {
          while ($row = $stmt->fetch(PDO::FETCH_NUM)) {
          printf("Extension %s, by %s<br>", $row[0], $row[1]);	    	
       }
       $stmt->closeCursor();
    }
    }
    }
    le fichier utilisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    require_once 'oracle.php';
     
    $toto = new pdoOracle();
    $toto->afficher();
    Je vois bien le "connexion ok" mais ensuite j'ai cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\pdo\oracle.php on line 19
    sauriez vous me dire comment corriger tt ça pour maintenir l'objet de base de donnée à l'interieur de mon objet?

    merci de vos retours.
    "La connaissance s'accroît quand on la partage."(Socrate)

    Si vous trouvez vous même la solution au POST que vous venez de poser, indiquez nous comment vous avez fait

  2. #2
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    Il te dit que :
    la fonction prepare n'existe pas pour la classe : PDO.

    Voila tout

    P.S : sinon c'est du POO avec php combien ?

  3. #3
    Membre actif Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Points : 239
    Points
    239
    Par défaut
    ce code fonctionne pourtant très bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $db = new PDO('OCI:', 'scott', 'tiger');
    $stmt = $db->prepare("SELECT extension, name from CREDITS");
    if ($stmt->execute()) {
        $stmt->bindColumn('EXTENSION', $extension);
        $stmt->bindColumn('NAME',      $name);
        while ($stmt->fetch(PDO::FETCH_BOUND)) {
            echo "Extension: $extension, Author: $name\n";
        }
    }
    cette méthode est celle fourni par PDO pour php qui devra être le code obligatoire à implémenter sous php6.

    Je pense que qq part je perds le lien vers mon objet $db dans ma class mais je ne comprends pas pourquoi.
    "La connaissance s'accroît quand on la partage."(Socrate)

    Si vous trouvez vous même la solution au POST que vous venez de poser, indiquez nous comment vous avez fait

  4. #4
    Membre actif Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Points : 239
    Points
    239
    Par défaut
    En faite on gagne a réfléchir quelque fois .. le fait d'avoir ta reponse ma fait relire mon cour de POO et voilà:


    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
     
    class pdoOracle{
    	var $db ;
    	var $stmt;
    	function pdoOracle(){
    		try { 
    		    $this->db = new PDO ("oci:dbname=//localhost/ORCL", "toto", "toto"); 
    		    printf("Connexion Ok\n"); 
     
    			//$db->commit();
     
    		} 
    		catch(PDOException $e) { 
    		    printf("ERREUR : %s\n", $e->getMessage()); 
    		}
    	}
     
    	function afficher(){
    			$this->stmt = $this->db->prepare("SELECT I_CRI_NUMERO,C_CRI_LIBELLE from T_CRITERE");
    			if ($this->stmt->execute()) {
    			    while ($row = $this->stmt->fetch(PDO::FETCH_NUM)) {
    					printf("Extension %s, by %s<br>", $row[0], $row[1]);	    	
    			    }
    			   $this->stmt->closeCursor();
    			}
    	}
    }
    ce code fonctionne quand on applique le cours
    "La connaissance s'accroît quand on la partage."(Socrate)

    Si vous trouvez vous même la solution au POST que vous venez de poser, indiquez nous comment vous avez fait

  5. #5
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    Tu dois pas afficher suffisamment d'erreur, sinon PHP t'aurais fait un NOTICE

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

Discussions similaires

  1. Utiliser un objet d'une classe java dans une autre
    Par cisco.nat dans le forum Débuter avec Java
    Réponses: 21
    Dernier message: 15/07/2013, 20h24
  2. list d'objet dans une classe
    Par wadcyr8_197 dans le forum C++
    Réponses: 10
    Dernier message: 04/07/2007, 15h34
  3. Réponses: 8
    Dernier message: 12/04/2007, 11h32
  4. [POO] import d'objet dans une classe
    Par wdionysos dans le forum Langage
    Réponses: 3
    Dernier message: 01/04/2006, 21h05
  5. [delphi 5,6,7] utiliser un objet dans une procédure
    Par wizdom dans le forum Langage
    Réponses: 3
    Dernier message: 27/01/2006, 15h38

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