Categories > TinyButStrong general (FR) >

Condition d'affichage

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: al
Date: 2007-11-19
Time: 11:45

Condition d'affichage

Bonjour!

J'utilise magnet pour conditionner mon affichage. Voici mon code  
<TR>
          <TD valign="top"  >
          <a href='[bl.lien;block=tr]'><u>[bl.titre] [Voir la page]</u>
          </a><br />
      [bl.description;magnet=tr]<br /><br />                      </TD>
                       
</TR>
Lorsque ma requête est nulle, je souhaite ne pas afficher ce block. J'ai déjà essayé d'utiliser magnet dans la balise <a> mais ça me donne un erreur. Ce code me permet de cacher le lien et le titre mais pas la description qui me donne ceci : TinyButStrong Error in field [bl.description...].

Alors je souhaite avoir votre aide sur ce problème.
Merci d'avance
By: Skrol29
Date: 2007-11-19
Time: 13:30

Re: Condition d'affichage

Attention : la paramètre "block" est sensible à la casse. TBS n'a peut être pas bien identifié les balises <TR>.

Normalement, si la requête ne retourne pas d'enregistrement, le bloc ne devrait pas être affiché du tout. Peux-tu vérifier les données avec lesquelles tu fusionne ton bloc "lien" ?
By: al
Date: 2007-11-20
Time: 06:09

Re: Condition d'affichage

Bonjour!
Ce que je ne comprend pas c'est que les 2 presmiers ne s'affichent pas alors que celui qui contient le magnet ne peut pas être caché.

Merci
By: Skrol29
Date: 2007-11-21
Time: 14:23

Re: Condition d'affichage

Oui, c'est bisarre. Peux-tu poster une partie plus grande de ton modèle et aussi une partie du code PHP ?
By: al
Date: 2007-11-22
Time: 06:09

Re: Condition d'affichage

Slt !

Voici mon code, la solution que j'ai opté en ce moment est de cacher l'erreur par noerr dans le champ description mais je pense que ce n'est pas la vrai solution.

Mercoi d'avance.


*********************************HTML**************************************

<TABLE  align="center" cellSpacing=0 borderColor=#cccccc  
style="border-style:dotted; " >
<TBODY>
          <TR>
                  <TD height="20" valign="top"> <span class="Head2">Recherche sur le site </span></TD>
          </TR>
          <TR>
                  <TD height="34" valign="top" >
                        <form  method="post" action="index.php?w=script&f=search3.php" style="margin:0px ">
                            <input type="text" name="Mot" size="20">
                            <input type="Submit" name="mmt" value="Ok" />
                            <input type=hidden name=page value=recherche.htm><br />
                        </form>   
                </TD>
          </TR>
          <TR>
          <TD height="82" align="right" valign="top">
          <br /><strong>[blk.val]</strong><br /><hr color="#660033" width="500" /><br /></TD></TR>
          <TR>
              <TD valign="top">
                <TABLE cellSpacing=0 cellPadding=0 width=100% border=0 >
                <TBODY>
                    <TR>
                      <TD valign="top"  >
                       <a href="[bl.lien;block=tr]"><u>[bl.titre]   [Voir la page]</u> </a><br />
                       [bl.description;magnet=tr;noerr]<br/><br />
                      </TD>
                    </TR>
                </TBODY></TABLE>
            </TD>
         </TR>
</TBODY></TABLE>

*******************************PHP***************************************

                    $query = "SELECT distinct count(lien) FROM recherche WHERE motsCles LIKE '%$Mot%' OR titre LIKE '%$Mot%'";
                        $result = mysql_query($query);
                        $row = mysql_fetch_row($result);
                        $Nombre = $row[0];
                       
                    // Si aucun enregistrement n'est retourné, on affiche un message adéquat
                    //
                      if ($Nombre == "0") {
                      $msg_txt = 'Résultat de votre recherche :' .$Nombre.' page(s) trouvée(s)';
                      $TBS->LoadTemplate(TPL_ADMIN_PATH.'recherche.htm');
                      $TBS->MergeBlock('bl',$cnx_id,$query) ;
                      $TBS->MergeBlock('Nombre','array',array($Nombre)) ;
                      $TBS->MergeBlock('blk','array',array($msg_txt)) ;
                                           
                    }
                  
                    // Sinon, on affiche le nombre d'enregistrements correspondant
                    // et les résultats eux-mêmes

                    else {
                        $query = "SELECT distinct lien,titre,description FROM recherche WHERE motsCles LIKE '%$Mot%' OR titre LIKE '%$Mot%' ";
                        $result = mysql_query($query);
                          $TBS->LoadTemplate(TPL_ADMIN_PATH.'recherche.htm');
                        $res = $row[0];
                        $msg_txt = 'Résultat de votre recherche :' .$Nombre.' page(s) trouvée(s)';
                        $TBS->MergeBlock('bl',$cnx_id,$query) ;
                        $TBS->MergeBlock('Nombre','array',array($Nombre)) ;
                        $TBS->MergeBlock('blk','array',array($msg_txt)) ;
                          
                    }
By: Skrol29
Date: 2007-11-26
Time: 02:12

Re: Condition d'affichage

Salut Al,

Tu peux faire beaucoup plus simple.

Déjà quand tu veux fusionner une variable seule, pas besoin de passer par un TBS->MergeBlock(). Sois tu définie ta variable comme globale, et tu coup tu peux l'afficher avec nu [var.xxx], soit tu utilise un MergeField() qui est beacoup plus rapide qu'un MergeBlock().

Ensuite tu peux définie un seul bloc avec une section normale, et une section spéciale qui s'affiche uniquement quand i n'y a pas de données.

PHP:
$query = "SELECT distinct lien,titre,description FROM recherche WHERE motsCles LIKE '%$Mot%' OR titre LIKE '%$Mot%' ";
$TBS->MergeBlock('bl',$cnx_id,$query) ;

HTML:
<TABLE  align="center" cellSpacing=0 borderColor=#cccccc 
style="border-style:dotted; " >
  <TBODY>
    <TR>
      <TD height="20" valign="top"><span class="Head2">Recherche sur le site </span></TD>
    </TR>
    <TR>
      <TD height="34" valign="top" ><form  method="post" action="index.php?w=script&f=search3.php" style="margin:0px ">
          <input type="text" name="Mot" size="20">
          <input type="Submit" name="mmt" value="Ok" />
          <input type=hidden name=page value=recherche.htm>
          <br />
        </form></TD>
    </TR>
    <TR>
      <TD height="82" align="right" valign="top"><br />
        <strong>Résultat de votre recherche : [bl.#] page(s) trouvée(s)</strong><br />
        <hr color="#660033" width="500" />
        <br /></TD>
    </TR>
    <TR>
      <TD valign="top"><TABLE cellSpacing=0 cellPadding=0 width=100% border=0 >
          <TBODY>
            <TR>
              <TD valign="top"  ><a href="[bl.lien;block=TR]"><u>[bl.titre]   [Voir la page]</u> </a><br />
                [bl.description]<br/>
                <br />
              </TD>
            </TR>
            <TR>
              <TD valign="top"  ><u>[bl;block=TR;nodata]</u> aucune page trouvée.<br/>
                <br />
              </TD>
            </TR>
          </TBODY>
        </TABLE></TD>
    </TR>
  </TBODY>
</TABLE>

Le nombre d'enregistrements retournés peut être affiché avec [bl.#] ou peut aussi être récupéré côté PHP avec
$Nombre = $TBS->MergeBlock('bl',$cnx_id,$query) ;