Bonjour à tous
J’ai créer une classe qui donne une instance de connexion à une base de donnée, et je veux pouvoir utiliser cet objet quand je veux dans mes pages php donc je la fait par une variable de session. Mais ca me met une erreur que je narrive pas à debugger.
Voici la classe ou je dfini ma classe de connection : connection.class.php
Et la mon fichier ou je stocke linstance de cnx dans une variable de session : test.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
46
47
48
49
50
51
52
53
54 class Connection{ public static $con; public $serveur; public $port; public $user; public $password; public $database; public function __construct($serveur, $port, $user, $password, $database){ $this->serveur=$serveur; $this->database=$database; $this->port=$port; $this->user=$user; $this->password=$password; } public function connectBdd(){ if(!isset(self::$con)) { try{ self::$con= new PDO('mysql:host='.$this->serveur.';port='.$this->port.';dbname='.$this->database, $this->user, $this->password); print "Connexion à la base de données ruessie"; }catch(PDOException $e){ print "Error.... Num : ".$e->getCode()." Message : ".$e->getMessage(); die(); } } else print "une instance de cnx existe déja<br>"; return self::$con; } /** *Methode défimit pour sauver les attributs avant la sérialisation */ public function _sleep(){ $this->con= null; //return array('serveur', 'port', 'user', 'password', 'database'); } /** *Methode qui est appelée après la désérialisation, pour nous permettre de relncer la connexion */ public function _wakeup(){ $this->connectBdd(); } }
Et c avec le bout de code suivant que je teste pour voir si ca passe : rep.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 <?php include "connection.class.php"; session_start(); if (!isset ($_SESSION['connexion'])) { $connexion = new Connection ('localhost', '8888','root', 'root', 'desimmob'); $_SESSION["connexion"] = $connexion->connectBdd(); print 'Actualisez la page !'; } else { echo '<pre>'; var_dump ($_SESSION['connexion']); // On affiche les infos concernant notre objet echo '</pre>'; } ?>
Quand je lance test.php sur le navigateur j’obtient cette erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 session_start(); include "connection.class.php"; $connexion = $_SESSION["connexion"]; $query1=("Select * from test"); $resultat = $connexion->query($query1); while($ligne = $resultat->fetch(PDO::FETCH_OBJ)){ echo $ligne->nom."-______-".$ligne->prenom."<br/>"; }
Et qund je lance rep.php sur le navigateur g cette erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2Fatal error: Exception thrown without a stack frame in Unknown on line 0
Si kelkun à une idée ou une solution sur mon probleme, je suis preneur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Notice: Undefined index: connexion in /Applications/MAMP/htdocs/desimmob/classe_metier/rep.php on line 5 Fatal error: Call to a member function query() on a non-object in /Applications/MAMP/htdocs/desimmob/classe_metier/rep.php on line 10
Merci à tous
Partager