Categories > TinyButStrong general (FR) >

[fr] Affichage conditionnel des données d'un tableau

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Denis
Date: 2003-09-16
Time: 11:12

[fr] Affichage conditionnel des données d'un tableau

Bonjour,

Je souhaite afficher des données présentes dans un tableau (liens internet) à partir d'une sélection liste déroulante (thèmes), elle-même issue d'un tableau. Bien sur, chaque sélection de la liste déroulante doit afficher une extraction différente du tableau de données.
Comment dois-je procéder ?

Pour l'instant, j'arrive à remplir ma liste déroulante, et récupérer ma sélection.

J'ai parcouru les exemples, mais ne trouve pas la solution.
Encore une fois, merci par avance.

By: Skrol29
Date: 2003-09-16
Time: 13:19

Re: Affichage conditionnel des données d'un tableau

Hello Denis,

(Small translation : Denis wants to make a dynamic table. The row of the tables depend of the selection in the list box itself buildt bynamicaly)

This forum is a good exemple to present a solution.
In the frame above, there is a list-box with the forum' names.
This list is built dynamically.
There is also the table of the threads for the selected forum.

Basically it's simple : the list box is inside an Html  form and return the forum id to the script. There is a default id for the first entrance.
The table is based on the forum id.

I hope it has helped.
By: Denis
Date: 2003-09-16
Time: 13:31

Re: Affichage conditionnel des données d'un tableau

Bien entendu, j'ai tenté de m'inspirer du forum avant de poster, mais mes capacités son très limitées...:)
Si je comprends bien, sans frames, ce n'est pas réalisable ?
Je teste encore.. avec des frames
merci
By: Skrol29
Date: 2003-09-16
Time: 13:36

Re: Affichage conditionnel des données d'un tableau

Non, non pas besoin de frame. Tu peux tout à fait faire le truc dans une seule page Html.

Il se trouve que le forum rafraichi les 2 frames du desous après avoir changé de forum, mais tu peux ignorer ça pour ton pb.

By: Denis
Date: 2003-09-16
Time: 14:58

Re: Affichage conditionnel des données d'un tableau

Je sèche lamentablement... help

//--- EXEMPLES DE DATAS DES ARRAYS (en include dans mon cas)
$array_matiere[] = array("matiere_id"=>"INFORMATIQUE","matiere_libelle"=>"INFORMATIQUE");
$array_matiere[] = array("matiere_id"=>"FORMATION","matiere_libelle"=>"FORMATION");

$array_liens[] = array("lien_intitule"=>"Association Française de Normalisation (AFNOR)","lien_url"=>"www.afnor.fr","lien_description"=>"Vous y trouverez notamment une base de données très utile concernant les normes AFNOR et des renseignements sur l'évolution des normes ISO 9000. ","lien_theme"=>"INFORMATIQUE");
$array_liens[] = array("lien_intitule"=>"CANAM","lien_url"=>"http://www.canam.fr/docs/index_canam.html","lien_description"=>"Un site incontournable en ce qui concerne la création d'entreprise et sa gestion au quotidien.","lien_theme"=>"FORMATION");


//------ LE CODE HTML

<html>
<head>
<META http-equiv='Content-Type' content='text/html; charset=ISO-8859-1'>
<title>Liens</title>
</head>
<body bgcolor='white' text='black' link='blue' vlink='purple' alink='red' leftmargin='0' marginwidth='0' topmargin='0' marginheight='0'>
<table class='contact' style='margin-left:30;' align='left' width='680' cellpadding='0' cellspacing='0'>
<tr><td width='680' height='35'>Liens internet</td></tr>

<tr>
<td width='680' colspan='4'>
<form method="post" name="frm_condition" id="matiere_id" onChange=" ???? ">
  <div align="center">Sélectionnez une matière dans la liste et cliquez sur 'Afficher'
    <select name="lst_matiere" class="normal" id="select3">
           <option value="[blk1.matiere_id]">[blk1.matiere_libelle;block=opt]</option> 
    </select>
  </div>
</form>
</td>
</tr>

<td width='680' colspan='4'>
<table>
  <tr>
    <td class='lignecontact' width="480">[blk2.lien_intitule;block=row]</td>
    <td class='lignecontact' width="100">[blk2.lien_theme;if [var.matiere_id]='[blk1.matiere_id]'</td>
    [var.matiere_id]
  </tr>
</table>
</td>
</tr>

<tr>
<td class='nbpagescontact' width='680' colspan='4' height='6'>
<table>
      <tr>
      <td class='nbpagescontact' width='80'>[blk2.#] liens</td>
    <td class='nbpagescontact' width='30' >Page</td> 
    <td class='nbpagescontact' width='3'><a href="[sys.script_name]?PageNum=[pg.#]&RecCnt=[var.RecCnt]">[pg.#;block=td]</a>[var.PageNum;if [val]=[pg.#];then '<' ;else '']</td>
    </tr>   
</table>
</td>
</tr>
</table>
</body>
</html>

//--- LE CODE PHP
<?
include_once("tbs_class.php");
include_once("./fichiers/data_themes.php");        // ARRAY THEMES DES LIENS
include_once("./fichiers/data_liens.php");        // ARRAY DES LIENS

//--- Valeur par défaut
if (array_key_exists("PageNum",$_GET)) {
  $PageNum = $_GET["PageNum"] ;
} else {
    $PageNum = 1 ;
} ;

//--- Valeur par défaut
if (array_key_exists("RecCnt",$_GET)) {
  $RecCnt = intval($_GET["RecCnt"]) ;
} else {
    $RecCnt = -1 ;
} ;

//--- Nbre de lignes par page
$PageSize = 15 ;

//--- Chargement du template
$TBS = new clsTinyButStrong ;
$TBS->LoadTemplate("liens.html") ;

//--- Fusion du block par page
$TBS->MergeBlock("blk1",$array_themes);
$RecCnt = $TBS->MergeBlock("blk2",$array_liens,"",$PageSize,$PageNum,$RecCnt) ;

//--- Calcul du nombre de page
$PageCnt = ceil($RecCnt / $PageSize) ;

//--- Affichage de la liste des pages
$TBS->MergeBlock("pg","num",$PageCnt) ;
$TBS->Show() ;
?>


Je ne sais pas comment valider le changement sur le OnChange et comment filtrer mes données et les réafficher...

C'est surement l'âge qui me ramollit le cerveau
A+
By: Skrol29
Date: 2003-09-16
Time: 17:54

Re: Affichage conditionnel des données d'un tableau

Salut,

Pour ton problème de changement :
<select ... OnChange="m_Selection()">
+ un Javascript (non testé)
function m_Selection() {
  x = frm_condition.lst_matiere.options[frm_condition.lst_matiere.selectedIndex].value ;
  window.location = '[sys.script_name]?matiere=' + x ;
}
Attention, pour que le JavaScript fonctionne bien, fait bien attention à ce que des attributs "name" et "id" du formulaire et de ses contrôles soient égaux.

Pour ton problème de sélection.
La difficulté c'est que tu utilises des données enregistrées dans un tableau. Il n'existe donc pas de système tout fait qui puisse extraire un sélection d'enregsitrements comme pour une base de données.
Il va donc falloir que tu programme une chtite fonction PHP qui te retourne un tableau filtré en fonction du tableau principal et de l'id matière.
Je te conseil de laisser la gestion des pages de coté avant d'avoir terminé ce pb.
By: Denis
Date: 2003-09-16
Time: 23:36

Re: Affichage conditionnel des données d'un tableau

Encore une fois merci pour la réponse, les conseils et la qualité de TBS.
Je m'accroche..