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] Utilisation d'une classe pdo perso


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Août 2004
    Messages
    499
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 499
    Par défaut [POO] Utilisation d'une classe pdo perso
    Bonjour,
    j'essaie d'implémenter une class à partir de pdo, mais j'ai toujours des erreurs ?
    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
    class ConnectionClass
    {
    	private $db = 'test'; //nom de la base de données
    	private $host = 'localhost'; // nom de la machine hôte
    	private $user = 'root'; // nom de l'utilisateur
    	private $pwd = 'xav';// mot de passe 
    	private $dsn;
    	private $con;
    	private $requette; // requette
     
    	function __construct()
    	{
    		try 
    		{
    			$this->dsn = "mysql:dbname=$this->db;host=$this->host";
    			$this->con = new PDO($this->dsn, $this->user, $this->pwd);	
    		}
    		catch (PDOException $e)
    		{
    			print 'Erreur ! : '.$e->getMessage().'<br/>';
    			echo 'N° : '.$e->getCode();
    			die();
    		}
    		return $this->con;
    	}
     
    	function reqSelection($requette)
    	{
    		$result = $con->query($requette);
    		//return $result;
    	}
    }
    //$conn=new ConnectionClass();
    reqSelection("select * From client");
    foreach ($result as $row)
    {
    echo $row['nomH'] . " - " . $row['prenomH'] . "<br />";
    }
    ?>
    l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Call to undefined function reqSelection() in /var/www/agenda_d_or/ConnectionClass.php on line 35
    numéro de ligne 35 correspond :
    reqSelection("select * From client");
    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 41
    Par défaut
    Bonjour,
    Il faut instancier un objet de type ConnectionClass pour pouvoir accéder à une de ses méthodes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $Connec = new ConnectionClass();
    $result = $Connec->reqSelection("select * From client");

  3. #3
    Membre éclairé
    Inscrit en
    Août 2004
    Messages
    499
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 499
    Par défaut
    j'ai cette erreur

    Fatal error: Call to a member function query() on a non-object in /var/www/agenda_d_or/ConnectionClass.php on line 30

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	function reqSelection($requette)
    	{
    //ligne 30 ci-dessous
    		$result = $con->query($requette);
    		//return $result;
    	}

  4. #4
    Membre éclairé
    Inscrit en
    Août 2004
    Messages
    499
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 499
    Par défaut
    Cette fois je n'ai plus d'erreur, mais la requete ne renvoie rien ?
    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
    <?php
    class ConnectionClass
    {
    	private $db = 'test'; //nom de la base de données
    	private $host = 'localhost'; // nom de la machine hôte
    	private $user = 'root'; // nom de l'utilisateur
    	private $pwd = 'xav';// mot de passe 
    	private $dsn;
    	private $con;
    	private $requette; // requette
     
    	function __construct()
    	{
    		try 
    		{
    			$this->dsn = "mysql:dbname=$this->db;host=$this->host";
    			$this->con = new PDO($this->dsn, $this->user, $this->pwd);
    		}
    		catch (PDOException $e)
    		{
    			print 'Erreur ! : '.$e->getMessage().'<br/>';
    			echo 'N° : '.$e->getCode();
    			die();
    		}
    		return $this->con;
    	}
     
    	function reqSelection($requette)
    	{
    		$result = $this->con->query($requette);
    		//return $result;
    	}
    }
     
    $Connec = new ConnectionClass();
    $result = $Connec->reqSelection("select * From client");
    foreach ($Connec as $row)
    {
    echo $row['nom'] . " - " . $row['prenom'] . "<br />";
    }
    ?>
    ma table
    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
    -- phpMyAdmin SQL Dump
    -- version 2.10.3deb1ubuntu0.1
    -- http://www.phpmyadmin.net
    -- 
    -- Serveur: localhost
    -- Généré le : Sam 16 Février 2008 à 20:19
    -- Version du serveur: 5.0.45
    -- Version de PHP: 5.2.3-1ubuntu6.3
     
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
     
    -- 
    -- Base de données: 'test'
    -- 
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table 'client'
    -- 
     
    CREATE TABLE `client` (
      nom varchar(30) NOT NULL,
      prenom varchar(30) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    -- 
    -- Contenu de la table 'client'
    -- 
     
    INSERT INTO client VALUES ('jacky', 'double Coup');
    INSERT INTO client VALUES ('Rasmus', 'Lerdorf');
    INSERT INTO client VALUES ('Rasmus', 'Lerdorf');
    INSERT INTO client VALUES ('Rasmus', 'Lerdorf');
    INSERT INTO client VALUES ('developpus', 'artotal');
    INSERT INTO client VALUES ('developpus', 'artotal');

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 41
    Par défaut
    Ok, il faut que ta fonction renvoie le résultat avec le return et le foreach doit utiliser le résultat et pas l'objet $Connec.
    Par contre, dans tes requêtes il est préférable de ne pas faire de SELECT *...mais plutôt SELECT NOM,PRENOM....

    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
    class ConnectionClass
    {
    	private $db = 'test'; //nom de la base de données
    	private $host = 'localhost'; // nom de la machine hôte
    	private $user = 'root'; // nom de l'utilisateur
    	private $pwd = '';// mot de passe 
    	private $dsn;
    	private $con;
    	private $requette; // requette
    	
    	function __construct()
    	{
    		try 
    		{
    			$this->dsn = "mysql:dbname=$this->db;host=$this->host";
    			$this->con = new PDO($this->dsn, $this->user, $this->pwd);
    		}
    		catch (PDOException $e)
    		{
    			print 'Erreur ! : '.$e->getMessage().'<br/>';
    			echo 'N° : '.$e->getCode();
    			die();
    		}
    		return $this->con;
    	}
    	
    	function reqSelection($requette)
    	{
    		$result = $this->con->query($requette);
    		return $result;	}
    }
     
    $Connec = new ConnectionClass();
    $result = $Connec->reqSelection("select nom,prenom From client");
    foreach ($result as $row)
    {
    	echo $row['nom'] . " - " . $row['prenom'] . "<br />";
    }
    ?>

  6. #6
    Membre éclairé
    Inscrit en
    Août 2004
    Messages
    499
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 499
    Par défaut
    Bonjour,
    j'ai toujours la même erreur !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur ! : SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: NO)
    N° : 0
    curieux, je vais peut-être faire une classe en php sans PDO().
    Mais c'est dommage on perd la Persistence, les requêtes préparés, la sécurité accrue et plus important la robusteste.
    Qu'an penses-tu ?

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

Discussions similaires

  1. [POO] POO pour une classe PDO
    Par nabab dans le forum Langage
    Réponses: 2
    Dernier message: 08/08/2007, 00h58
  2. Réponses: 1
    Dernier message: 03/02/2007, 19h02
  3. pb utilisation d'une classe perso
    Par sharivaree dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/12/2006, 19h44
  4. Réponses: 4
    Dernier message: 25/07/2006, 17h30
  5. [POO] Utilisation d'une classe dans une classe !
    Par Okinou dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 15h34

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