Categories > TinyButStrong general (FR) >

[fr] template multi-colonnes

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: lucky
Date: 2004-08-25
Time: 22:14

[fr] template multi-colonnes

Salut, j'aime beaucoup ton travail sur TBS, mais je n'ai pas trouvé de moyen de faire un tableau multi-lignes, multi-colonnes avec des mises en forme de couleurs par lignes. Peux-tu m'aider stp...
By: Skrol29
Date: 2004-08-26
Time: 01:22

Re: [fr] template multi-colonnes

Salut,

C'est pas très dur si tu as compris le principe des multi-colonnes avec le paramètre serial. Il y a un exemple dédié sur la page des exemples.

Pour avoir la mise en forme de couleur par ligne, il suffit d'ajouter un seconde ligne au bloc, identique à la première mais avec la modification que tu shouaites. C'est comme pour l'aternance de couleur sur les block normaux. Il y a aussi un exemple là dessus.
By: lucky
Date: 2004-08-26
Time: 09:46

Re: [fr] template multi-colonnes

Oui j'avais bien regardé l'exemple mais il semble ne pas me convenir puisque pour un vrai template multi-colonnes on ne connais pas à l'avance le nombre de colonnes. Alors que dans ton exemple il y en a trois.
By: lucky
Date: 2004-08-26
Time: 09:50

Re: [fr] template multi-colonnes

En fait j'ai besoin de réaliser un tableau qui aura tantôt 1, 2 ou 3 colonnes identiques avec des données variables. Le but est de le faire avec un seul template, pour l'instant j'ai été obligé d'en réaliser trois différents.
By: Skrol29
Date: 2004-08-26
Time: 10:04

Re: [fr] template multi-colonnes

Je comprend pas bien.
C'est quoi qui détermine le nombre de colonne ?
By: lucky
Date: 2004-08-26
Time: 10:26

Re: [fr] template multi-colonnes

En fait c'est pour un tableau de tarifs pour un site de location de serveur de jeux. Voici l'exemple généré avec tbs:
<table border="1" align="center" cellpadding="2" cellspacing="0">

  <tr bgcolor="#CACACA" align="center">
     <td width="25%"> <strong>Prix</strong> </td>
     <td width="25%"> <strong>Unreal 2004</strong> </td>
     <td width="25%"> <strong>Quake III</strong> </td>

     <td width="25%"> <strong>Steam</strong> </td>
  </tr>
  <tr bgcolor="#E6E6E6">
    
    <td>1&nbsp;&euro;</td>
     <td align="center">15</td>
     <td align="center">19</td>

    <td align="center">2</td>
  </tr><tr bgcolor="#F0F0F0">
    <td>2&nbsp;&euro;</td>
     <td align="center">2</td>
     <td align="center">7</td>
     <td align="center">4</td>

  </tr><tr bgcolor="#E6E6E6">
    
    <td>5&nbsp;&euro;</td>
     <td align="center">2</td>
     <td align="center">80</td>
    <td align="center">8</td>
  </tr><tr bgcolor="#F0F0F0">
    <td>10&nbsp;&euro;</td>

     <td align="center">2</td>
     <td align="center">80</td>
     <td align="center">18</td>
  </tr>
  <tr>
     <td></td>
     <td bgcolor="#F0F0F0" colspan="3" align="center"><i>Nb de slots par jeu</i></td>

  </tr>
</table>

seulement dans le même écran on peut changer d'offre et ne choisir qu'un, deux ou trois jeu (donc  1, 2 ou 3 colonnes) ce qui doit imposer à mon template d'être dynamique au niveau du nombre de colonnes. Actuellement je ne suis arrivé qu'à dupliquer les templates...
By: Skrol29
Date: 2004-08-26
Time: 10:40

Re: [fr] template multi-colonnes

Pour faire ce genre de tableau, moi j'utilise plusieurs MergeBlock().
- 1 MergeBlock() qui multiplie le nombre de colonne sur la 1° ligne des titres.
- 1 MergeBlock() qui multiplie le nombre de colonne sur la 2° ligne (fond gris foncé).
- 1 MergeBlock() qui multiplie le nombre de colonne sur la 3° ligne (fond gris foncé).
- 1 MergeBlock() qui multiplie le nombre de lignes.

Ca fait beaucoup de MergeBlock mais les 3 premiers sont simples et se font avec les mêmes données.
By: lucky
Date: 2004-08-26
Time: 10:45

Re: [fr] template multi-colonnes

Super sympa de répondre aussi vite. Alors j'ai pensé à ta solution hier soir mais je n'ai pas réussi à la faire fonctionner. C'est pour cela que je t'ai contacté d'ailleurs. Je remet en forme mon exemple et je te le renvoie.
By: lucky
Date: 2004-08-26
Time: 11:18

Re: [fr] template multi-colonnes

Me revoici, avec l'exemple qui me semble bon mais ne fonctionne pas avec tbs

le code:
---------
<?php
    require_once "../prive/param/inc_appli.php";
    require_once REP_TBS."tbs_class.php" ;

    $TBS=new clsTinyButStrong();
    $TBS->LoadTemplate('test2jeu.htm') ;

    $Bloc1[0]["JeuN"]="[var.jeu1]";
    $Bloc1[1]["JeuN"]="[var.jeu2]";
    $Bloc34[0]["NbSlotN"]="[blk2.NbSlot1]";
    $Bloc34[1]["NbSlotN"]="[blk2.NbSlot2]";
    $pourcentN="33%";
    $TBS->MergeBlock('blk1',$Bloc1);
    $TBS->MergeBlock('blk3',$Bloc34);
    $TBS->MergeBlock('blk4',$Bloc34);
    // ce bloc n'est pas substitué par tbs
    $Bloc2[0]["NbSlot1"]="a";
    $Bloc2[0]["NbSlot2"]="b";
    $Bloc2[0]["tar_CoutHT"]=1;
    $Bloc2[1]["NbSlot1"]="c";
    $Bloc2[1]["NbSlot2"]="d";
    $Bloc2[1]["tar_CoutHT"]=2;
    $TBS->MergeBlock('blk2',$Bloc2);
    //pas de substitution de ces variables pour le show
    $jeu1="tata";
    $jeu2="titi";
    $TBS->Show() ;
?>

le fichier test2jeu.htm :
--------------------------
<table border="1" align="center" cellpadding="2" cellspacing="0">
  <tr bgcolor="#CACACA" align="center">
     <td width="[var.pourcentN]"> <strong>Prix</strong> </td>
     <td width="[var.pourcentN]"> <strong> [blk1.JeuN;block=td] </strong> </td>
  </tr>
  <tr bgcolor="#F0F0F0">
     <td>[blk2.tar_CoutHT;block=tr]&nbsp;&euro;</td>
     <td align="center">[blk3.NbSlotN;block=td]</td>
  </tr>
  <tr bgcolor="#E6E6E6">
     <td>[blk2.tar_CoutHT;block=tr]&nbsp;&euro;</td>
     <td align="center">[blk4.NbSlotN;block=td]</td>
  </tr>
  <tr bgcolor="#FFCFB9">
     <td colspan="5">[blk2;nodata]Il n'y a pas de liste de tarifs disponible.</td>
  </tr>
  <tr>
     <td></td>
     <td bgcolor="#F0F0F0" colspan="2" align="center"><i>Nb de slots par jeu</i></td>
  </tr>
</table>

Je ne comprends pas l'erreur on dirais qu'après les première substitutions celle du bloc2 et des variables ne s'effectuent pas.
By: lucky
Date: 2004-08-26
Time: 11:33

Re: [fr] template multi-colonnes

Je me suis trompé de ligne pour le reply to post donc je t'envoie ceci pour te signaler la mise à dispo de ma question
By: Skrol29
Date: 2004-08-26
Time: 11:54

Re: [fr] template multi-colonnes

salut,

Tout d'abord, les données qui contiennent des balises TBS ne sont pas substituée car elles sont protégées par défaut. C'est à dire que que les caractères "[" sont remplacés par leur équivalent HTML. C'est un vérrou de sécurité. Pour dévérouiller, il faut utiliser le paramètre 'protect=no'.

Mais tu n'as ps besoin d'utiliser des données avec des balises TBS.
Voici coment tu peux faire :
En plus, cet exemple gère les colspan.
PHP:
$Jeux[] = array("id"=>1,"nom"=>"Jeu1");
$Jeux[] = array("id"=>2,"nom"=>"Jeu2");
$Data[] = array("cout"=>125.33,"slot_1"=>"a","slot_2"=>"b","slot_3"=>"c");
$Data[] = array("cout"=>255.99,"slot_1"=>"x","slot_2"=>"y","slot_3"=>"z");
$colspan1 = count($Jeux);
$colspan2 = count($Jeux)+1;
//On fusionne les colonnes
$TBS->MergeBlock('blk1',$Jeux);
$TBS->MergeBlock('blk2',$Jeux);
$TBS->MergeBlock('blk3',$Jeux);
//On fusionne les lignes
$TBS->MergeBlock('blk4',$Data);
HTML:
<table border="1" align="center" cellpadding="2" cellspacing="0">
  <tr bgcolor="#CACACA" align="center">
<td width="[var.pourcentN]"> <strong>Prix</strong> </td>
<td width="[var.pourcentN]"> <strong> [blk1.nom;block=td] </strong> </td>
  </tr>
  <tr bgcolor="#F0F0F0">
<td>[blk4.cout;block=tr]&nbsp;&euro;</td>
<td align="center">[blk4.slot_[blk2.id;block=td]]</td>
  </tr>
  <tr bgcolor="#E6E6E6">
<td>[blk4.cout;block=tr]&nbsp;&euro;</td>
<td align="center">[blk4.slot_[blk3.id;block=td]]</td>
  </tr>
  <tr bgcolor="#FFCFB9">
<td colspan="[var.colspan2]">[blk4;nodata]Il n'y a pas de liste de tarifs disponible.</td>
  </tr>
  <tr>
<td></td>
<td bgcolor="#F0F0F0" colspan="[var.colspan1]" align="center"><i>Nb de slots par jeu</i></td>
  </tr>
</table>
By: lucky
Date: 2004-08-26
Time: 12:12

Re: [fr] template multi-colonnes

re-salut,

Trop fort !!!
Je n'avais pas pensé à cela mais là je suis casquette, scotché sur le banc. Hé oui c'est si simple avec la solution. Merci beaucoup en tous cas pour ta super disponibilité (tu bosses pas pour un patron toi c'est pas possible). Félicitation aussi pour la simplicité de ton outil. J'ai vu sur une autre rubrique que tu envisages la v2. Je penssais qu'il serais sympa que la méthode show() puisse renvoyer le merge et que la methode loadtemplate() puisse accepter une chaîne contenant le template. On aurait ainsi plus de souplesse et de possibilité de bidouille :o)

By: Skrol29
Date: 2004-08-26
Time: 13:07

Re: [fr] template multi-colonnes

Je bosse bien pour un patron :)
Mais je réponds assez facilement aux différents problèmes donc ça ne me perturbe pas trop.

Show() n'a pas besoin de retourner le merge car la propriété Source le fait déjà.
Je ne compredn pas ce que tu veux dire par LoadTemplate() qui accepete une chaîne. Tu peux définir le template directement avec la propriété Source aussi.
By: lucky
Date: 2004-08-26
Time: 13:15

Re: [fr] template multi-colonnes

Je n'avais pas fait attention à cette propriété et pourtant j'avais lu ton manuel. En lecture/écriture elle répond tout à fait à mon besoin. Merci à toi