Bonjour,

Je viens vers vous aujourd'hui car je ne trouve pas la solution à un problème de boucle infinie d'exceptions. Je précise que je me forme à l'orienté objet en PHP, ce que je fais n'est pas forcément utile, j'essaye juste d'expérimenter et d'améliorer mon niveau. Là, le but est de faire une classe Tableau avec un minimum de fonctionnalités.

Je me permets de joindre le code de 2 de mes fichiers :

index.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
 
<?php
function loadClasses($classe){
	require $classe.'.php';
}
spl_autoload_register('loadClasses');
session_start();
include('html.php');
enteteHTML();
$tab = new Tableau("TabParam");
$tab->insertInput();
echo Tableau::getNbTabs();
//$_SESSION['tab']=$tab;
baseHTML();
?>
tableau.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
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
 class Tableau
{
	public function __construct($tableSQL){ // constructeur
	  try{
 
	  $this->db = new PDO("mysql:host=localhost;dbname=TabTest", "root", "");
	  }
	  catch(Exception $e){
        die('Erreur : '.$e->getMessage());
		}
		$this->largeur = $this->columnNumber($tableSQL);
		$this->tableSQL = $tableSQL;
		self::$nombreTabs++;
		$this->valeurs = array(array());
		$this->requestReturn($this->tableSQL);
		$this->show();
	}
	public function requestReturn($tableSQL){ // mise en mémoire locale de la table
	 	$querydim = $this->db->query("select * from $tableSQL");
	 	if(!is_object($querydim)) return "Object Error, check your request and your table";
	 	$j = 0;
	 	while($fetchresult=$querydim->fetch()){
	 		for($i=0; $i<$this->largeur; $i++){
	 			$this->valeurs[$j][$i] = $fetchresult[$i];
	 		}
	 		$j++;
	 	}
	 	$this->longueur = $j;
 	}
  	public function show() { // fonction d'affichage de la table mémorisée
 		echo "<table name=\"tab1\">"; 		
 		foreach($this->valeurs as $cle=>$valeur){
 			echo "<tr>";
 			foreach($valeur as $cle=>$value){
 				echo "<td> $value </td>";
 			}
 			echo "</tr>";
		}
		echo "</table>";
 	}
  	public function columnNumber($tableSQL){ // fonction renvoyant le nombre de colonne de la table
 		$querydim = $this->db->query("select * from $tableSQL");
 		return $querydim->columnCount();
 	}
 	public function insertData($row){ // permet d'insérer des données dans la table SQL
 		header('Location : index.php');
 		$querydim = $this->db->query("insert into ($this->tableSQL) values ($row)");
 	}
 	public function insertInput(){
 		echo "<form method=POST action=traitement.php>";
 		for($i=0; $i<$this->largeur; $i++){
 			echo "<input type=\"text\" size=\"3\" name=\"input$i\">&nbsp;";
 		}
 		echo "<input type=\"submit\" size=\"2\" name=\"submitInsert\"></form><br/>";
 	}
	private static $nombreTabs=0;
	public static function getNbTabs(){
		return 'la classe tableau a été instanciée '.self::$nombreTabs.' fois';
	}
	private $db;
	private $largeur;
	private $longueur;
	private $tableSQL;
	private $valeurs;
}
?>
Le code commenté dans index.php, s'il est décommenté, provoque une erreur : Fatal error: Exception thrown without a stack frame in Unknown on line 0

J'ai l'impression que le problème vient de PDO, puisque d'après ce que j'ai lu, mettre en variable de session un objet se fait de cette manière là, sans sérialiser. De toutes façons, la sérialisation ne fonctionne pas, on ne peut pas sérialiser un objet PDO (c'est ce que me dit l'erreur renvoyée dans ce cas!). Je précise aussi que j'aimerais que tout ce tintouin fonctionne avec PDO

Merci d'avance

Edit : enteteHTML() et baseHTML() se contentent de faire des echo de balises HTML