classe de connection avec PDO()

x@v
Mammouth du PHP | 570 Messages

16 févr. 2008, 18:10

Bonjour,
j'ai réssayer une autre méthode pour une classe de connection perso en php5.
edit
<?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();
		}
	}
	
	function reqSelection($requette)
	{
		$this->requette=$requette;
		$result = $this->con->query($requette);
		return $result;
	}
}
$conn=new ConnectionClass();
$resultat=$conn->reqSelection("select * From client");
$conn->query($resultat);
foreach ($result as $row)
{
echo $row['nomH'] . " - " . $row['prenomH'] . "<br />";
}
?>
le code ci-dessus me renvoie cette erreur

Code : Tout sélectionner

Fatal error: Call to undefined method ConnectionClass::query() in /var/www/agenda_d_or/ConnectionClass.php on line 36
Merci

ViPHP
AB
ViPHP | 5818 Messages

16 févr. 2008, 19:59

Ben oui, tu vois une fonction query dans ta classe ConnectionClass ?
PHP non plus.

Mammouth du PHP | 514 Messages

16 févr. 2008, 20:30

class ConnectionClass extends pdo
ou quelque chose du genre, et tu devrais hériter de la méthode query de pdo.

Mammouth du PHP | 1885 Messages

17 févr. 2008, 08:23

Pourquoi "hardcoder" les informations d'accès dans ta classe?
De plus, quel sera le bénéfice d'étendre la classe PDO? As-tu l'intention d'ajouter des fonctionnalités?
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

x@v
Mammouth du PHP | 570 Messages

18 févr. 2008, 11:55

Sa permet de centraliser le code et en cas de changement je n'aurrai pas besoin de parcourir tous les fichiers, mais je me tate, parce que je n'ai pas put économiser en ligne de code.
De plus le faite de ne pas pouvoir compter le résultat d'une requête me gène considérablement ?
<?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 />";
}
?>