Page : 1 |
vistuo |
Posté le 03/08/2007 10:18
- #
|

Membre
22 messages
16 ans |
Bonjour à tous,
je suis sur un projet de forum, mais voilà, il se trouve que depuis ce matin, le parsage de certaine vars ne veut plus fonctionner...
Comme c'est une grande page, j'aifait une page de teste y ressemblant mais reduite (mais le bug persiste !)
Voici le code PHP :
$cat = array(
array(
'nom'=> 'Cat',
'sous_cat'=>array ()
),
array(
'nom'=> 'Cat',
'sous_cat'=>array (
array(
'id'=> 3,
'nom'=> 'Forum',
'descrip'=> 'Ceci est un forum',
'dern_mess'=>array (
0,
'',
0
)
),
array(
'id'=> 4,
'nom'=> 'Forum',
'descrip'=> 'Ceci est un forum',
'dern_mess'=>array (
2,
'pseudo',
1184569454
)
),
)
)
);
foreach($cat as $cle => $val) {
$tpl-> assign_block('cat', array('id' => $cle+1, 'nom' => $cat[$cle]['nom']));
if(count($val['sous_cat'])> 0) {
foreach($val['sous_cat'] as $val1) {
$tpl-> assign_block('cat.sous_cat', array('id' => $val1['id'], 'nom' => $val1['nom'], 'descrip' => $val1['descrip'], 'dern_mess_id'=> $val1['dern_mess'][0], 'dern_mess_pseudo'=> $val1['dern_mess'][1], 'dern_mess_time'=> $val1['dern_mess'][2]));
}
}
else $tpl-> assign_block('cat.sous_cat', array('id'=>NULL ));
}
Voici le code TPL:
<!-- BEGIN cat -->
<tr>
<td colspan="2">
<a href="cat-{$id}.html">{$nom}</a>
</td>
</tr>
<!-- BEGIN cat.sous_cat -->
{if($id==NULL)}
<tr>
<td colspan="2">Pas de forums</td>
</tr>
{else}
<tr>
<td>
<a href="forum-{$id}.html">{$nom}</a>
<span class="description"> {$descrip} </span>
</td>
<td> {$dern_mess_id}, {$dern_mess_time}, par {$dern_mess_pseudo} </td>
</tr>
{/if}
<!-- END cat.sous_cat -->
<!-- END cat -->
Et le fichier compilé :
<?php if(!empty($this->blocks["cat"]) ){ foreach($this->blocks["cat"] as $g_b_var){ ?>
<tr>
<td colspan="2">
<a href="cat-<?php echo $g_b_var["id"]; ?>.html"><?php echo $g_b_var["nom"]; ?></a>
</td>
</tr>
<?php if(!empty($g_b_var["sous_cat"]) ){ foreach($g_b_var["sous_cat"] as $g_b_var){ ?>
<?php if($g_b_var["id"]==NULL){ ?>
<tr>
<td colspan="2">Pas de forums</td>
</tr>
<?php }else{ ?>
<tr>
<td>
<a href="forum-<?php echo $g_b_var["id"]; ?>.html"><?php echo $g_b_var["nom"]; ?></a>
<span class="description"> {$descrip} </span>
</td>
<td> {$dern_mess_id}, {$dern_mess_time},par {$dern_mess_pseudo}<?php } ?></td>
</tr>
<?php } ?>
<?php }} ?>
<?php }} ?>
Sa fonctionne pas !
J'ai essayé plein de chose (sauf la solution), mais a mon avis (j'ai surement tord), c'est le moteur qui possède un bug(mais tout petit hein !! )
Merci d'avance pour vos aides !
Amicalement
EDIT : En plus de cela, j'ai deux erreurs :
Notice: Undefined variable: sea in F:\Creations\Progress\XHTML-CSS\Forum v3\Templates\class\template.class.php on line 246
Notice: Undefined variable: rep in F:\Creations\Progress\XHTML-CSS\Forum v3\Templates\class\template.class.php on line 246 Edité par vistuo le 03/08/2007 10:23
|
Noix de Coco |
Posté le 03/08/2007 11:13
- #
|

Membre
36 messages
16 ans |
Je ne vois pas d'où pourrai venir l'erreur ^^'.
T'as essayé de vider le fichier des compilés manuellement et d'actualiser ?
Vérifie également le cache est désactivé, et s'il le faut vide aussi le dossier du cache.
Et aussi, tu ferrais mieux de présenter tes assign_block avec des retours à la ligne pour chaque assignement, tu y verrai mieux .
Et je remarque également que tu n'as pas initialiser le premier block (cat), donc vérifie que tu as bien au moins une catégorie, ou initialise-le .
Lors de l'initialisation, tu dois également définir toutes tes variables .
En décorticant ton code je viens également de trouver la réponse à ton problème :
En initialisant la block 'cat.sous_cat', tu n'as initialiser qu'une variable : $id !
Et j'en déduis que tu n'as pas créé de sous catégorie, c'est pourquoi les vairbales ne se parsent pas (mis à part $id).
Bon c'est un post où j'ai réfléchi à voix haute, mais j'espère que ça t'aiderai à mieux repérer tes erreurs .
Code final (que je me suis permis de modifier et de commenter ) :
// On définit un boléen qui servira à savoir s'il y a au moins une catégorie
$uneCategorie = false;
// On liste les catégories
foreach($cat as $cle => $val) {
$tpl-> assign_block('cat', array(
'id' => $cle+1,
'nom' => $cat[$cle]['nom']));
// S'il y a au moins une sous catégorie
if(count($val['sous_cat'])> 0) {
// On définit les sous catégories
foreach($val['sous_cat'] as $val1) {
$tpl-> assign_block('cat.sous_cat', array(
'id' => $val1['id'],
'nom' => $val1['nom'],
'descrip' => $val1['descrip'],
'dern_mess_id' => $val1['dern_mess'][0],
'dern_mess_pseudo' => $val1['dern_mess'][1],
'dern_mess_time' => $val1['dern_mess'][2]));
}
}
// Sinon on initialise le block et ses variables
else {
$tpl-> assign_block('cat.sous_cat', array(
'id' => NULL,
'nom' => NULL,
'descrip' => NULL,
'dern_mess_id' => NULL,
'dern_mess_pseudo' => NULL,
'dern_mess_time' => NULL));
}
// On déclare qu'il y a au moins une catégorie
$uneCategorie = true;
}
// S'il n'y a pas de catégorie
if (!uneCategorie )
{
// On initialise le block et ses variables
$tpl-> assign_block('cat', array(
'id' => NULL,
'nom' => NULL));
} Edité par Noix de Coco le 03/08/2007 11:14
|
vistuo |
Posté le 03/08/2007 11:54
- #
|

Membre
22 messages
16 ans |
Merci sa marche, mais j'ai toujours les deux erreurs, a mon avis (en parlant a gaga26), tu as oublier de mettre ceci dans la fonction assign_vars :
Allez a + et merci !
PS:En initialisant la block 'cat.sous_cat', tu n'as initialiser qu'une variable : $id !
Et j'en déduis que tu n'as pas créé de sous catégorie, c'est pourquoi les vairbales ne se parsent pas (mis à part $id).
FAUX, $nom a été parsé ! C'est à ne plus rien comprendre !
Bonne journée
|
Noix de Coco |
Posté le 03/08/2007 12:02
- #
|

Membre
36 messages
16 ans |
Je ne sais pas, mais là ça doit venir d'une autre partie de ton code, essaye de voir, car gaga26 n'a rien oublier, moi je m'en sert et ça fonctionne super bien (version 3.0), donc l'erreur dois provenir de ton code qui engendre un problème dans sea et rep ^^.
De rien sinon .
|
gaga26 |
Posté le 03/08/2007 13:37
- #
|


741 messages
18 ans |
Tu as bien mis la variables compile à true ?
|
vistuo |
Posté le 03/08/2007 17:03
- #
|

Membre
22 messages
16 ans |
Bien sur
|
gaga26 |
Posté le 03/08/2007 17:21
- #
|


741 messages
18 ans |
Utilises-tu une version récente ? Si oui, essai un var_dump($tpl->blocks) pour voir si les blocks sont bien déclarés.
De plus je ne vois pas d'où vienne ces notices, il n'y a pas de variables sea ni rep.
|
vistuo |
Posté le 03/08/2007 17:42
- #
|

Membre
22 messages
16 ans |
J'utilise la version 3.2 et ces variables se trouve dans les fonctions parse_blocks et parse_vars
|
gaga26 |
Posté le 03/08/2007 18:49
- #
|


741 messages
18 ans |
Mais que t'affiche var_dump($tpl->blocks) ?
|
vistuo |
Posté le 06/08/2007 11:15
- #
|

Membre
22 messages
16 ans |
J'avais deja regardé tout etait bon !
|
Ze Thriller |
Posté le 12/08/2007 18:20
- #
|

Membre
105 messages
24 ans |
J'ai l'impression que c'est la manifestation d'un des bugs que j'ai signalé pour la v3.2 à savoir que quand un bloc est analysé, les variables qui suivent sont potentiellement détruites.
Corrigé dans la future v3.3 ^^
|
Page : 1 |