Les tests sont très compliqués et je pense qu'il y a moyen de simplifier ça.
Il serait bon de vérifier le contenu des variables du bloc en PHP avant de les fusionner avec le template.
Ma méthode pour ma part est la suivante : j'extrais les données de la requête SQL dans une variable de type ARRAY, et c'est cette variable de type ARRAY dont j'affiche le contenu avec la commande PHP "print_r" pour en voir le contenu. Cette méthode me permet de debugger plus facilement
exemple :
$q = 'SELECT';
$q.= ' id';
$q.= ', label';
$q.= ' FROM xxxxxxx';
$q.= ' WHERE xxxxx';
$result_select = mysql_query($q);
$result = array();
while ($row = mysql_fetch_array($result_select, MYSQL_ASSOC)) {
$result[] = $row;
}
$result_free = mysql_free_result($result_select);
|
Le résultat de la requête est dans la variable '$result'
Ensuite je teste toutes les données directement en PHP ce qui permet de simplifier les commandes TBS à mettre dans le template.
Exemple dans le code de test si l'élément n'est pas existant alors la valeur sera égale à ''
$blk_result = array();
reset($result);
while (list($id, $fd) = each($result)) {
$blk_result[$id]['id'] = (isset($fd['id']) ? $fd['id'] : '');
$blk_result[$id]['label'] = (isset($fd['label']) ? $fd['label'] : '');
}
|
Ensuite pour je fusionne par la commande
$TBS->MergeBlock('blk_result', 'array' , $blk_result);
|
Pour debugger la variable '$result' faire le code suivant :
echo '<pre>';
print_r($result);
echo '<pre>';
|
Cela peut paraitre plutôt lourd, mais cela permet de gagner tellement de temps en ayant des données testées et facilement 'débuggable'.
Ces opérations ne sont pas trop consommatrice de CPU ou de mémoire
Olivier