IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Optgroup & ses options


Sujet :

Langage PHP

  1. #1
    Membre à l'essai Avatar de Kinnie
    Femme Profil pro
    Étudiante en alternance
    Inscrit en
    Novembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiante en alternance

    Informations forums :
    Inscription : Novembre 2015
    Messages : 9
    Points : 10
    Points
    10
    Par défaut Optgroup & ses options
    Bonjour à tous,

    Je dispose de deux tables : user et user_service. Chaque user est assigné à un service (dans la table user_service) par le champ 'group_id'. J'effectue donc deux requêtes, une première me permettant de récupérer tous les services dans user_service, je fais ensuite une boucle où j'appelle notamment une autre fonction qui effectue la requête récupérant les user du service courant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    // ------------------------------------------------------------------------
    	/**
    	 * Fonction qui récupère tout d'abord les services existants
    	 * Appel ensuite, pour chaque service, de la fonction get_user_service(),
    	 * afin d'assigner au service tout ses utilisateurs
    	 */
    	public function get_services()
    	{
    		// On execute la requête qui récupère tout les services
    		$this->db->select('id, description');
    		$lst_services = $this->db->get('user_service');
     
    		// On boucle sur la liste des services récupérés
    		foreach($lst_services->result() as $service) {
    			$description = $service->description;
    			$id_service = $service->id;
     
    			// On passe l'id du service en paramètre à la méthode get_user_service
    			// On récupère le résultat de la requête de la méthode
    			$service->lst_user = $this -> get_user_service($id_service);
     
    		}
     
    		/*echo "<pre>";
    		print_r($lst_services->result());
    		echo "</pre>";*/
     
    		return $lst_services->result();
    	}
     
    	// ------------------------------------------------------------------------
    	/**
    	 * Fonction qui récupère tout les utilisateurs d'un service
    	 * Appelée par la fonction get_services()
    	 */
    	public function get_user_service($id_service)
    	{
    		$this -> db -> select('user.id, group_id, username');
    			$this -> db -> from('user');
    			$this -> db -> where('group_id', $id_service);
    			$user = $this -> db -> get();		
     
    		return $user->result();
    	}
    Voici ensuite comment j'affiche ma liste. Les optgroup sont représentés par le nom des services, et chacune de leurs options par les utilisateurs contenu dans le service.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <!-- Multiple select ; attribution des droits -->
    		<div class="form-group">
    			<label for="optgroup" style="display: inline-block;">Attribution des droits :</label>
     
    			<select name="droits[]" id='optgroup' multiple='multiple'>
     
    				<?php
    				foreach ($services_user as $service) { ?>
     
    				<optgroup data="<?php echo $service -> id ?>" label="<?php echo $service -> description; ?>">
     
    					<?php
    					foreach ($service->lst_user as $user) { ?>
    					<option value="<?php echo $user -> id ?>"><?php echo $user -> username; ?></option>
    					<?php
    					}
    					?>
     
    				</optgroup>
     
    				<?php
    				}
    				?>
     
    			</select>
     
    		</div><!-- /form-group -->
    L'affichage est niquel, l'ajout également. Mais dans mon controller, lorsque j'affiche $_POST, j'obtiens le tableau droits[] contenant uniquement les options sélectionnées.

    Mon but :
    - Si le service entier est sélectionné, insérer dans la base de données dans le champ "droit" une chaîne de caractère avec G:[id du group(service)];U:[id premier user de ce service];U[id deuxième user de ce service];G:[id du deuxième group(service)] etc ..
    - Si seul quelques utilisateur sont sélectionnés, insérer dans la bdd une chaîne de caractères avec U:[id premier user];U[id deuxième user]; etc ...

    Ma question est la suivante : est-il possible de récupérer l'optgroup également afin d'atteindre mon but, par exemple dans un tableau multidimensionnel ou autre ?

    En vous remerciant d'avance

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Si je comprends bien, tu voudrais rendre l'optgroup sélectionnable en fait ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre à l'essai Avatar de Kinnie
    Femme Profil pro
    Étudiante en alternance
    Inscrit en
    Novembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiante en alternance

    Informations forums :
    Inscription : Novembre 2015
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Hello,

    En fait l'optgroup est déjà sélectionnable. Dans ma liste, lorsque je clique sur le groupe et non pas un utilisateur, tout le groupe se rajoute, donc niquel.
    Pour placer le contexte, l'utilisateur peut donner des droits à des user à un module. Il dispose donc d'un formulaire comprenant une liste de jQuery Multiselect.

    Admettons j'ai user 1, user 2 et user 3 dans le service Informatique (id 1), et user 4, user 5 dans le service Comptabilité(id 2).

    - Si l'utilisateur sélectionne user 1, user 2 et user 5, tout est niquel, lors de l'ajout dans la base de données après mon insertion dans le champ de ma table j'ai bien "U:1;U:2;U:5"
    - Si l'utilisateur sélectionne le service Comptabilité alors j'ai user 4 et user 5 (en somme tout les user contenu dans ce groupe) qui se rajoutent dans la liste. Mais je n'arrive pas à trouver un traitement qui me permettrait de savoir si le service entier est sélectionné ET récupérer sa valeur. Car du coup à l'insertion, je n'ai que ça : "U:4;U:5" alors que j'aimerai rajouter le groupe comme ceci : "G:2;U:4;U:5"

    Je ne sais pas si cela est plus clair mais n'hésitez pas à me demander plus

Discussions similaires

  1. Comment configurer ses options d'alimentation ?
    Par soumdistar dans le forum Windows XP
    Réponses: 3
    Dernier message: 11/02/2013, 16h53
  2. Probleme avec CopyHere et ses options
    Par enboule dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 07/11/2011, 16h02
  3. [Prototype] Vider un select de ses options
    Par Niki59 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 09/10/2009, 10h35
  4. Eclipse : Ses Options D'aide
    Par bathof dans le forum Eclipse C & C++
    Réponses: 8
    Dernier message: 24/09/2008, 20h02
  5. Commande sort et ses options
    Par devAd dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 28/11/2006, 11h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo