Oups !! pas évident.
Bon, je dois afficher des lignes correspondant à des structures dont le type et le nombre ont été déterminés dans un formulaire précédent.
J'aurais par exemple deux lignes correspondant à deux types de planchers, une ligne correspondant à un type de mur et une autre correpondant à un type de toiture.
5 lignes en tout dont 2 pour le plancher. Or, comme les types de planchers sont différents, pour chaque ligne, j'aurai une liste de choix de structure et une liste de choix d'isolation différentes.
Concrètement et pour ces deux lignes :
$GLOBALS['SESSION']['projet_nb_pb'] contient le nombre de types de planchers (ici 2)
$GLOBALS['SESSION']['PAROIS_DETAILLEES']['form_paroi_pb1'] et $GLOBALS['SESSION']['PAROIS_DETAILLEES']['form_paroi_pb2'] contiennent les différents identificateurs des planchers
|
et voici le chargement du tableau :
if ($GLOBALS['SESSION']['projet_nb_pb']>0){
for ($i=1;$i<=$GLOBALS['SESSION']['projet_nb_pb'];$i++){
$GLOBALS['planchers_bas'][$i]=$GLOBALS['SESSION']['PAROIS_DETAILLEES']['form_paroi_pb'.$i];
$GLOBALS['liste_detaillee_structure_pb'][$i]=donne_liste_structure_paroi($db,+paramètres...);
$GLOBALS['liste_detaillee_isolation_pb'][$i]=donne_liste_isolant_paroi($db,+paramètres...);
}
}
else $GLOBALS['planchers_bas']=array();
|
Les fonctions donne_liste_... renvoient les key->val pour la construction des listes déroulantes.
On a donc, dans ce cas précis, un tableau de 2 cases contenant chacune un tableau d'ID->libellé.
La jonction avec l'html
$this->LoadTemplate('nomfichier.htm');
$this->MergeBlock('paroi_struct_pb', $GLOBALS['liste_detaillee_structure_pb']);
$this->MergeBlock('paroi_iso_pb', $GLOBALS['liste_detaillee_isolation_pb']);
$this->MergeBlock('plbas', $GLOBALS['planchers_bas']);
$this->Show();
|
Pour le fichier html, j'ai essayé plusieurs méthodes mais rien à faire, voici celle qui ne me génère pas d'erreur mais qui m'affiche des listes vides :
<tr class="Style1">
<td>Plancher bas[plbas.#;block=tr]</td>
<td align="right">Structure</td>
<td>
<select name="form_structure_detaillee_pb[paroi_struct_pb.#]" id="form_structure_detaillee_pb[paroi_struct_pb.#]">
<option value="[paroi_struct_pb.[paroi_struct_pb.#].key]">[paroi_struct_pb.[paroi_struct_pb.#].val;block=option;when [paroi_struct_pb.[paroi_struct_pb.#].key]!=VALEUR_DEFAUT]</option>
<option>[paroi_struct_pb.[paroi_struct_pb.#].VALEUR_DEFAUT;ope=html;select]</option>
</select>
</td>
<td align="right">Isolation</td>
<td>
<select name="form_isolation_detaillee_pb[paroi_iso_pb.#]" id="form_isolation_detaillee_pb[paroi_iso_pb.#]">
<option value="[paroi_iso_pb.[paroi_iso_pb.#].key]">[paroi_iso_pb.[paroi_iso_pb.#].val;block=option;when [paroi_iso_pb.[paroi_iso_pb.#].key]!=VALEUR_DEFAUT]</option>
<option>[paroi_iso_pb.[paroi_iso_pb.#].VALEUR_DEFAUT;ope=html;select]</option>
</select>
</td>
</tr>
|
Si je regarde le code, par exemple pour les structures.
plbas.# passe bien de 1 à 2 mais paroi_struct_pb.# conserve la valeur 2.
Je sais que mon code html est nul mais j'ai essayé d'autres arrangements (par exemple sans le [paroi_struct_pb.#]) que je ne vais pas décrire ici.
Voilà, c'est assez touffu, j'espère avoir été assez limpide.
Merci pour ton implication Skrol.