Categories > TinyButStrong general (FR) >

[Fr] selection dans une liste déroulante

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: TwoD
Date: 2004-07-06
Time: 17:23

[Fr] selection dans une liste déroulante

Bonjour,

j'utilise tbs 1.97.8

j'essaie desperemment de selectionner un item dans une liste déroulante, et rien à faire ça veut pas.

coté PHP j'ai ca:


//reccupération de ma liste d'editeurs
$req= 'select id, nom from editeurs';

//merge pour remplir ma liste deroulante
$TBS->MergeBlock('lstEd',$cnx,$req);

//tableau en cas de nouvelle serie
$tableau[]=('id_editeur'=>'1', 'serie'=>'');

//merge qui devrait seelctionner l'editeur avec la value 1
$TBS->MergeBlock('blk',$tableau);


cote HTML j'ai


<select>
  <option value="[lstEd.id]">[lstEd.nom;block=option]</option>
  <option>[blk.id_editeur;selected]</option>
</select>


Et là au lieu de selectionner le nom avec value à 1, il rajoute une entree avec pour nom 1 sans value de definie.

Si quelqu'un voit ou je peche???

Merci d'avance

By: Skrol29
Date: 2004-07-06
Time: 18:20

Re: [Fr] selection dans une liste déroulante

Salut,

Ce qui pêche c'est que tu ne dois pas utiliser un block supplémentaire pour la multi-sélection. La balise TBS avec le paramètre 'selected' doit être un champ simple fusionné avec une valeur simple (simple sélection) ou un tableau (multi-sélection).

Exemple: PHP :
$req= 'select id, nom from editeurs';
$TBS->MergeBlock('lstEd',$cnx,$req);
$id_sel = 1;
HTML :
<select>
  <option value="[lstEd.id]">[lstEd.nom;block=option]</option>
  <option>[var.id_sel;selected]</option>
</select>

By: TwoD
Date: 2004-07-06
Time: 21:51

Re: [Fr] selection dans une liste déroulante

En fait je pensais utiliser un block car dans certains cas, l'option à selectionner dépend du retour d'une requete....d'ou le block.

mon but étant d'utiliser un même template pour une nouvelle saisie, que pour une mise à jour. En selectionnant lors d'une création, l'editeur avec l'id 1, et lors d'une mise à jour l'éditeur correpondant à l'id sauvegardé.

Je ne sais pas si je suis très clair là..

et encore merci.
By: Skrol29
Date: 2004-07-06
Time: 21:59

Re: [Fr] selection dans une liste déroulante

Oui, dans ce cas, tu dois te débrouiller côté PHP pour mettre la bonne valeur dans l'id à sélectionner. Si première ouverture => id=1, sinon id= (id sélectionné).

C'est boucoup utilisé dans le source de ce forum.
By: TwoD
Date: 2004-07-07
Time: 12:42

Re: [Fr] selection dans une liste déroulante

Salut,

Bon ben en fait j'avais une balise mal fermée dans le code de mon template, ce qui perturbait la fusion.

Par contre du coup l'utilisation d'un block pour selectionner le bon id fonctionne. Pas besoin de passer par une variable.

merci encore
By: Skrol29
Date: 2004-07-07
Time: 13:43

Re: [Fr] selection dans une liste déroulante

Ca peut fonctionner mais il faut savoir que tu utilises un cas particulier des blocs. C'est le cas où il n'y a pas de définition de bloc, alors TBS fusionne seulemtent le premier enregsitrement.
By: TwoD
Date: 2004-07-23
Time: 09:38

Re: [Fr] selection dans une liste déroulante

Oupss

Je viens de remarquer que je ne t'avais remercier pour finir...

Merci encore

Voilà c'est fait
By: Coyote
Date: 2005-10-07
Time: 13:51

Re: [Fr] selection dans une liste déroulante

c'est pas super pratique comme système...
cela ne peut-il pas être amélioré... ???
By: Skrol29
Date: 2005-10-07
Time: 20:08

Re: [Fr] selection dans une liste déroulante

C'est quoi qui n'est pas pratique ?
By: Lionel
Date: 2005-10-21
Time: 15:15

Re: [Fr] selection dans une liste déroulante

Je partage un peu le sentiment de "Coyote". Imagine, le cas d'une gamme de produit:

- une table produit contenant, l'id, le code couleur (id_couleur) et le code provenance (id_provenance)
- une table avec le code couleur et le libellé
- une table avec le code provenance et le libellé

Je souhaite éditer ce produit.

Je "mergeBlock' la table couleur pour me faire une liste déroulante,
Je "mergeBlock' la table provenance pour me faire une liste déroulante,

Je rappelle mon article 'id' ( une seule réponse of course ):
MergeBlock ('article','mySQL',$query);
et j'aimerais que la couleur et la provenance actuelle soient directement préselectionnées dans chaque liste.

Comme l'a dit "twoD", il y a un bug qui fait que l'info se trouve dans 'article.id_couleur' et 'article.id_provenance' mais il n'est pas possible de l'utiliser pour préselectionner une option dans la liste: il ajoute la valeur d'Id en bas de la liste.

Dans ta réponse, tu dis qu'il faut que l'information se trouve dans des 'var' et, effectivement, cela fonctionne. Seul problème, je dois faire une requete supplémentaire dans mon code PHP juste pour aller chercher ces deux valeurs. Ce n'est pas une catastrophe mais c'est juste dommage de devoir refaire une requête alors qu'on a tout sous la main.

Qu'en penses-tu ?
By: Skrol29
Date: 2005-10-21
Time: 15:35

Re: [Fr] selection dans une liste déroulante

Je suis étonné que ça ne marche pas.
Ca devrait marcher mais avec des perf assez mauvaise puisqu'il va re-analyser les listes pour chaque enreg Article.

Je vais faire un test...
By: Lionel
Date: 2005-10-24
Time: 17:36

Re: [Fr] selection dans une liste déroulante

Voici un exemple simple pour les tests.
le code PHP (select.php):
<?php
include 'tbs_class.php';
// $liste représente la liste à afficher
$liste[]=Array('id'=>'001','besoin'=>'manger');
$liste[]=Array('id'=>'002','besoin'=>'boire');
$liste[]=Array('id'=>'003','besoin'=>'dormir');
// $reponse contient les choix de l'utilisateur pour l'ensemble du formulaire, dont celui de la liste $besoins
$reponse[]=Array('besoins'=>'002', 'désir'=>'005');
// fusion TBS
$TBS=new clsTinyButStrong;
$TBS->LoadTemplate('select.htm');
$TBS->MergeBlock('liste',$liste);
$TBS->MergeBlock('reponse',$reponse);
$TBS->Show();
?>

le fichier HTML (select.htm)
<html>
<body>
<form>
<select name="besoins">
<option value="[liste.id]">[liste.besoin;block=option]</option>
<option>[reponse.besoins;selected]</option>
</form>
</body>
</html>

Et donc, on se retrouve bien avec une valeur supplémentaire dans la liste (<option>002</option>). On voit bien que le tableau est correctement récupéré mais mal interprété par la fonction qui devrait attribuer le status 'selected' à l'option de valeur '002'.

Hope this help,

By: Skrol29
Date: 2005-10-25
Time: 10:24

Re: [Fr] selection dans une liste déroulante

Salut Lionel,

Ton exemple marche bien pour moi. "boire" est sélectionné et il n'y a que trois items dans la liste.
TBS version 2.05.2.
By: Lionel
Date: 2005-10-26
Time: 18:08

Re: [Fr] selection dans une liste déroulante

Ben finalement je suis passé par les 'var' mais je replongerai dednas dès que j'aurais terminé mon 'assisstant à la création de documents' prévu pour avant-hier évidemment.

Un grand merci pour ton soutien.