Gestion de Contenu, de Communauté et de groupes de travail collaboratif - Open Source, français, sécurisé, stable et performant

  • MODULES

    Pour étendre les nombreuses fonctionnalités disponibles de base - modules.npds.org est à votre disposition.

    Des modules complémentaires, une communauté de développeurs active, des forums pour vos questions ... NPDS  est aussi une plateforme de développement !
  • STYLES

    Vous cherchez des thèmes graphiques pour votre portail ou votre communauté : styles.npds.org est à votre disposition.

    Des thèmes du plus simple au plus sophistiqué. Des thèmes facilement modifiables et toujours en Open-Source - Laissez simplement parler votre imagination !
  • BIBLES

    La documentation indispensable pour personnaliser et exploiter toute la puissante de NPDS  est à votre disposition sur bible.npds.org.

    Vous pouvez participer à l'effort de documentation - rien de plus simple : contactez un membre de la Team de développement et nous vous ouvrirons un compte sur le Wiki !
Devenir membre    |    Identifiant : Mot de Passe : -
Au delà de la gestion de contenu 'classique', NPDS met en oeuvre un ensemble de fonctions spécifiquement dédiées à la gestion de Communauté et de groupes de travail collaboratif.
Il s'agit d'un Content & Community Management System (CCMS) robuste, sécurisé, complet, performant et parlant vraiment français.

Gérez votre Communauté d'utilisateurs, vos groupes de travail collaboratif, publiez, gérez et organisez votre contenu grâce aux puissants outils disponibles de base.
  • Multi langues (Français, Anglais, Allemand, Espagnol, Chinois)
  • Respect des standards : UTF8, XHTML, CSS, ...
  • Système de blocs avancés
  • Installation et administration complète et centralisée
  • Editeur HTML intégré
  • Gestionnaire de fichier en ligne
  • Gestion des groupes de membres
  • Ecriture collaborative de documents (PAD)
  • Forums évolués
  • Mini-sites (pour les membres et les groupes de travail)
  • Chat temp réel
  • Système de News et de rubriques complet (édition, révision, publication)
  • ...
Gratuit et libre (Open-Source), développé en PHP, NPDS est personnalisable grâce à de nombreux thèmes et modules et ne requiert que quelques compétences de base.
NPDS Workplace - groupe de travail collaboratif
 NPDS WorkSpace - tous l'univers du travail collaboratif.
Modéré par : developpeur jpb Jireck 
Index du Forum » » SFORM » » Liste à choix multiple  
2 pages [ 1 | 2 ]
AuteurListe à choix multiple
PhilGuen
986      

PhilGuen
  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
986      

PhilGuen
  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     

hexagone
  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
986      

PhilGuen
  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       
 

developpeur
  Posté : 24-11-2004 22:48

$C5bis=explode("|", $C5); pas implode ....

  Profil  E-mail  www  Citation   
PhilGuen
986      

PhilGuen
  Posté : 25-11-2004 08:28

tu es sur? C'est bien un tableau qui ressort du traitement par sform?

explode - Retourne un tableau de chaînes
implode -- Rassemble les éléments d'un tableau en une chaîne ...

c'est donc bien ce que je veux faire : transformer le tableau $C5 en une chaîne (et ca marche si je le mets dans aff_formulaire.php et que je fais un "echo $C5) pour l'enregistrer dans la table users_extend.

et dans la gestion des groupes c'est bien "if ($add_group) {$add_group=implode(",",$add_group);}" qu'on a dans admin/users.php.

Bon j'essaie qd mm mais pour le coup je n'y comprends plus rien

Merci de ton aide

Philippe




Message édité par : PhilGuen


  Profil  E-mail  www  Citation   
Tribal-Dolphin
4374       
 

Tribal-Dolphin
  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
986      

PhilGuen
  Posté : 25-11-2004 15:36

Citation : Tribal-Dolphin 
Choix multiple = Tableau
Tableau = Array


ca me rassure !!!!!!

Je n'ai pas besoin de connaître chaque élément du tableau, juste de transformer le tableau en une chaîne avant de l'enregistrer dans la table

donc pour transformer le tableau $C5 en une chaîne ....... $C5=implode("|",$C5) devrait fonctionner (et d'ailleurs ca fonctionne pour enregistrer les groupes dans admin/users.php puisqu'on utilise "if ($add_group) {$add_group=implode(",",$add_group);}" )

ALORS POURQUOI TANT DE HAINE ??? :Warning: Bad arguments to implode() in c:\program files\easyphp\www\acbdescartes\user.php on line 198



Message édité par : PhilGuen



Message édité par : PhilGuen


  Profil  E-mail  www  Citation   
developpeur
24581       
 

developpeur
  Posté : 25-11-2004 21:56

désolé / trop vite j'ai lut ...

  Profil  E-mail  www  Citation   
PhilGuen
986      

PhilGuen
  Posté : 26-11-2004 08:04

pas grave

Bon ... j'abandonne Doit y avoir une m.... dans le tableau retourné. Toutes les instructions PHP de manipulation de tableau que j'ai essayé retourne une erreur. Pourtant un echo $C5 me retourne bien "Array".

Si quelqu'un veut bien prendre 5 mn pour essayer de modifier le formulaire d'inscription en incluant un champ liste à choix multiples et en enregistrant le résultat sous forme de chaîne dans une des variables libres, je serais intéressé par son expérience.

Moi j'ai perdu trop de temps la dessus. Y a un bug quelque part dans SFORM et ca dépasse mes compétences.

Merci d'avoir essayé de m'aider

Bonne journée à tous

Philippe

Message édité par : PhilGuen



Message édité par : PhilGuen


  Profil  E-mail  www  Citation   
developpeur
24581       
 

developpeur
  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
986      

PhilGuen
  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
986      

PhilGuen
  Posté : 27-11-2004 17:40

Citation : developpeur

deux chose :

- un print_r($C5); te donnera le contenu exact de C$ (c'est bien pratique)



si je mets un print_r($C5) dans aff_formulaire.php, j'ai ceci : Array ( [0] => ACB marcheur [1] => ACB cyclo )
(d'ailleurs un $C5 = implode("|",$C5); echo $C5; donne le bon résultat)

si je le mets dans la fonction finishNewUser de user.php (avant enregistrement dans la table) j'ai "Array"


Le problème semble donc se trouver dans aff_ formulaire et / ou la validation du formulaire


Message édité par : PhilGuen


  Profil  E-mail  www  Citation   
developpeur
24581       
 

developpeur
  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
986      

PhilGuen
  Posté : 27-11-2004 20:11

dans finishNewUser

un $C5=implode("|",$C5); ligne 198 donne
Warning: Bad arguments to implode() in c:\program files\easyphp\www\acbdescartes\user.php on line 198

et un print_r($C5); renvoie "Array" au lieu du Array ( [0] =>selection1 [1] =>selection2 attendu.

Il y a donc une corruption de $C5 après le formulaire


Message édité par : PhilGuen


  Profil  E-mail  www  Citation   
Aller à la page : [ 1 | 2 ]
  
Sauter à :

Temps : 0.0255 seconde(s)