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) ;
|
|
Posting in progress.
Please wait...
|