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 :

Se servir d'une classe connexion PDO [PDO]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Janvier 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 11
    Par défaut Se servir d'une classe connexion PDO
    Bonjour,

    Architecture : LAMP.

    Je ne parviens pas à séparer la classe de connexion à la base à la classe des requêtes.
    C'est à dire que je n'ai pas de résultat sur ce 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
     
     
    <?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    class connexion
    {
    	private $connexion=NULL;
    		function __construct(){
    			  try {
    			    $user = 'dba';
    			    $pass = 'dba';
    			    $dbname = 'debriefdba';
    			    $dbhost='localhost';
    			    $dbh = new PDO('mysql:host='.$dbhost.'; dbname='.$dbname, $user, $pass,array(PDO::ATTR_PERSISTENT=>true));
    					$oSqlConnection= new $dbh();
    		 		}
    					catch(Exception $e){
    	    		                print_r($e);
    	    		                die();
    					}
    		}
    }
     
    class rubrique extend connexion
    {
    	function sgbd
    			{
    				$oSqlConnection= new $dbh();
     
    				$s_sqlSelect = "SELECT nomrubrique from rubrique where id_rubrique_parent is null order by nomrubrique";
    				$o_sqlResult = $oSqlConnection->query($s_sqlSelect);
     
    				while ($o_result = $oSqlConnection->get_object($o_sqlResult) )
    				{
    							echo  $o_result;
    				}
     
    				}
    			}
    }
     
    $model=new connexion();
    $rubrique=new rubrique();
    ?>
    Alors que j'ai un résultat sur ce 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
     
    <?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    class connexion
    {
    	private $connexion=NULL;
    	function __construct(){
    	  try {
    	    $user = 'dba';
    	    $pass = 'dba';
    	    $dbname = 'debriefdba';
    	    $dbhost='localhost';
    	    $dbh = new PDO('mysql:host='.$dbhost.'; dbname='.$dbname, $user, $pass);
     
    echo '<select rubrique="nomrubrique">',"\n";
     
    			foreach($dbh->query('SELECT nomrubrique from rubrique where id_rubrique_parent is null order by nomrubrique;') as $row) {
    				$rub = $row['nomrubrique'];
    				echo "\t",'<option>', $row['nomrubrique'], '</option>',"\n";
    			}
     
    			echo '</select>',"\n";
     
    			echo '<select domaine="nomrubrique">',"\n";
    			foreach($dbh->query('SELECT nomrubrique from rubrique where id_rubrique_parent = 1 order by nomrubrique;') as $domaine) {
    				echo "\t",'<option>', $domaine['nomrubrique'], '</option>',"\n";
    			}
    			echo '</select>',"\n";
     
    		}
    	  catch(Exception $e){
    	    print_r($e);
    	    die();
    	  }
    }
     
    }
    $model=new connexion();
    ?>
    Je débute... et je cherche depuis un moment déjà!

    Merci d'avance !

  2. #2
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Il y a 3 erreurs de syntaxe dans classe rubrique :
    extends et non pas extend
    sgbd() et non pas sgbd
    un } en trop

    Ensuite il y a des erreurs qu'il serait trop long de préciser. Compare ton code et le mien.

    PS : j'ai mis mes identifiants dans les paramètres de PDO.

    A ce propos, en ce qui me concerne, je mets ces données à part pour n'avoir qu'un endroit à modifier si je dois changer ces paramètres (voir le second code)


    Code php : 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
     
    <?php
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    class connexion
    {
     private   $connexion=NULL;
     protected $dbh;
     
      function __construct(){
         try {
           $user   = 'root';
           $pass   = '';
           $dbname = 'tests';
           $dbhost = '127.0.0.1';
           $this->dbh = new PDO('mysql:host='.$dbhost.'; dbname='.$dbname, $user, $pass,array(PDO::ATTR_PERSISTENT=>true));
         }
         catch(Exception $e){
                           print_r($e);
                           die();
         }
      }
    }
     
    class rubrique extends connexion
    {
     function sgbd()
       { 
        //$s_sqlSelect = "SELECT nomrubrique from rubrique where id_rubrique_parent is null order by nomrubrique";
        $s_sqlSelect = "SELECT nomrubrique from rubrique order by nomrubrique";  
        $dbh         = $this->dbh;
        $o_sqlResult = $dbh->query($s_sqlSelect);
        while ($o_result = $o_sqlResult->fetch()) 
        {
           echo  $o_result['nomrubrique']."<br/>";
        }
     
       }
    }
     
    $rubrique=new rubrique();
    $rubrique->sgbd();


    Code php : 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
     
     
    <?php
    include('identifiants_bdd.php');
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    class connexion
    {
     
     const HOST = DB_HOST;
        const DBNA = DB_NAME;
        const USER = DB_USER;
        const PASW = DB_PWD; 
     
     protected $dbh;
     
      function __construct(){
         try {
        $this->dbh = new PDO('mysql:host='.self::HOST.'; dbname='.self::DBNA,self::USER,self::PASW, array(PDO::ATTR_PERSISTENT=>true));
         }
         catch(Exception $e){
                           print_r($e);
                           die();
         }
      }
    }
     
    class rubrique extends connexion
    {
     function sgbd()
       { 
        //$s_sqlSelect = "SELECT nomrubrique from rubrique where id_rubrique_parent is null order by nomrubrique";
        $s_sqlSelect = "SELECT nomrubrique from rubrique order by nomrubrique";  
        $dbh         = $this->dbh;
        $o_sqlResult = $dbh->query($s_sqlSelect);
        while ($o_result = $o_sqlResult->fetch()) 
        {
           echo  $o_result['nomrubrique']."<br/>";
        }
     
       }
    }
     
    $rubrique=new rubrique();
    $rubrique->sgbd();

    fichier identifiants_bdd.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    define('DB_HOST', '127.0.0.1');
    define('DB_NAME', 'tests');
    define('DB_USER', 'root');
    define('DB_PWD' , '');
    ?>

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 11
    Par défaut
    Merci pour cette réponse rapide et précise.
    Néammoins, J'ai un résultat que je n'arrive pas à interpréter;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    HELLO ! PDOException Object ( [message:protected] => SQLSTATE[HY000] [2002] Permission denied [string:Exception:private] => [code:protected] => 2002 [file:protected] => /var/www/html/sites/code/connectBdd.php [line:protected] => 17 [trace:Exception:private] => Array ( [0] => Array ( [file] => /var/www/html/sites/code/connectBdd.php [line] => 17 [function] => __construct [class] => PDO [type] => -> [args] => Array ( [0] => mysql:host=127.0.0.1; dbname=debriefdba [1] => dba [2] => dba [3] => Array ( [12] => 1 ) ) ) [1] => Array ( [file] => /var/www/html/sites/code/connectBdd.php [line] => 42 [function] => __construct [class] => connexion [type] => -> [args] => Array ( ) ) [2] => Array ( [file] => /var/www/html/sites/code/index.php [line] => 11 [args] => Array ( [0] => /var/www/html/sites/code/connectBdd.php ) [function] => require_once ) ) [previous:Exception:private] => [errorInfo] => )
    Voici le code utilisé:

    - connectBdd.php

    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
     
     
    <?php
    include('identifiants_bdd.php');
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    class connexion
    {
     
     const HOST = DB_HOST;
        const DBNA = DB_NAME;
        const USER = DB_USER;
        const PASW = DB_PWD;
     
     protected $dbh;
     
      function __construct(){
         try {
        $this->dbh = new PDO('mysql:host='.self::HOST.'; dbname='.self::DBNA,self::USER,self::PASW, array(PDO::ATTR_PERSISTENT=>true));
         }
         catch(Exception $e){
                           print_r($e);
                           die();
         }
      }
    }
     
    class rubrique extends connexion
    {
     function sgbd()
       {
        //$s_sqlSelect = "SELECT nomrubrique from rubrique where id_rubrique_parent is null order by nomrubrique";
        $s_sqlSelect = "SELECT nomrubrique from rubrique order by nomrubrique";
        $dbh         = $this->dbh;
        $o_sqlResult = $dbh->query($s_sqlSelect);
        while ($o_result = $o_sqlResult->fetch())
        {
           echo  $o_result['nomrubrique']."<br/>";
        }
     
       }
    }
     
    $rubrique=new rubrique();
    $rubrique->sgbd();

    - identifiants_bdd.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    <?php
    define('DB_HOST', '127.0.0.1');
    define('DB_NAME', 'debriefdba');
    define('DB_USER', 'dba');
    define('DB_PWD' , 'dba');
    ?>

  4. #4
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Je ne sais pas. Tu n'avais pas mis localhost dans ton post initial au lieu de 127.0.0.1?

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 11
    Par défaut
    Bien vu !
    Avec localhost, j'ai le résultat attendu.

    Merci beaucoup !

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

Discussions similaires

  1. Passer un selected item dans une classe connexion java
    Par cisco.nat dans le forum Général Java
    Réponses: 14
    Dernier message: 12/06/2013, 18h54
  2. Utilisation d'une classe connexion pour MySQL
    Par nolookpass8 dans le forum Développement Web en Java
    Réponses: 7
    Dernier message: 02/04/2013, 17h42
  3. Réponses: 4
    Dernier message: 16/08/2011, 13h19
  4. [C#2005] Créer une classe Connexion pour Business Objects
    Par Herlece dans le forum Windows Forms
    Réponses: 1
    Dernier message: 10/08/2008, 23h16
  5. Réponses: 1
    Dernier message: 14/04/2007, 15h17

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