TinyButStrong - the PHP Template Engine
Categories > TinyButStrong general (FR) >

un test != ne se conclut pas par la bonne action

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs

By: Jurvillier
Date: 2016-03-08
Time: 16:03

un test != ne se conclut pas par la bonne action

Un tpl de ce type :
<tr><!--[b1.sor_id; if [val] !=[onshow._GET.details]; then 'diff'; else 'egal';noerr;magnet=tr+tr]-->
    <td>[b1.sor_descr;strconv=no]</td><!-- [onshow._GET.details;noerr;magnet=tr+tr] --><!-- [b1.sor_id;noerr;] -->
</tr>
<tr>
    <th>Nom</th>
</tr>
testé sur 2 valeurs successives du bloc b1 : 1352, puis 1359, rend toujours "diff", alors que [onshow._GET.details] vaut toujours 1352
J'ai cru comprendre que dans le if je peux mettre une [var] dans expr2 comme ici.
Le but est de créer les 2 tr uniquement si il y a égalité
Je n'ai pas réussi à le faire.
Question subsidiaire : pour ne jamais faire apparaitre (sauf dans le source html) les éléments de test,  la mise en commentaire est-elle la seule façon ?
merci d'avance,
By: Skrol29
Date: 2016-03-11
Time: 21:31

Re: un test != ne se conclut pas par la bonne action

Bonjour,

Le code a l'air bon, mais peux-tu préciser comment est défini le bloc ? C'est à dire où est la balise avec le paramètre "block=..." ?
By: Jurvillier
Date: 2016-03-12
Time: 13:00

Re: un test != ne se conclut pas par la bonne action

bonjour,
voici un code simplifié, il n'y a pas tous les td ni tous les input, que j'ai néanmoins vérifié que le pb subistait avec cette version.
<table>
<tr>
    <th>
        <a href='index.php?details=[b1.sor_id;block=table;sub1=(details)]'>blabla></a>
        [b1.sor_titre]
    </th>
</tr>
<tr><!--[b1.sor_id; if [val] !=[onshow._GET.details]; then 'diff'; else 'egal';noerr;magnet=tr+tr]-->
    <td colspan='4'>[b1.sor_descr;strconv=no]</td><!-- [onshow._GET.details;noerr;] --><!-- [b1.sor_id;noerr;] -->
</tr>
<tr><th>Nom</th></tr>
<!-- Mode (sub) détails pour chaque mus -->
<mus>
<form action='index.php' method='get' name='rep[b1_sub1.#;noerr]'>
<input type='hidden' name='details' value='[onshow._GET.details;noerr]'/>
<input type='hidden' name='[b1_sub1.rep_mode;noerr]mus' value='[b1_sub1.mus_id;block=mus;noerr]'/>
<tr>
    <td >[b1_sub1.mus_nom]</td>
    <td >[b1.sor_onmange;if [val]==1; then ' ';else '';magnet=td]
        <select name='jemange'>
            <option value='0' [b1_sub1.rep_jemange ; if [val] ==1; then ''; else 'selected';noerr] >ne mange pas</option>
            <option value='1' [b1_sub1.rep_jemange ; if [val] ==1; then 'selected'; else '';noerr] >mange</option>
        </select>
    </td>
    <td>[b1.sor_onmange;if [val]==0 ;then ' ';else '';magnet=td]<input type='hidden' name='jemange' value='0' />S/O</td>
    <td><input type='submit' value='Modifier'/></td>
</tr>
</form>
</mus>
</table>

et en résultat, le bout de résultat litigieux, toujours sur les 2 valeurs 1359,1352 :
<tr><!--diff-->
    <td colspan='4'>description de la sortie 1352</td><!-- 1352 --><!-- 1352 -->
</tr>
<tr><th>Nom</th></tr>
merci d'avance,
By: Skrol29
Date: 2016-03-12
Time: 23:10

Re: un test != ne se conclut pas par la bonne action

Bonjour,

En fait j'aurai pu voir le problème avant : tu utilises [onshow._GET.details;...] or les balises [onshow] ne sont fusionnée que lorsqu'on appelle $TBS->Show().
Donc au moment où tu fusionne "b1", ta condition « [val]!=[onshow._GET.details] » est toujours vraie car [onshow._GET.details] n'est pas fusionné.
By: Jurvillier
Date: 2016-03-13
Time: 10:33

Re: un test != ne se conclut pas par la bonne action

C'est vrai docteur,
[onload._Get.details;noerr]
a guéri le malaise.
merci