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 :

Comment récupèrer la valeur d'une liste


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 93
    Par défaut Comment récupèrer la valeur d'une liste
    bonjour
    je débute en php
    J'essaye de récupèrer la valeur d'une liste sachant que la liste est Oui ou Non
    En fonction de la valeur sélectionnée je fais apparaitre d'autres champs
    merci pour votre aide
    Ci-dessous mon code
    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
     
    <form method="post" />	
    <?php
       	?>
    	<label>Astreinte : </label>
    	<select name="astreinte">
    	<option value="NON" selected="selected">NON</option>
    	<option value="OUI">OUI</option>
    	</select>
     
    </form>
    	<?php
    	$astreinte=$POST['astreinte'];
    	test($astreinte);
    	?>
    <?php
    }
     
     
    function test($astreinte)
    {
     
    if ($astreinte=="OUI") 
    	{
    	?>
    	</select>
    	<label>De : </label><input type="texte" name="hastreinte" value=""/>
    	<label>Au : </label><input type="texte" name="hastreinte" value=""/>
    	</select>
        <?php
    	}

  2. #2
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Ton code n'est pas complet (il manque un else); dans l'éditeur, il y a une icône qui sert à insérer du code : ; ensuite, dans ton <form>, il n'y a pas d'action et enfin dans ton action, il n'y a pas de <form> (on a tout de suite un <select>)...

  3. #3
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonsoir,

    PHP est un protocole déconnecté, l'internaute envoi une requête au serveur, le serveur lui envoi la réponse. À chaque fois cela implique le rechargement complet de la page.

    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
     
    <html>
    <body>
    <form method="post" action="">
        <fieldset>
            <select name="civilite">
                <option value="M.">M.</option>
                <option value="Mme">Mme</option>
                <option value="Mlle">Mlle</option>
            </select>
            <label for="nom">Nom :</label><input type="text" id="nom" name="nom" />      
            <input type="submit" name="submit" value="Valider" />
        </fieldset>
    </form>
    <?php
    if(isset($_POST['submit'])){
        printf('Bonjour %s %s', $_POST['civilite'], $_POST['nom']);
    }
    ?>
    </body>
    </html>
    Si tu veux modifier tes éléments en fonction d'un choix dans la liste, tu dois utiliser javascript et peut-être AJAX si nécessaire.
    http://siddh.developpez.com/articles/ajax/#LIV-A

  4. #4
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ThomasR Voir le message
    Si tu veux modifier tes éléments en fonction d'un choix dans la liste, tu dois utiliser javascript et peut-être AJAX si nécessaire.
    http://siddh.developpez.com/articles/ajax/#LIV-A
    Je ne suis pas d'accord ; j'ai déja fait cela en pur PHP (C'était juste un essai pour répondre au besoin de quelqu'un)

  5. #5
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    J'ai oublié de repréciser "sans rechargement de page", c'est évident, merci.

  6. #6
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 93
    Par défaut ça marche
    merci thomas pour ton efficacité
    ça marche

  7. #7
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 93
    Par défaut Autre interrogation
    Le souci est le suivant :
    Quand je sélectionne le OUI dans la liste déroulante, les labels s'affichent bien mais le OUI n'est pas conservé dans la liste déroulante, il reprend la valeur non.
    J'ai fait un selected=selected mais cela ne fonctionne pas.

    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="" />	
      <fieldset>
     
    	<select name="astreinte">
    	<option value="NON"<?php if ($astreinte=="NON"){echo "selected='selected'";}?>/>NON</option>
    	<option value="OUI"<?php if ($astreinte=="OUI"){echo "selected='selected'";}?>/>OUI</option>
    	</select>
     
    	<input type="submit" name="submit" value="Valider" />
     
      </fieldset>
    </form>
    	<?php
    	if(isset($_POST['submit'])){
        $astreinte=$_POST['astreinte'];
        }
    	test($astreinte);
    }
     
     
    function test($astreinte)
    {
    if ($astreinte=="OUI") 
    	{
    	?>
    	</select>
    	<label>De : </label><input type="texte" name="hastreinte" value=""/>
    	<label>A : </label><input type="texte" name="hastreinte" value=""/>
    	</select>
        <?php
    	}
    }
    ?>

  8. #8
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Par défaut
    Désolé de te dire ça mais tu es loin du compte... Y rien de bon, ni en php, ni en html, il faut tout jeter ...

    Il faudrait que tu comprennes d'abord que php permet au serveur d'envoyer une page au client. Mais une page html, ce n'est pas une page qui se modifie en live suite à une action du client... côté client.

    Il faut aussi que tu lises les docs, par exemple en ce qui concerne les variables $_POST (et non $POST). La doc php est celle-ci, mais vu le code, tu as besoin de lire aussi ce tuto html.

    Il faut également que tu comprennes qu'une balise, ça s'ouvre et ça se ferme. Idem pour les parenthèses. Et la balise <form>, elle ne se ferme qu'une seule fois, pas 2 comme tu as fait (une première fois en écrivant <form method="post"/> et une seconde en écrivant "</form>") . Ensuite pourquoi un select pour des balise <input> dans ta fonction "test". Bref c'est tout faux et j'en passe.

    Donc tu ne peux pas le faire comme ça sur la même page sauf si tu jongles avec les variables $_POST, mais pour le faire, le mieux serait avec Ajax. Mais je ne te conseille pas d'attaquer Ajax avant de maîtriser correctement html puis php puis javascript. Donc à dans 6 mois si tout va bien

    Bref pour schématiser et te donner une piste - c'est juste pour t'illustrer le fonctionnement en mode "php only" avec un code ... basique un peu limite voire :

    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
    <?php
     
    // Tu es obligé de jongler avec les variables de session pour récuperer les $_POST durablement au cours des envois succcessifs
    // de cette même page au client au travers des formulaires
    session_start() ;
     
    // Là tu récupères d'entrée de jeu les résultats du submit des formulaires ssi définis
    $_SESSION['astreinte']		= (isset($_POST['astreinte']))? $_POST['astreinte'] : $_SESSION['astreinte']  ;
    $_SESSION['astreinte_1']	= (isset($_POST['astreinte_1']) )? htmlspecialchars( $_POST['astreinte_1']) : NULL ;
    $_SESSION['astreinte_2']	= (isset($_POST['astreinte_2']) )? htmlspecialchars( $_POST['astreinte_2']) : NULL ;
     
    // Ton serveur envoie le formulaire de demande d'astreinte au client si cela n'a pas été fait
    if ( !isset ($_POST['astreinte']) && !isset( $_SESSION['astreinte'] ) ) {
    	echo '<form method="post">
    	<label>Astreinte : </label>
    		<select name="astreinte">
    			<option value="NON" selected="selected">NON</option>
    			<option value="OUI">OUI</option>
    		</select>
    		<input type="submit" value="Next" />
    	</form>';
    }
    else {
     
    	echo '<br/>Choix client de l\'astreinte =  ' . $_SESSION['astreinte'] ;
     
    	// Ensuite, c'est un NOUVEAU formulaire et non une modification du formulaire que tu as deja envoyé
    	// (Pour faire cela, il faudrait donc passer par du javascript)
    	if ( $_SESSION['astreinte'] == "OUI"  && !isset( $_SESSION['astreinte_1'] ) && !isset( $_SESSION['astreinte_2'] )) { // || !isset( $_POST['astreinte_1'] ) )  {  // || !isset( $_POST['astreinte_2'] ) )  {
    		echo '<form method="post" >
    			<label>De : </label><input type="texte" name="astreinte_1" value=""/>
    			<label>Au : </label><input type="texte" name="astreinte_2" value=""/>
    			<input type="submit" value="Type_astreinte" />
    		</form>';
    	}
    	else{
    		echo '<br/>Astreinte = ' . $_SESSION['astreinte'] ;
    		if ($_SESSION['astreinte_1']) echo '<br/>Astreintes = ' . $_SESSION['astreinte_1'] . ' , ' . $_SESSION['astreinte_2'] ;
    		echo '<br/>on passe à la suite';
    	}
    }
     
    ?>
    Essayes de jouer avec, changer les paramètres, comprendre les sessions etc...

  9. #9
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut naroco

    Tu as fais une erreur ci-dessous car tu as repris tel quel l'exemple qu'on t'as donné ... mais c'était un exemple ... faut un peu adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(isset($_POST['submit'])){
    $astreinte=$_POST['astreinte'];
    }
    Faut remplacer $_POST['submit'] par $_POST['astreinte'] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(isset($_POST['astreinte']) && ($_POST['astreinte'] == 'OUI' || $_POST['astreinte'] == 'NON')) {
      test($_POST['astreinte']);
    }
    J'ai un peu modifié ton code.
    J'ai rajouter 2 vérifications car le paramètre peu prendre que 2 valeurs : Soit OUI, soit NON
    Puis j'appel directement la fonction test(), il me semble inutile d'utiliser cette variable $astreinte.
    -> Soit la conditition est VRAI : On déclenche la fonction
    -> Soit on ne fait rien.

    Après ça, je te conseils de placer ta fonction -> function test($astreinte) {bla bla bla} avant la balise <form>, je dirais même avant tout code HTML (avant le doctype - <html> etc ...).
    Une fonction PHP fait partie des traitements, ça doit être inclus avant la couche présentation/graphique/interface

    Ensuite, va surement revoir ce que fait ta fonction test(), car elle génère 2 champs de type text qui portent le même nom hastreinte. Ca c'est pas possible

    Attention aussi à la syntaxe car tu rajoute des accolades de trop à chaque fois. (c'est peut être une erreur juste ici, m'enfin ...).


    Citation Envoyé par laurentSc Voir le message
    dans l'éditeur, il y a une icône qui sert à insérer du code
    Bis
    N'oubli pas de placer tes code dans les "conteneurs" (BBCode) ... C'est étudié pour

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/11/2009, 12h25
  2. comment récupérer les valeurs d'une liste déroulante
    Par paolo2002 dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 27/06/2008, 21h05
  3. comment récupérer la valeur d'une liste dans un servlet
    Par marwanos dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 11/04/2007, 01h58
  4. Réponses: 4
    Dernier message: 13/11/2006, 18h49
  5. Réponses: 4
    Dernier message: 07/08/2006, 18h01

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