Bonjour,
Voilà, je bloque depuis des heures sur un problème de fou. J'utilise postgresql, via l'ORM MDB_QueryTool de PEAR.
J'ai une table (et donc une classe ORM) appellé scores (pour la table) ou Scores (pour la classe). Voici le code de la classe :
Maintenant voici le code qui plante :
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 <?php // Définition de la racine $racine = "../"; $racineConfig = $racine."config/"; // Instantiation des paramètres, inclusions des fichiers requis, démarrage de la session @include_once $racineConfig."init.php"; /** * Cette constante définit la table liée à la classe. */ define('TABLE_SCORES', 'scores'); /** * Classe de gestion de la table scores dans la base de données. */ class Scores extends MDB_QueryTool{ /** * Définit la table en lien avec la classe * @var string */ var $table = TABLE_SCORES; /** * Définit la sequence pour la table * @var string */ var $sequenceName = TABLE_SCORES; /** * Définit la clé primaire de la table en lien avec la classe * @var string */ var $primaryCol = 'score_id'; /** * Construit l'objet voulu en appelant le constructeur du parent MDB_Querytool */ public function __construct(){ parent::__construct(Config::$dsn, Config::$optionsDbConnect, Config::$versionMdb); parent::useResult('object'); } /** * Définit un nom court pour la table * @var array */ var $tableSpec = array( array('name' => TABLE_SCORES, 'shortName' => 'scores') ); }?>
AjaxProcess::displayScores(array("pseudo", 20)); Fait planter le serveur (erreur 500) à l'endroit indiqué.
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
98
99
100
101
102
103
104
105
106
107
108
109 class AjaxProcess{ /** * Fonction permettant d'afficher les scores de manière lisible. * @static * @param Array $args tableau contenant les paramètres * @return mixed */ static function displayScores(&$args){ /* Liste des arguments : * 0 : Début de la selection des scores * 1 : Limit du nombre de score à selectionner */ // Instantiation de la variable de retour $return = null; $start = (!empty($args[0]) && (int) $args[0] > 0) ? (int) $args[0] : 1; $limit = (!empty($args[1]) && (int) $args[1] > 9) ? (int) $args[1] : 10; // Instantiation et initialisation de l'objet ORM $tableScore = new Scores(); $tableScore->reset(); //echo $tableScore->getQueryString(); // Requette merdique ! // Test nombre de score if((int) $tableScore->getCount() > 0){ // Instanciation variables de retour $tabScore = array(); //var_dump($tableScore); // Bien construit // Requete $tableScore->setOrder("scores_score", true); //var_dump($tableScore); // Bien construit //echo $tableScore->getQueryString(); // Requette merdique $tableScore->setLimit($start, $limit); //echo $tableScore->getQueryString(); // Requette s'affiche pas //var_dump($tableScore); // Bien construit // Résultat $allScores = $tableScore->getAll(); var_dump($allScores); // False !!!! // ARET DU PROGRAMME ICI (erreur 500) // Parcour des résultats while($thisScore = $allScores->getNext()){ $tabScore[count($tabScore)]["pseudo"] = $thisScore->pseudo; $tabScore[count($tabScore)]["score"] = $thisScore->score; $tabScore[count($tabScore)]["date"] = $thisScore->date; } echo "vi ?"; // Non afficher // Encodage json du tableau des scores $return = json_encode($tabScore); var_dump($return); // Non afficher } return $return; } // [..] Fin de la class }
Merci d'avance...
Partager