bonjour à tous,
je n' arrive pas à résoudre mon problème je viens donc vers vous afin de trouver la solution ...
j'instancie ma bdd dans une classe, mais cela provoque une exception de ce type :
j'ai commenté plusieurs parties de ma classe pour trouver d'ou vient le probleme, et cette exception disparait quant je commente la ligne qui instancie la bdd ...Fatal error: Exception thrown without a stack frame in Unknown on line 0
voici le code de al classe :
voici le début de la page qui lance la création de classe :
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97 <?php class SessionManager { // ------------------------ ATTRIBUTS ----------------------------------- private $db; private static $compteur = array(); // ------------------------ METHODES ----------------------------------- // GETTERS public static function getCompteur() { return self::$compteur; } // SETTERS private static function setCheckSession($valeur) { self::$compteur[$valeur] = 1; } private function setCompteur($value) { self::$compteur[$value] = 0; } public function setDb(PDO $bdd) { $this->db = $bdd; } // Public public function __construct(PDO $bdd) { $this->setDb($bdd); try // Requetes { $attr = $this->db->query('SELECT * FROM secteurs'); $q = $this->db->query('SELECT * FROM formulaires INNER JOIN secteurs ON secteurs.id_secteur = formulaires.id_sect WHERE etat = \'En cours\''); } catch(Exception $e) { die('Erreur: '.$e->getMessage()); } while($attribut = $attr->fetch(PDO::FETCH_OBJ)) // creation et affectation de l' attribut compteur { $this->setCompteur($attribut->nom_secteur); } while($ses=$q->fetch(PDO::FETCH_OBJ)) // Recherche des sessions en cours pour creation d'objet !! { $_SESSION[$ses->nom_secteur] = new Session($ses); self::setCheckSession($ses->nom_secteur); } } public function listeSession() // Listage du statut de toutes les sessions { foreach(self::getCompteur() as $key=>$value) { if($value) { echo 'Vous avez une session '.$_SESSION[$key]->getNomSecteur().' en cours, son ID est <a href="session.php?secteur='.$_SESSION[$key]->getNomSecteur().'">'.$_SESSION[$key]->getIdFormulaire().'</a><br />'; } else { echo ' il n\'y a pas de session '.$key.' en cours.<br />'; } } } public function create($nom) { if(isset($_SESSION[$nom])) { //echo 'Une session '.$nom.' existe déjà'; return $_SESSION[$nom]; } else { $idSect = $this->db->query('SELECT id_secteur FROM secteurs WHERE nom_secteur = '.$nom)->fetchColumn(); $infoSes = $this->db->prepare('INSERT INTO formulaires SET id_sect = :id_sect, date_session = :date_session, etat = :etat'); $infoses->bindValue(':id_sect', $idSect, PDO::PARAM_INT); $infoses->bindValue(':date_session', time()); $infoses->bindValue(':etat', 'En cours'); $infoses->execute(); $idSes = lastInsertId($this->db); $q = $this->db->query('SELECT * FROM formulaires INNER JOIN secteurs ON secteurs.IDsect = formulaires.ID_sect WHERE IDform = '.$idSes)->fetch(PDO::FETCH_OBJ); return new Session($q); } } public function delete($nom) { } public function modify($nom) { } } ?>
et voici le fichier 'php_fonctions.php'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?php session_cache_limiter('private_no_cache'); session_start(); include('commun/php_fonctions.php'); $bdd = db_connect('localhost','base test','David','********',array()); // Connection à la BDD sauve trade function chargerClasse($classe) // Auto load de la classe à creer { require 'class/'.$classe.'.class.php'; } spl_autoload_register('chargerClasse'); // Ajout de la classe dans la pile d'autoload $_SESSION['SM'] = new SessionManager($bdd); ?>
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 <?php function db_connect($host,$db,$name,$pass,$options) { try { $bdd = new PDO('mysql:host='.$host.';dbname='.$db, $name, $pass, $options); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(exception $e) { die('erreur :'.$e->getMessage()); } return $bdd; } ?> pouvez vous m'eclaircir sur la raison du probleme et comment le corriger svp? mercid 'avance :)
Partager