Fork me on GitHub






Créer champs saisie liste deroulante avec options definies dans Admin
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
Hello !

Dans un module que je developpe j'aimerais pouvoir faire la chose suivante:

1/ Cote utilisateur:

Dans un formulaire de saisie creer un champs avec liste deroulante, dont les options sont definies dans l'admin du module.

2/ Cote admin:

Dans le formulaire d'admin du module definir les options qui seront affichees dans le champs mentionne ci-dessus, en entrant les valeurs separees par un "pipe" je suppose.

Je vais decortiquer certains modules qui proposent ce genre d'option pour comprendre, mais si quelqu'un pouvait de maniere simple me mettre sur la voie ça m'aiderait bien !

Merci !

Posté le : 06/09/2009 10:35

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Créer champs saisie liste deroulante avec options definies dans Admin
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
méditation écurie relève élève

Posté le : 06/09/2009 17:31

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Créer champs saisie liste deroulante avec options definies dans Admin
Team FrXoops
Inscrit: 14/05/2004 22:32
Messages: 2554
Bonjour
--------------
Tu trouveras plein d'exemple notamment dans mes modules, le tout est de décortiquer le code pour trouver ce que l'on cherche.

1 - une liste séparée par des pipe est une bonne idée, cependant si la liste est important il peut être préférable de la stocker dans une table, mais cela nécessite un formulaire de saisie (dans l'admin de mon module lexique il y a un onglet liste qui traite justement ce problème).

2 - En suite il faut savoir si tu veux récupérer dans la liste un identifiant ou la valeur affichée. sachant que si tu optes pour une liste avec des pipes, tes identifiants seront pat défaut 0,1,2,3.. dans l'ordre de ta liste et que tu ne pourras plus modifier cet ordre, seulement ajouter. L'option de la table permet d'avoir également les identifiants dans la table plus un champs ordre si tu le souhaite, ça permet des modification sans changer les identifiants.
Le choix de la tables me parait plus souple, mais plus complexe à mettre en œuvre. L'idéal serait que Xoops offre ce genre de fonctionnalité en natif, sujet sur lequel je travail et que je proposerait à l'occasion à l'équipe d xoops.
Bon je résume tu veux stocker la valeur affichée ou l'identifiant ?
Selon ta réponse je recherche le bout de code qui va bien.
JJDAI

Posté le : 06/09/2009 20:07

Ne pas perdre patience, même si cela semble impossible, c'est déjà de la patience.
Origami
Conseil des Sages
Sur gitHub
Partager Twitter Partagez cette article sur GG+
Re: Créer champs saisie liste deroulante avec options definies dans Admin
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
Merci de ton soutien !

Alors pour le nombre de valeurs on va dire de 2 à 10, il s'agit de définir quelques options c'est tout.

Et je récupère ensuite les valeurs, qui seront affichées dans une liste déroulante côté client afin qu'il choisisse.

:-o Lionel

Posté le : 06/09/2009 20:38

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Créer champs saisie liste deroulante avec options definies dans Admin
Team FrXoops
Inscrit: 14/05/2004 22:32
Messages: 2554
Oui mais côté client, lorsque l'utilisateur va choisir un élément dans la liste, tu vas enregistrer cet info ou l'utiliser pour autre chose. Hors tu as deux possibilité utiliser la valeur elle même ou son identifiant, cela dépent notamment du type de champs de la destination.

ex, je propose une liste de couleur pour le fond du site:
Bleu,jaune,rouge,pistache,violet

L'utilisateur chois pistache (c'est ma glace préférée !!!)

tu peu récupérer la valeur "pistache" ou l'id dans ces ce sera 3 (le premier étant le 0.

Selon la cas la liste ne construit légèrement différemment.

tu peux t'inspirer de la fonction suivante:
Citation :
/***************************************************************************
*
***************************************************************************/
function buildHtmlListString ($name, $list, $defaut = '',
$addBlanck = false,
$onChange = '',
$sep = ";"){
if (!is_array($list)){
$list = explode($sep, $list);
}else{

}

//echo "<hr>buildHtmlListString<br>{$onChange}<hr>";
$tselected = array();

if ($onChange <> ''){$oc = "onchange='{$onChange}'" ;}else{$oc='';}
$tselected [] = "<SELECT NAME='{$name}' {$oc}>";
if ($addBlanck){
$tselected [] = "<OPTION VALUE='' >";
}


for ($h = 0; $h < count($list); $h++){
$item = $list[$h];

if ($defaut == $item ) { $itemSelected = " selected";} else {$itemSelected = "";}

$tselected [] = "<OPTION VALUE='{$item}' {$itemSelected}>{$list[$h]}";
}
$tselected [] = "</SELECT>";

$obList = implode ("", $tselected);
return $obList;
}




Attention ne garde pas ce nom (buildHtmlListString ) sinon tu rentrerais en conflit avec un de mes modules si tu les utilises.

Les paramètre de cette fonction :

$name : le nom de la liste, celui retourner par le form lors de la validation du formulaire

$list : la liste de valeur avec un séparateur ";" par défaut. Tu peux passer aussi un tableau si tu préfère.

$defaut : la valeur par défaut la liste, probablement le choix effectuer lors de la dernière validation

$addBlanck : (troue ou fals) permet d'ajouter une valeur vide en premier selon les besoins.


$onChange : appel d'une fonction javascript quand on clique sur la liste déroulante, Doit avoir la valer de la balise html "onchange" (ex: "fonctionJavascript(param1,param2);"


$sep (par defaut ";") Separateur des item de la liste, lrs de l'appel a la fonction tu peux passer un pipe.


exemple d'appel à la fonction


$liste = buildHtmlListString ("lstChoix", "Bleu|Rouge|Vert|Pistache|Violet", 'Pistache', false, '',"|");

Echo $liste // ou assign("balise", $liste) pour smarty

J'espère être assez clair ?
JJDAI

Posté le : 06/09/2009 23:53

Ne pas perdre patience, même si cela semble impossible, c'est déjà de la patience.
Origami
Conseil des Sages
Sur gitHub
Partager Twitter Partagez cette article sur GG+
Re: Créer champs saisie liste deroulante avec options definies dans Admin
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
C'est bien la valeur qui m'intéresse.
Je vais étudier ce que tu me proposes.

Merci

Posté le : 07/09/2009 00:03

signé: LionHell
Partager Twitter Partagez cette article sur GG+
Re: Créer champs saisie liste deroulante avec options definies dans Admin
Team FrXoops
Inscrit: 14/05/2004 22:32
Messages: 2554
Bonjour

Cependant, il doit y avoir une fonction dans le core de xoops qui fait probablement la même chose voir mieux.
Il faudrait voir du côté des classes du dossier xoopsform.
Je vois qu'il y a une fonction "XoopsFormSelect" dans la classe "formselect.php", a mon avis serait plus judicieux.

ça devrait donner un truc comme ça:
Citation :

$liste = new XoopsFormSelect($caption, $name, $valueDefaut, $size, $multiple);

$liste->addOption($value, $name); // ajout des items dans ton cas $name $value
......

echo $liste.render(); // affichage de la liste


JJDAI

Posté le : 07/09/2009 12:30

Ne pas perdre patience, même si cela semble impossible, c'est déjà de la patience.
Origami
Conseil des Sages
Sur gitHub
Partager Twitter Partagez cette article sur GG+
Re: Créer champs saisie liste deroulante avec options definies dans Admin
Semi pro
Inscrit: 22/02/2004 20:41
Messages: 997
Bonjour,

tu devrais utiliser TDMCreate, tu construis une table avec les données que tu veux mettre dans ton select par exempe(id "int", nom "varchar"). Tu pourras rajouter des éléments à partir de l'admin, ils se rajouteront automatiquement dans ton select et tu construis une autre table qui va faire une liaison avec la table précédente par rapport à un champs de cette table. Cette table est inutile mais c'est pour obtenir le code. Tu vas obtenir le code du formulaire qui va se trouver dans la class et tu pourras l'adapter, tu vas également obtenir une administration. Mais faut faire attention à ne pas remplir n'importe quoi lors de la création des tables

++

Posté le : 07/09/2009 12:56
Partager Twitter Partagez cette article sur GG+
Re: Créer champs saisie liste deroulante avec options definies dans Admin
Semi pro
Inscrit: 13/04/2006 23:26
De Aix en Provence
Messages: 1751
Merci pour vos réponses. J'ai déjà utlisé XoopsFormSelect ça fonctionne.

Ca c'est coté utilisateur, j'ai créé un tableau de valeurs qui sert à alimenter la liste déroulante sans problème.

Ce qu'il me faut faire maintenant, c'est récupérer les valeurs saisies dans le formulaire de l'admin, séparées par pipe ou autre pour les mettres dans un tableau qui sera utilisé avec XoopsFormSelect pour les options.

Posté le : 07/09/2009 16:07

signé: LionHell
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

34 Personne(s) en ligne (23 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 34 | Plus ...