|
PhilGuen 995
| Posté : 20-11-2004 16:57
Bonjour à tous,
Je souhaite confectionner une liste à choix multiples dans le formulaire d'inscription (extension)
J'ai donc fait
//****************** Ajout pour ACB ************
$tmp=array(
"ACB marcheur"=>array('en'=>"ACB marcheur", 'selected'=>false),
"autre FFRP"=>array('en'=>"autre FFRP", 'selected'=>false),
"ACB cyclo"=>array('en'=>"ACB cyclo", 'selected'=>false),
"UVD"=>array('en'=>"UVD", 'selected'=>false),
"autre FFCT"=>array('en'=>"autre FFCT", 'selected'=>false),
"autre FFC"=>array('en'=>"autre FFC", 'selected'=>false),
"UFOLEP"=>array('en'=>"UFOLEP", 'selected'=>false),
"aucune"=>array('en'=>"aucune", 'selected'=>false),
);
$m->add_select('C5','Type de licence :', $tmp, true, 4, true);
$m->add_extender("C5", ""," plusieurs choix possibles avec CTRL");
//**********************************************
Ca fonctionne à l'affichage, mais ma variable $C5 prend "array" comme valeur. Faut-il faire un traitement complémentaire (l'inverse de split) sur C5 pour obtenir les choix "en clair" ?
J"ai essayé de rajouter
$C5=implode(",",$C5);
mais sans résultat
PS . Si je fais un seul choix, c OK ... $C5 prend bien le texte
Complément à ma question, comment fait-on pour avoir le résultat du choix, par exemple qd on modifie son compte.
J'affiche bien la liste des choix, mais celui (ou ceux) qui avait été selectionné dans le formulaire de création n'est pasen surbrillance.
Merci de votre aide
Philippe
Message édité par : PhilGuen
Message édité par : PhilGuen
Message édité par : PhilGuen
Message édité par : PhilGuen |  Profil E-mail www Citation
|
|
PhilGuen 995
| Posté : 20-11-2004 18:55
J'ai modifié de cette manière (on peut peut-être faire mieux)
//****************** Ajout pour ACB ************
switch ($C5) {
case "ACB marcheur":
$flag1="1";
break;
case "autre FFRP":
$flag2="1";
break;
case "ACB cyclo":
$flag3="1";
break;
case "UVD" :
$flag4="1";
break;
case "autre FFCT" :
$flag5="1";
break;
case "autre FFC" :
$flag6="1";
break;
case "UFOLEP" :
$flag7="1";
break;
case "aucune" :
$flag7="1";
break;
}
$tmp=array(
"ACB marcheur"=>array('en'=>"ACB marcheur", 'selected'=>$flag1),
"autre FFRP"=>array('en'=>"autre FFRP", 'selected'=>$flag2),
"ACB cyclo"=>array('en'=>"ACB cyclo", 'selected'=>$flag3),
"UVD"=>array('en'=>"UVD", 'selected'=>$flag4),
"autre FFCT"=>array('en'=>"autre FFCT", 'selected'=>$flag5),
"autre FFC"=>array('en'=>"autre FFC", 'selected'=>$flag6),
"UFOLEP"=>array('en'=>"UFOLEP", 'selected'=>$flag7),
"aucune"=>array('en'=>"aucune", 'selected'=>$flag8),
);
$m->add_select('C5','Type de licence :', $tmp, true, 4, false);
// $m->add_extender("C5", ""," plusieurs choix possibles avec CTRL appuyé");
//$C5=implode(",",$C5);
//**********************************************
Ca marche pour un choix unique, mais comment faire pour que ca marche en choix multiple? Ma variable prend "Array" comme valeur.
J'essaie de comprendre comment ca marche pour les groupes (en fait, c'est ce dont j'ai besoin), mais je n'arrive pas à trouver la différence avec ce que j'ai fait ... me manque le passage des valeurs de "add_group" dans "groupe", mais je ne trouve pas.
Help suis coincé !!!!!!!!!
Pendant que vous y êtes, est-ce qu'un "dev-team member" peut me dire où se trouve la vérification de l'obligation de saisir un champ. Je voudrais forcer l'utilisateur à faire un choix, mais sans qu'il y en ait un de préselectionné.
Merci de votre aide car je n'avance pas.
Bon dimanche
Philippe
Message édité par : PhilGuen |  Profil E-mail www Citation
|
|
hexagone 188
| Posté : 23-11-2004 16:47
Citation : PhilGuen
$m->add_select('C5','Type de licence :', $tmp, true, 4, false);
multiple
obligation de saisir un champ.
Message édité par : PhilGuen
voici les parametres de add_select (cf modules/sform/sform.php 5.0 Narval)
dans ton appel de add_select tu indiques:
$m->add_select('C5','Type de licence :', $tmp, true, 4, false);
ce qui correspond a:
nom: C5
en: "type de licence"
values: $tmp
obligation: true
size: 4
et multiple: false
donc change le dernier parametre en true si tu veux pouvoir faire du choix multiple
a+ |  Profil www Citation
|
|
PhilGuen 995
| Posté : 24-11-2004 17:45
Bonjour Hexagone et merci d'essayer de m'aider.
On est bien d'accord sur le paramètre à passer en true pour un choix multiple. L'exemple que je donnais était ce qui fonctionnait c a d le choix unique.
Mon pb est ensuite dans l'utilisation et le stockage de $C5.
En fait je voudrais retrouver un fonctionnement strictement identique à celui des groupes, mais ca coince au niveau du transfert du tableau en string.
Voici ce que j'ai fais exactement.
Dans sform/extend-user/extender/formulaire.php j'ai ajouté :
//***************************** Ajout pour ACB ***********************************
//$C5="ACB marcheur|ACB cyclo|UFOLEP"; // valeurs pour essais
if ($C5) {
$C5=" ".$C5; // pour résoudre le problème quand strpos est vrai mais = 0
if (strpos($C5,"ACB marcheur")) $flag1=1;
if (strpos($C5,"autre FFRP")) $flag2=1;
if (strpos($C5,"ACB cyclo")) $flag3=1;
if (strpos($C5,"UVD")) $flag4=1;
if (strpos($C5,"autre FFCT")) $flag5=1;
if (strpos($C5,"autre FFC")) $flag6=1;
if (strpos($C5,"UFOLEP")) $flag7=1;
if (strpos($C5,"aucune")) $flag8=1;
$C5=ltrim($C5); // pour annuler l'action de la ligne 44
// echo $C5; // pour vérifier
};
$tmp=array(
"ACB marcheur"=>array('en'=>"ACB marcheur", 'selected'=>$flag1),
"autre FFRP"=>array('en'=>"autre FFRP", 'selected'=>$flag2),
"ACB cyclo"=>array('en'=>"ACB cyclo", 'selected'=>$flag3),
"UVD"=>array('en'=>"UVD", 'selected'=>$flag4),
"autre FFCT"=>array('en'=>"autre FFCT", 'selected'=>$flag5),
"autre FFC"=>array('en'=>"autre FFC", 'selected'=>$flag6),
"UFOLEP"=>array('en'=>"UFOLEP", 'selected'=>$flag7),
"aucune"=>array('en'=>"aucune", 'selected'=>$flag8),
);
$m->add_select('C5','Votre licence : *', $tmp, true, 4, true);
$m->add_extender("C5", ""," plusieurs choix possibles avec CTRL appuyé");
//*************************************************************************** *********************
Cette partie fonctionne parfaitement
puis dans sform/extend-user/aff_formulaire.php, en espérant afficher le contenu de $C5 sou la forme d'une chaîne au format "choix1|choix2|choix4" j'ai ajouté ceci
//************************************* Ajout pour ACB *******************************
$C5 = implode("|",$C5);
//echo $C5;
$m->add_field('C5','Votre licence','$C5','textarea',false,255,5,"","");
//**************************************** Fin Ajout **********************************
la rien ne s'affiche à l'endroit prévu (pourtant le "echo $C5" renvoie bien "choix1|choix2|choix4)
et la variable $C5 enregistre "Array"
Enfin, si j'enlève les lignes de "aff_formulaire.php" et que dans la fonction "finishNewUser" de user.php j'ajoute ligne 198
$C5 = implode("|",$C5);
Warning: Bad arguments to implode() in c:\program files\easyphp\www\acbdescartes\user.php on line 198
Ca fait 3 jours que je suis la dessus alors je brule un cierge au nom de celui qui me dépanne
Amitiés à tous
Philippe
Message édité par : PhilGuen |  Profil E-mail www Citation
|
|
developpeur 24581
| |
PhilGuen 995
| |
Tribal-Dolphin 4374
| Posté : 25-11-2004 14:49
Choix multiple = Tableau
Tableau = Array
Accès au tableau = $C5[0] / $C5[1] / .......
Donc il faut que compte les valeur dans ton array :
$num = count($C5);
$i = 0;
while($i<= $num) {
$var.= $C5[$i];
$i++;
if($i<$num) { $var .= "|"; }
}
Code fait de tête, à adapter suivant le résultat |  Profil Citation
|
|
PhilGuen 995
| |
developpeur 24581
| |
PhilGuen 995
| |
developpeur 24581
| Posté : 26-11-2004 22:42
deux chose :
- un print_r($C5); te donnera le contenu exact de C$ (c'est bien pratique)
- le séparateur | est peut-être la source de tes erreurs (remplace le par une , un #, un autre truc quoi)
J'aessayerais de mon côté mais comme tu le dit / l'admin des groupes le fait ! |  Profil E-mail www Citation
|
|
PhilGuen 995
| Posté : 27-11-2004 10:09
Merci beaucoup DEV
J'avais essayé avec d'autres séparateurs.
En fait, j'ai l'impression que c'est le Array renvoyé par SFORM qui n'est pas valide (peut-être un pb dans la construction initiale du champ à choix multiple) car toutes les instructions PHP de manipulation de tableau essayées renvoient une erreur.
Et pourtant ca fonctionne avec les groupes !!!
Je vais faire d'autres essais cet ap midi, mais si tu trouves qq chose avant, merci beaucoup
Amitiés
Philippe |  Profil E-mail www Citation
|
|
PhilGuen 995
| |
developpeur 24581
| Posté : 27-11-2004 19:06
le formulaire passe effectivement par des Array (il ne peut pas faire autrement d'ailleur). Dans finishNewUser ton implode devrait marcher donc ? |  Profil E-mail www Citation
|
|
PhilGuen 995
| |
Aller à la page : [ 1 | 2 ] |