Categories > TinyButStrong general (FR) >

Affichage conditionnel + suppression block

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Aurélien
Date: 2006-06-16
Time: 11:36

Affichage conditionnel + suppression block

Bonjour, j'essaie de supprimer un bloc dans un tableau lorqu'il n'y a pas de valeur. Donc j'utilise bmagnet.

    <tr>
        <td class="[bloc_tableau.decale.val;block=tr]">[bloc_tableau.valeurs_tableau.val;block=tr; when !=nodata]</td>
        <td class="colonne_centree"><input type="radio" name="tableau_resultats_radio" /></td>
        <td class="colonne_centree"><input type="checkbox" name="[bloc_tableau.nom_checkbox_modifier.val;block=tr;]" /></td>
        <td class="colonne_centree"><input type="checkbox" name="[bloc.nom_checkbox_fusionner.val;block=tr;bmagnet=td]" /></td>
    </tr>

Comme vous pouvez le voir, j'essai de supprimer une colonne lorsque celle-ci ne contient pas de données. Ces données sont rangées par ligne d'où 'block=tr'. Ensuite si il n'y a pas de données, j'essai de supprimer 'bmagnet=td'. Mais la ça m'efface toutes les lignes. J'ai également essayé 'bmagnet=input' mais pareil.

Merci de votre aide.
By: Skrol29
Date: 2006-06-16
Time: 11:54

Re: Affichage conditionnel + suppression block

Salut,

bmagnet fait sa recherche sur les balises HTML qui englobent le bloc. Il n'est pas possible de l'appliquer à des balises HTML internes au bloc.
By: Aurélien
Date: 2006-06-16
Time: 11:58

Re: Affichage conditionnel + suppression block

Ok c'est bien ce qu'il me semblait. Comment je peux faire alors pour supprimmer cette colonne si elle ne contient rien? (si pas d'autre choix, j'utiliserais un booléen)
By: Skrol29
Date: 2006-06-16
Time: 12:27

Re: Affichage conditionnel + suppression block

Ta définition de bloc contient des informations superflues.
Tu as mis des "block=tr" sur chaque champs alors qu'un seul suffit dans une section de bloc. Le premier "block=tr" défini le bloc, tous les autres "block=" et autres paramètres de bloc à l'intérieur de cette section son ignorés.

Par exemple ton "when !=nodata" est complètement ignoré (en plus l'expression est toujours fausse).

S'il il n'y a pas d'enregistrement, c'est toute la ligne qui est surrpimée. Alors quelle cellule veux-tu enlever ?
By: Aurélien
Date: 2006-06-16
Time: 14:14

Re: Affichage conditionnel + suppression block

Merci de m'avoir aider à nettoyer mon code. C'est bien plus lisible comme ça.

En fait je veux juste retirer le dernier <td> du bloc <tr> lorsque bloc.nom_checkbox_fusionner n'a pas d'enregistrement.

Tu vois une solution? Sinon je vais bidouiller un truc avec un bouléen
By: Skrol29
Date: 2006-06-16
Time: 14:37

Re: Affichage conditionnel + suppression block

Ce que je ne comprend pas c'est de quel dernier <td> tu parles.
S'il n'y a pas d'enreg, alors le bloc <tr> est effacé et tout les <td> qu'il contient sont effacés aussi.
By: Aurélien
Date: 2006-06-16
Time: 14:47

Re: Affichage conditionnel + suppression block

Ce dernier td :
<td class="colonne_centree"><input type="checkbox" name="[bloc.nom_checkbox_fusionner.val;block=tr;bmagnet=td]" /></td>

En fait ce que je veux, c'est garder toutes les lignes (ya toujours des données dedans). Par contre cette colonne ne contient pas forcément des données car elle est optionnelle.

Vais faire un petit schéma en espérant que ca va t'aider :

tableau avec le fameux td :

____________________________________
|                 |          |           |          |
|                 |          |           |          |
|                 |          |           |          |
|                 |          |           |          |
|                 |          |           |          |
|                 |          |           |          |

il y a donc 4 colonnes.

Maintenant, si il n'y a pas de données dans la derniere colonne, je veux que mon tableau resemble à ça :

Ce dernier td :
<td class="colonne_centree"><input type="checkbox" name="[bloc.nom_checkbox_fusionner.val;block=tr;bmagnet=td]" /></td>

En fait ce que je veux, c'est garder toutes les lignes (ya toujours des données dedans). Par contre cette colonne ne contient pas forcément des données car elle est optionnelle.

Vais faire un petit schéma en espérant que ca va t'aider :

tableau avec le fameux td :

____________________________
|                 |          |           |
|                 |          |           |
|                 |          |           |
|                 |          |           |
|                 |          |           |
|                 |          |           |

donc supprimer la dernier colonne mais pas les lignes.
(je crois que TBS ne permet pas de lefaire via les blocks).

J'espère que ça t'aide pour comprendre
By: Aurélien
Date: 2006-06-16
Time: 14:50

Re: Affichage conditionnel + suppression block

Oups petit problème. Ne prend pas en compte le message ci-dessus.

Voilà le truc corrigé :

Ce dernier td :
<td class="colonne_centree"><input type="checkbox" name="[bloc.nom_checkbox_fusionner.val;block=tr;bmagnet=td]" /></td>

En fait ce que je veux, c'est garder toutes les lignes (ya toujours des données dedans). Par contre cette colonne ne contient pas forcément des données car elle est optionnelle.

Vais faire un petit schéma en espérant que ca va t'aider :

tableau avec le fameux td :

____________________________________
|                 |          |           |          |
|                 |          |           |          |
|                 |          |           |          |
|                 |          |           |          |
|                 |          |           |          |
|                 |          |           |          |

il y a donc 4 colonnes.

Maintenant, si il n'y a pas de données dans la derniere colonne, je veux que mon tableau resemble à ça :

____________________________
|                 |          |           |
|                 |          |           |
|                 |          |           |
|                 |          |           |
|                 |          |           |
|                 |          |           |

donc supprimer la dernier colonne mais pas les lignes.
(je crois que TBS ne permet pas de lefaire via les blocks).

J'espère que ça t'aide pour comprendre
By: guillaume
Date: 2006-06-16
Time: 15:16

Re: Affichage conditionnel + suppression block

je te propose cette solution :
Template :
<tr>
  <td class="[bloc_tableau.decale;block=tr]">[bloc_tableau.valeurs_tableau]</td>
  <td class="colonne_centree"><input type="radio" name="tableau_resultats_radio" /></td>
  <td class="colonne_centree"><input type="checkbox" name="[bloc_tableau.nom_checkbox_modifier]" /></td>
  <td class="colonne_centree"><input type="checkbox" name="[bloc_tableau.nom_checkbox_fusionner]" />[onshow_bt[bloc_tableau.$];block=td;when '[bloc_tableau.nom_checkbox_fusionner]'!='']</td>
</tr>
La balise [bloc_tableau.$] est importe pour créer autant de block différent que de ligne. Sinon, les block onshow_bt seront lié entre eux.

exemple:
$dd = array( 'decale' => 'd',    'valeurs_tableau' => 'vt','nom_checkbox_modifier' => 'mcm',
        'nom_checkbox_fusionner' => '', //si non vide, la colonne est affiché
);
$data = array();
for ($i = 1;$i<=10;$i++) {
    $d = array();
    foreach ($dd as $id=>$v) {
        if ($v)
            $d[$id] = $v.$i;
        else
            $d[$id] = false;
    }
    $data[] = $d;
}
$TBS = new clsTinyButStrong();
$TBS->LoadTemplate('page.html');
$TBS->MergeBlock('bloc_tableau','array',$data);
$TBS->Show();
By: Aurélien
Date: 2006-06-16
Time: 15:28

Re: Affichage conditionnel + suppression block

ok merci je vais essayer ça.
By: Aurélien
Date: 2006-06-16
Time: 16:04

Re: Affichage conditionnel + suppression block

non dsl mais ça marche pas : il m'affiche une seule ligne dans la dernière colonne. Et ce peu importe si il y a des valeurs dans le tableau nom_checkbox_fusionner.

Merci quand même du coup de main.

Je vais tester avec un booleén. Si j'y arrive, je viendrais poster ma solution.
By: Aurélien
Date: 2006-06-16
Time: 16:42

Re: Affichage conditionnel + suppression block

Bon ça y est j'ai réussi. En fait j'utilise pas vraiment un booléen mais presque. Voila le html :
    <tr>
        <td class="[bloc_tableau.decale.val;block=tr]">[bloc_tableau.valeurs_tableau.val;block=tr]</td>
        <td class="colonne_centree"><input type="radio" name="tableau_resultats_radio" /></td>
        <td class="colonne_centree"><input type="checkbox" name="[bloc_tableau.nom_checkbox_supprimer.val;block=tr]" /></td>
        <td class="colonne_centree"><input type="checkbox" name="[bloc_tableau.nom_checkbox_fusionner.val;block=tr]" />[affiche_colonne_fusionner;magnet=td]</td>
    </tr>

et dans le php, on teste si le sous-tableau nom_checkbox_fusionner est vide ou non, si oui alors affiche_colonne_fusionner = '' sinon affiche_colonne_fusionner='autre chose'

Voilà. En tout cas merci de votre aide
By: Aurélien
Date: 2006-06-16
Time: 17:00

Re: Affichage conditionnel + suppression block

Je rajoute encore une chose :
si vous ne souhaitez pas que la valeur de affiche_colonne_fusionner soit affichée lorsqu'il y a des données, il suffit de mettre en commentaire cette partie :

<!-- [affiche_colonne_fusionner;magnet=td] -->

voila.