Utiliser une connexion PDO dans une classe

Eléphanteau du PHP | 26 Messages

20 nov. 2008, 12:16

Bonjour,

Je m'essaye à PDO et il doit y avoir un truc qui m'échappe.

J'ai un fichier dans lequel je fait ma connexion mais je voudrais ensuite utiliser la connexion qui est ouverte dans une classe.

J'ai donc mis un include de mon fichier en haut du fichier de ma classe mais ça ne fonctionne pas, il faut que je mette mon include au début de chaque fonction de ma classe ce qui est assez lourdingue.

Merci d'avance.

Eléphant du PHP | 353 Messages

20 nov. 2008, 12:21

Bonjour.

De base le mieux serait d'ouvrir cette construction dans ta classe.

Peux t-on avoir le code que tu as fait ?
histoire de voir ce que l'on peut faire pour t'aider ?

Merci

Eléphanteau du PHP | 26 Messages

20 nov. 2008, 12:35

Merci pour ta réponse.

J'ai jeté ce que j'avais fait tellement ça m'a énervé.

Mais d'après ce que j'ai vu ici, il faut donc obligatoirement passer la connexion dans la classe alors ?

C'est moi ou c'est stupide de ne pas pouvoir utiliser la connexion ouverte ?

Eléphant du PHP | 353 Messages

20 nov. 2008, 12:42

Hum.

Pourquoi tu ne pourrais pas "utiliser la connexion ouverte" ?

au lieu d'ouvrir une connexion, tu as juste à appeler la classe qui te permet elle d'interfacer ta base de données.
non?

Eléphanteau du PHP | 26 Messages

20 nov. 2008, 12:48

Ce que je veux dire c'est qu'il ne me suffit pas de coller le fichier de connexion du genre :
        try {
            $handle = new PDO("mysql:host=host;dbname=dbname",user, password);
         } catch (PDOException $e) {
            die('Connection failed or database cannot be selected : ' . $e->getMessage());
        } 
via un include pour pouvoir utiliser $handle directement dans ma classe pour faire par exemple :
public function addItem ($id_cad,$desi,$qte,$pu,$ht,$tva,$ttc,$has_tva) {
		$q="INSERT INTO caddie_items SET id_cad=".$id_cad.", desi='".$desi."', qte=".$qte.", 
pu=".$pu.", ht=".$ht.", tva=".$tva.", ttc=".$ttc.", has_tva='".$has_tva."', date_add='".gmdate('Y-m-d H:i:s')."' ";
		$handle->exec($q);
	}
a ce niveau là le $handle n'existe pas (si je ne m'abuse).[/php]