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

PHP & Base de données Discussion :

Comment retirer d'un menu déroulant une sélection faite dans un autre menu déroulant


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 37
    Par défaut Comment retirer d'un menu déroulant une sélection faite dans un autre menu déroulant
    Bonjour à tous

    Je m'approche de vous pour avoir quelques conseils, je dois effectuer une mission un peu spécifique auprès de mon entreprise dans laquelle je suis en stage.

    et je bute sur un souci qui est le suivant

    j'ai 12 postes à pourvoir en fonction de tranches horaires et du nombre d'heures effectuées par personne dans la journée.

    Toutefois je bute dès le départ sur la chose suivante, imaginons la tranche horaire 12h-13h où j'ai 5 postes à pourvoir. (pour faire simple car après ça commence à être un peu tordu

    Dans le premier poste, j'ai un menu déroulant, je sélectionne la personne, ensuite pour le second poste, j'ai un menu déroulant dans laquelle je peux choisir une autre personne toutefois, je ne veux pas que la personne qui a été choisi pour le premier poste apparaisse pour le second poste (ou alors c'est des jumeaux ou la personne possède le don d'ubiquité )

    J'ai commencé à bidouiller avec mes maigres connaissances et j'ai quelque chose mais la personne sélectionnée n'est pas retirée du menu déroulant suivant et je dois faire la même chose pour les autres postes de la même tranche horaire (pour les autres tranches horaires on verra cela plus tard.

    Y'a t il un moyen de le faire ou ce n'est pas possible et je dois partir sur autre chose en sachant que je suis carrément néophyte sur du javascript ou de l'ajax par ex

    Merci de m'avoir lu et de vos futurs conseils

    Cordialement

    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
     
    <form method="POST" action="" target="">
    <select name="agent">
    	<?
    		mysql_connect("localhost",USER,PASS);
    		mysql_select_db(BASE);
    		$req="SELECT id_amplitudes,lunamdeb,id_agent_,nom,prenom,id_poste FROM amplitudes JOIN agents ON amplitudes.id_agent_=agents.id_agent JOIN autoriser ON autoriser.id_agent=agents.id_agent WHERE lunamdeb='12:00:00' AND id_poste=6";
    		$id=mysql_query($req);
    		$i=0;
    		while($resultat=mysql_fetch_row($id)) {
    			echo '<option value="'.$resultat[0].'">'.$resultat[3].' - '.$resultat[4].'</option>';
    			$i++;
    		}
    	?>
    </select>
    <input type="submit" value="valider" />
    </form>
     
    <select>
    	<?
    		if(isset($_POST['agent'])) {
    		$agent=mysql_real_escape_string($_POST['agent']);	
    		$req="SELECT id_amplitudes,lunamdeb,id_agent_,nom,prenom,id_poste FROM amplitudes JOIN agents ON amplitudes.id_agent_=agents.id_agent JOIN autoriser ON autoriser.id_agent=agents.id_agent WHERE lunamdeb='12:00:00' AND id_poste=7";
    		$id=mysql_query($req);
    		$i=0;
    		while($resultat=mysql_fetch_row($id)) {
    			echo '<option value="'.$resultat[0].'">'.$resultat[3].' - '.$resultat[4].'</option>';
    			$i++;
    		}
    		}
    	?>
    </select>

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Je m'approche de vous pour avoir quelques conseils
    Houlà, pas trop près quand même

    Ton problème se résous assez simplement avec JavaScript, imaginons qu'on choisisse jQuery et que les listes soient voisines (au sens DOM):
    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
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript">
    jQuery(function ($) {
        $('select').change(function () {
            var current_selection = $(this).val();
            $(this).siblings('select').each(function () {
                $('option', this).each(function () {
                    if ($(this).attr('value') == current_selection)
                        $(this).attr('disabled', 'disabled');
                });
            });
            $(this).attr('disabled', 'disabled');
        });
    });
    </script>
    <select name="a" id="input0">
        <option value="1">Jean</option>
        <option value="2">Jacques</option>
        <option value="3">Jeanine</option>
        <option value="4">Jeremy</option>
        <option value="5">Jade</option>
    </select>
    <select name="b" id="input1">
        <option value="1">Jean</option>
        <option value="2">Jacques</option>
        <option value="3">Jeanine</option>
        <option value="4">Jeremy</option>
        <option value="5">Jade</option>
    </select>
    <select name="c" id="input2">
        <option value="1">Jean</option>
        <option value="2">Jacques</option>
        <option value="3">Jeanine</option>
        <option value="4">Jeremy</option>
        <option value="5">Jade</option>
    </select>
    ça fait ton affaire ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 37
    Par défaut


    Je te rassure pas trop près non plus, je crois que tu n'a pas d'atour pour je fasse un rapprochement très très ....

    Je vais regarder ta solution et l'adapter à mes besoins, de mon côté j'ai cherché aussi et en bidouillant j'arrive pour l'instant à ce genre de solution

    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
     
    <form method="POST" action="" target="">
    <select name="agent">
    	<?
    		mysql_connect("localhost",USER,PASS);
    		mysql_select_db(BASE);
    		$req="SELECT id_amplitudes,lunamdeb,id_agent_,nom,prenom,id_poste FROM amplitudes JOIN agents ON amplitudes.id_agent_=agents.id_agent JOIN autoriser ON autoriser.id_agent=agents.id_agent WHERE lunamdeb='12:00:00' AND id_poste=6";
    		$id=mysql_query($req);
    		$i=0;
    		while($resultat=mysql_fetch_row($id)) {
    			echo '<option value="'.$resultat[2].'">'.$resultat[3].' - '.$resultat[4].'</option>';
    			$i++;
    		}
    	?>
    </select>
    <input type="submit" value="valider" />
    </form>
     
    <select>
    	<?
    		if(isset($_POST['agent'])) {
    		$agent=mysql_real_escape_string($_POST['agent']);	
    		$moins='SELECT id_agent,nom FROM agents WHERE id_agent NOT LIKE "'.$agent.'" GROUP BY nom ASC';
    		$req='SELECT id_amplitudes,lunamdeb,id_agent_,nom,prenom,id_poste FROM amplitudes JOIN agents ON amplitudes.id_agent_=agents.id_agent JOIN autoriser ON autoriser.id_agent=agents.id_agent WHERE lunamdeb='12:00:00' AND id_poste=7 AND id_agent NOT LIKE "'.$agent.'" GROUP BY nom ASC';
    		$id=mysql_query($req);
    		$i=0;
    		while($resultat=mysql_fetch_row($id)) {
    			echo '<option value="'.$resultat[2].'">'.$resultat[3].' - '.$resultat[4].'</option>';
    			$i++;
    		}
    		}
    	?>
    </select>
    Toutefois si je fais un écho sur $moins, ça marche impecc mais si je fais (comme sur le code ci-dessus) avec $req ça ne marche pas je pense que je dois avoir une erreur dans le positionnement du NOT LIKE ou un truc du genre.

    En attendant je vais regarder ton astuce et continuer à chercher la réponse à ce blocage et je te rassure j'essaie de me tenir éloigné

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Ce que je t'ai propose n'est ni une astuce ni une bidouille, c'est comme ça que j'aurais fait.

    Le problème se résous tout seul quand on pense coté client, si tu veux te casser la tête à le faire coté serveur, c'est toi qui voit

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 37
    Par défaut
    ^^ Je vois c'est vrai qu'on nous a pas appris spécialement à réfléchir côté client en plus javascript on nous l'a jamais enseigné c'est vraiment de l'apprentissage sur le tas et j'avoue avoir un peu de mal à comprendre même en lisant des tutos. (je sais la honte )

    Mais il y a des logiques qui ne le sont pas pour moi (ou alors faudrait qu'on me l'explique autrement mais sans le fouet ^^ ).

    Donc hop hop je vais regarder ça et faire ce que je peux pour avancer dans le javascript

  6. #6
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    C'est assez complexe coté serveur d'exclure successivement plusieurs valeurs de différentes listes (il faut penser à garder les listes en mémoire, à se souvenir de quels items on doit enlever, de gêrer les requêtes, les sessions etc.) alors que notre besoin est purement client: il s'agit d'impacter le comportement de l'interface après tout.

    La logique du script JS en exemple est en revanche toute simple: quand on sélectionne un item dans une liste, on désactive cet item dans toutes les autres listes adjacentes.

    JavaScript c'est plus simple qu'il n'y parait et une fois qu'on a commencé à comprendre, c'est en réalité plus compliqué qu'il n'y parait
    En d'autres termes, on est parfois effrayé par la complexité apparente du langage, et une fois qu'on est dedans et qu'on a commencé à avoir quelques résultats sympas, on se rends compte que la complexité qui nous effrayait au départ, c'est l'arbre qui cache la forêt et que pour comprendre, on va en ch*er. Mais honnêtement, ça vaut le coup.

    Alors pour t'éviter de crawler le web comme un débile, voici quelques ressources qui m'ont été très utiles:
    Ressources DVP

    Ressources externes

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/03/2013, 18h23
  2. Remplir un Spinner en fonction de la sélection faite dans un autre
    Par Yerffoj21 dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 02/04/2012, 00h46
  3. Comment faire défilier des ListView depuis une sélection ?
    Par pagoa dans le forum Composants graphiques
    Réponses: 6
    Dernier message: 10/02/2012, 22h25
  4. Réponses: 3
    Dernier message: 20/07/2009, 13h24
  5. Réponses: 2
    Dernier message: 24/08/2006, 11h33

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