Categories > TinyButStrong general (FR) >

Afficher du code html selon l'état d'une variable

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Bewonder
Date: 2006-08-08
Time: 16:43

Afficher du code html selon l'état d'une variable

Bonjour, je suis novice et je m'arrache les cheveux.

J'ai une variable et je veux afficher du code si elle a une valeur précise (et pas si elle est nulle).

J'avais penser faire un truc comme çà :
<div>
[menug;block=div;when [var._SESSION.emplacement_menu]!='gauche']
<!-- code html -->
</div>

ou comme çà :
<div>
[onshow;if [var._SESSION.emplacement_menu]!='gauche';then ' ';magnet=div;mtype=m*m]
<!-- code html -->
</div>

Mais y'a rien qui marche, pffff, c'est vraiment pas évident.
Merci pour votre aide.
By: Bewonder
Date: 2006-08-08
Time: 17:49

Re: Afficher du code html selon l'état d'une variable

Voilà ma dernière tentative... infructueuse :
<td>
<!-- code html -->
[onload; block=td; when [var._SESSION.emplacement_menu]='gauche']
</td>

Ca ne marche touours pas...
By: Olivier
Date: 2006-08-08
Time: 18:19

Re: Afficher du code html selon l'état d'une variable

<div>
[onload_1;block=div;when [var._SESSION.emplacement_menu]!='gauche']

... ici code html du blok div
</div>

le block div sera visible seulement quand $_SESSION['emplacement_menu']!='gauche'  essai de voir si ça fonctionne mieux avec autre chose que 'gauche' genre 1 pour gauche

Olivier
By: Bewonder
Date: 2006-08-09
Time: 08:04

Re: Afficher du code html selon l'état d'une variable

En fait, mon premier exemple est pour une balise <td> mais j'ai réessayé la méthode pour un vrai <div>

<div>
[onload;block=div;when [var.GLOBALS.connect]=1]
<!-- code html -->
</div>

On doit afficher le code html lorsque la variable $connect est à 1

Et ça ne marche toujours pas... J'ai même mis la variable php en globale. Dois-je utiliser SMARTY par dépit ou continuer à perdre mon temps ?
By: olivier
Date: 2006-08-09
Time: 08:35

Re: Afficher du code html selon l'état d'une variable

Essayez de changer [var.GLOBALS.connect] par une variable simple... attention, le onload s'execute au moment du loadtemplate(). le $GLOBALS['connect'] est corectement initialisé avant ?
Essayez de remplacer le onload par onshow

Perso, j'utilise cette syntaxe très frequement et sans problème.

Pour ce qui est de SMARTY, je ne suis pas convaincu que ce soit plus simple.

Olivier
By: Bewonder
Date: 2006-08-09
Time: 08:54

Re: Afficher du code html selon l'état d'une variable

WOUINNNNNN !!!!

Je suis maudit, voilà mes changements :

dans le fichier html :
<div>
[onload;block=div;when [var.connect]=1]
<tr class="Style1">
  <td align="right">Soci&eacute;t&eacute; :</td>
  <td>
    <span class="Style10">&nbsp;&nbsp;[var.GLOBALS.societe]</span>
    <input name="societe" type="hidden" value="[var.GLOBALS.societe]">
  </td>
  <td align="right">Famille :</td>
  <td>
    <span class="Style10">&nbsp;&nbsp;[var.GLOBALS.famille]</span>
    <input name="selectFamillePrescripteur" type="hidden" value="[var.GLOBALS.famille]">
  </td>
</tr>
<tr class="Style1">
  <td colspan="4"><hr><input type="hidden" name="pro" value="1"></td>
</tr>
</div>

et dans le fichier php :
include ("../admin/systeme/config.php");
include('tbs/tbs_class.php');
$TBS = new clsTinyButStrong ;
if (isset($_SESSION['connect']) && ($_SESSION['connect']=="ok")) $connect=1;
else $connect="";
$GLOBALS['societe']="";
$GLOBALS['famille']="";
$TBS->LoadTemplate(''.$_SESSION[rep_image].'_accueil.htm');
$TBS->Show();

Y'a toujours un blème.
By: olivier
Date: 2006-08-09
Time: 10:25

Re: Afficher du code html selon l'état d'une variable

Voici les scripts et ça fonctionne

test.php
<?php
include('tbs_class.php');
session_start();
$_SESSION['connect']='ok'; /* modifier ici pour le test */
$TBS = new clsTinyButStrong ;

$GLOBALS['societe']="";
$GLOBALS['famille']="";
$TBS->LoadTemplate('test.html');
$TBS->Show();
?>

et test.html

page web
<div>
[onload;block=div;when [var._SESSION.connect;noerr]=='ok']
<tr class="Style1">
  <td align="right">Soci&eacute;t&eacute; :</td>
  <td>
    <span class="Style10">&nbsp;&nbsp;[var.GLOBALS.societe]</span>
    <input name="societe" type="hidden" value="[var.GLOBALS.societe]">
  </td>
  <td align="right">Famille :</td>
  <td>
    <span class="Style10">&nbsp;&nbsp;[var.GLOBALS.famille]</span>
    <input name="selectFamillePrescripteur" type="hidden" value="[var.GLOBALS.famille]">
  </td>
</tr>
<tr class="Style1">
  <td colspan="4"><hr><input type="hidden" name="pro" value="1"></td>
</tr>
</div>

Bien voila... que faire de plus :)

Olivier
By: Bewonder
Date: 2006-08-09
Time: 10:58

Re: Afficher du code html selon l'état d'une variable

J'ai testé différentes configurations d'organisation des éléments de mon fichier php, j'ai forcé l'initialisation de $connect à 1...
Et ça ne fonctionne toujours pas.

La seule idée qui me vient à l'esprit c'est que j'utilise la classe "tbs_class.php" alors que je tourne actuellement sous php 5.
Y aurait-il des incompatibilités ?
J'ai choisi cette classe car sur Internet on utilise des serveurs sous php 4. Je tablais sur une compatibilité ascendante.

En tout cas, merci pour le coup de main.
By: Bewonder
Date: 2006-08-09
Time: 11:08

Re: Afficher du code html selon l'état d'une variable

Si je remplace l'ancienne classe par la nouvelle... Ben pas de changements.
By: Bewonder
Date: 2006-08-09
Time: 11:33

Re: Afficher du code html selon l'état d'une variable

OK...

Bon, il semblerait que TBS analyse AUSSI les tags placés en commentaires HTML.

A côté de mon test subsistait un autre test TBS ente <!-- et --> qui a été interprêté et à foutu le bordel.

La simple suppression de ce commentaire a résolu mon problème.
Des fois je me les mordrais.

Donc, EXEMPLE A NE PAS SUIVRE :
<div>
[onload;block=div;when [var.connect]=1]
<!--[onshow;if [var.connect]=='';then ' ';magnet=div;mtype=m*m]-->   
code html
</div>

Merci encore, et à la prochaine question ;-)