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 : 46
    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.

  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 : 46
    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.

  4. #4
    Membre actif Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 46
    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

  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