Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > ORM
ORM Mapper de bases de données écrit en PHP qui transforme les résultats de requêtes SQL en objets (ORM).
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/06/2011, 07h16   #1
Membre du Club
 
Inscription : mai 2009
Messages : 234
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 234
Points : 53
Points : 53
Par défaut MDB_QueryTool : Construction faussée

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 :
Code :
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')
   );
}?>
Maintenant voici le code qui plante :
Code :
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
}
AjaxProcess::displayScores(array("pseudo", 20)); Fait planter le serveur (erreur 500) à l'endroit indiqué.

Merci d'avance...
__________________
Ce n'est pas parce qu'un chemin prends la direction que l'on souhaite qu'il mène où l'on veut...
Trouver des inconvénients à Micro$oft, c'est comme faire une division par zéro, c'est infini...
FotoXe33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h23.


 
 
 
 
Partenaires

Hébergement Web