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 :

Problème sur select liste déroulante


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 312
    Points : 74
    Points
    74
    Par défaut Problème sur select liste déroulante
    Bonjour

    Sur une page Essai_SE.php je créé une liste déroulante comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <form id="formulairetest" method="post" action="Essai_SE.php">
    		<select name="employe">
    		<option value="2">Manh-linh</option>
    		<option value="3">Titouam</option>
    		<option value="4" selected>Antoine</option>
    		<option value="5">Morgane</option>
    		</select>
    	<?php 
             if(isset($_POST['employe'])) 
             { 
             echo htmlentities($_POST['employe']); 
             } 
    	?>
    </form>
    Je n'ai pas l'affichage de ma sélection
    j'ai fait une erreur de code ?
    Merci pour vos réponses

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    j'ai fait une erreur de code ?
    Dans le code, non, pas vraiment, dans la conception, oui, parce que tu refuses (comme dans tes discussions précédentes) de comprendre que PHP agit coté serveur et qu'il ne peut pas prédire l'avenir : à savoir quels éléments l'utilisateur va sélectionner !

    Je t'invite vivement à lire quelques tutoriels sur les échanges client serveur pour comprendre quand intervient PHP et quand peuvent être pris en compte les choix de l'utilisateur...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre habitué Avatar de rinuom99
    Étudiant
    Inscrit en
    Août 2007
    Messages
    260
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 260
    Points : 171
    Points
    171
    Par défaut
    pour voir l'affichage tu dois ajouter un bouton submit pour valider le formulaire comme suite

    <input type="submit" name="Valider">
    ou utiliser la technologie AJAX et je te conseil le tutoriel suivant ici
    Si tu peux voir détruit l'ouvrage de ta vie.
    Et sans dire un seul mot te mettre à rebâtir,
    Tu seras un Homme, mon fils.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Ou alors si tu veux déclencher la soumission du formulaire sans bouton submit, en sélectionnant simplement une option, tu peux faire ceci :
    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
    <?php
    if (isset($_POST['selection'])) 
    {
    echo htmlentities($_POST['selection']);
    }
    ?>
    <form action="#" method="post">
    <select name="selection" onchange="this.form.submit()">
    <option value="0">Choisissez...</option>
    <option value="1">un</option>
    <option value="2">deux</option>
    <option value="3">trois</option>
    <option value="4">quatre</option>
    </select>
    </form>
    Dans ce cas c'est l'instruction onchange="this.form.submit()" qui soumet le formulaire (si javascript est activé).

  5. #5
    Membre à l'essai
    Profil pro
    Développeuse Web
    Inscrit en
    Octobre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse Web

    Informations forums :
    Inscription : Octobre 2011
    Messages : 23
    Points : 24
    Points
    24
    Par défaut
    Comma l'a bien dit Bovino, php ne peut pas prédire l'avenir... ta page se charge sans rien de selectionné et là, ton PHP a DEJA été exécuté... C'est pas parce qu'il est écrit après dans ton code qu'il s'executera après. Là ton $_POST est vide puisque rien n'a été envoyé.

    la solution de ABCIWEB est nikel (mais heu le onChange devrait pas plutôt être dans le select pas dans l'option ?) mais sinon, si tu veux juste afficher le choix, pourquoi utiliser PHP ? Tu peux aussi bien faire ça en javascript en récuperant ta valeur et en l'affichant dans une div. Un truc comme par ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <form id="formulairetest" method="post" action="Essai_SE.php">
    		<select name="employe" onchange="document.getElementById('selected_item').innerHTML = this.value">
    		<option value="2">Manh-linh</option>
    		<option value="3">Titouam</option>
    		<option value="4" selected>Antoine</option>
    		<option value="5">Morgane</option>
    		</select>
    </form>
     
    <div id="selected_item"></div>
    Note que de toutes façons là ça va afficher 2, 3, 4, 5 et pas les noms hein

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 312
    Points : 74
    Points
    74
    Par défaut
    Merci pour ta réponse
    Mais j'ai besoin de récupérer le selected_item pour le mettre en variable, car après je dois faire des requetes Sql sur une BD pour extraire des infos.
    Je ne vois pas comment récuperer le selected_item
    Encore merci pour votre aide

  7. #7
    Membre à l'essai
    Profil pro
    Développeuse Web
    Inscrit en
    Octobre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse Web

    Informations forums :
    Inscription : Octobre 2011
    Messages : 23
    Points : 24
    Points
    24
    Par défaut
    Bien alors le seul moyen est de soumettre le formulaire et de l'envoyer à une page PHP qui traite les données reçues du formulaire (soit les variables superglobales contenues dans $_POST).

    Si tu as besoin de NE PAS changer/recharger la page, il te faut du AJAX, sinon juste submit et envoi à traitement_formulaire.php par ex. ou encore à la même page si tu as besoin de recharger la même, comme dans l'exemple de ABCIWEB.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 312
    Points : 74
    Points
    74
    Par défaut
    Non je n'ai pas besoin de recharger la page
    j'ai regarder le tuto Ajax mais je n'arrive pas à récupérer la sélection
    j'ai fait ce code, mais après je ne sais plus

    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
    <script type='text/JavaScript'>
    	 		function getXhr(){
                    var xhr = null; 
    				if(window.XMLHttpRequest) // Firefox et autres
    				   xhr = new XMLHttpRequest(); 
    				else if(window.ActiveXObject){ // Internet Explorer 
    				   try {
    			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			            } catch (e) {
    			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			            }
    				}
    				else { // XMLHttpRequest non supporté par le navigateur 
    				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    				   xhr = false; 
    				} 
                       return xhr
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    			function go(){
    			var xhr = getXhr()
    				// On défini ce qu'on va faire quand on aura la réponse
    				xhr.onreadystatechange = function(){
    					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    					if(xhr.readyState == 4 && xhr.status == 200){
    						alert(xhr.responseText);
    					}
    				}
    				xhr.open("GET","ajax.php",true);
    				xhr.send(null);
    			}
    </script>

  9. #9
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut
    Bonjour Vanessa
    Citation Envoyé par Vanessa48 Voir le message
    Non je n'ai pas besoin de recharger la page
    j'ai regarder le tuto Ajax mais je n'arrive pas à récupérer la sélection
    j'ai fait ce code, mais après je ne sais plus
    Comment dire ...
    d'abord, dans ton script, tu as deux fonctions uniquement... si tu ne les appelles pas, elles sont en mémoire mais ne s’exécutent jamais... il faut que tu les appelles à un moment ou à un autre dans ton code...

    ensuite, si tu veux envoyer la valeur de ton option sélectionnée, il faut la passer (ou la récupérer) dans ta fonction go() (celle qui envoie tes données côté serveur) et l'envoyer à ta page ajax.php sous une forme "?clé=valeur")
    comme c'est écrit dans le tuto...
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open("GET","ajax.php?cle=valeur",true);
    Enfin, je ne sais pas quel est ton code d'ajax.php, mais si tu veux faire un alert de la réponse de l'appel Ajax (ligne 29 de ton code), il faut que la page ajax.php retourne quelque chose
    (du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "Coucou je reviens du serveur";
    en fin de ton code php)...
    Cela t'aide-t-il à comprendre ?
    My daughter, my laptop, my bike and my double-sticks...

  10. #10
    Membre à l'essai
    Profil pro
    Développeuse Web
    Inscrit en
    Octobre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse Web

    Informations forums :
    Inscription : Octobre 2011
    Messages : 23
    Points : 24
    Points
    24
    Par défaut
    Moi je comprend rien à ce code ^^
    Pour AJAX j'utilise une fonction que je trouve plus courte et plus lisible avec un appel xmlhttp.open au lieu de xhr.open... (Mais pour être franche xhr je sais pas ce que c'est héhé)

    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
    function charge_ajax(str)
    {
     
    if (str=="")
      {
      document.getElementById("contenu_dynamique").innerHTML="";
      return;
      }
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("contenu_dynamique").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open('GET', "ajax.php?ma_variable="+str);
    xmlhttp.send();
    }
    Dans cet exemple il te faut une div appelée "contenu_dynamique" dans laquelle sera le contenu renvoyé par ajax.php et évidemment, l'info que tu veux envoyer à ajax.php doit être l'argument lors de l'appel à la fonction...

Discussions similaires

  1. [AC-2003] Problème de tabulation sur une liste déroulante
    Par maringot dans le forum Access
    Réponses: 3
    Dernier message: 07/03/2014, 20h26
  2. Redirection sur selection liste déroulante
    Par Rouskof dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 08/03/2013, 14h01
  3. Problèmes entités sur une liste déroulante liée
    Par Trezegoals dans le forum Doctrine2
    Réponses: 0
    Dernier message: 24/08/2012, 11h13
  4. [AC-2007] Problème de filtrage sur une liste déroulante
    Par theuma dans le forum Access
    Réponses: 0
    Dernier message: 23/05/2011, 10h30
  5. Réponses: 4
    Dernier message: 16/06/2005, 16h37

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