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 mettre à jour Option Select dans un formulaire ?


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Points : 26
    Points
    26
    Par défaut Comment mettre à jour Option Select dans un formulaire ?
    Bonjour,

    Via ce formulaire, je choisis une année et j'affiche les éléments correspondants sur la page.
    Cela fonctionne correctement pour toutes les années sauf 2012, car je n'arrive pas à le sélectionner.

    Donc comment rajouter dynamiquement "selected" et bien le positionner dans le menu déroulant ?
    J'a testé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php if ( $options['anchoix] == 1 ) echo 'selected="selected"'; ?>
    sans succès.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <form id="annee" name=annee method="post" action="">
    <script type="text/javascript">function refresh(input) { input.form.submit(); }</script>
    <select name=anchoix onchange="this.form.submit()">
    <option value="2012">2012</option>
    <option value="2011">2011</option>
    <option value="2010">2010</option>
    <option value="2009">2009</option>
    <option value="2008">2008</option>
    </select> 
    </form>

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    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
    <script type="text/javascript">function refresh(input) { input.form.submit(); }</script>
    <form id="annee" name="annee" method="post" action="">
    	<select name="anchoix" onchange="this.form.submit()">
    <?php 	// de cette année jusqu'à 4 ans de moins
    		for($an_i=date('Y'); $an_i=(date('Y')-4); $an_i--)
    		{
    			// si cette année, ou année sélectionnée
    			if( $an_i==date('Y') || (isset($options['anchoix']) && $options['anchoix'==$an_i) ) {
    				$selected = ' selected="selected"';
    			} else {
    				$selected = '';
    			}
    ?>
    		<option value="<?php echo $an_i; ?>"<?php echo $selected; ?>><?php echo $an_i; ?></option>
    <?php	} ?>
    	</select> 
    </form>

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Points : 26
    Points
    26
    Par défaut
    Bonjour et merci, mais après avoir corrigé la syntaxe, cela ne correspond pas trop à ce que j'attends.

  4. #4
    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
    Cela fonctionne correctement pour toutes les années sauf 2012, car je n'arrive pas à le sélectionner.
    Ben... c'est un peu normal : il est sélectionné par défaut, donc pour qu'il puisse générer un onchange, il faut d'abord sélectionner une autre option qui va du coup générer un onchange... et soumettre le formulaire

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <form id="annee" name=annee method="post" action="">
    <script type="text/javascript">function refresh(input) { input.form.submit(); }</script>
    <select name=anchoix onchange="this.form.submit()">
    <option value="0">Sélectionner une année</option>
    <option value="2012">2012</option>
    <option value="2011">2011</option>
    <option value="2010">2010</option>
    <option value="2009">2009</option>
    <option value="2008">2008</option>
    </select> 
    </form>
    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

  5. #5
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Bonjour,

    plusieurs erreurs, tu as oublié une quote dans la première bride de ton exemple, et les valeurs du select ne correspondent pas à ce que tu testes en php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php $anchoix=(isset($_REQUEST['anchoix']))?($_REQUEST['anchoix']):(0); ?>
    <form id="annee" name="annee" method="post" action="">
    <select name="anchoix" onchange="this.form.submit()">
    <option value="1"<?php if($anchoix==1) echo ' selected="selected"'; ?>>2012</option>
    <option value="2"<?php if($anchoix==2) echo ' selected="selected"'; ?>>2011</option>
    <option value="3"<?php if($anchoix==3) echo ' selected="selected"'; ?>>2010</option>
    <option value="4"<?php if($anchoix==4) echo ' selected="selected"'; ?>>2009</option>
    <option value="5"<?php if($anchoix==5) echo ' selected="selected"'; ?>>2008</option>
    </select> 
    </form>
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php $anchoix=(isset($_REQUEST['anchoix']))?($_REQUEST['anchoix']):(0); ?>
    <form id="annee" name="annee" method="post" action="">
    <select name="anchoix" onchange="this.form.submit()">
    <option value="2012"<?php if($anchoix=='2012') echo ' selected="selected"'; ?>>2012</option>
    <option value="2011"<?php if($anchoix=='2011') echo ' selected="selected"'; ?>>2011</option>
    <option value="2010"<?php if($anchoix=='2010') echo ' selected="selected"'; ?>>2010</option>
    <option value="2009"<?php if($anchoix=='2009') echo ' selected="selected"'; ?>>2009</option>
    <option value="2008"<?php if($anchoix=='2008') echo ' selected="selected"'; ?>>2008</option>
    </select> 
    </form>
    bien sûr, ça demande à être optimisé, mais c'est pour l'explication de l'erreur...




    [EDIT]
    ah ouais, j'avais pas fait attention au onchange...

    oui effectivement, le formulaire ne peut pas être envoyé dans le contexte de la premiere valeur sélectionnée... dans ce cas pourquoi ne pas afficher directement le résultat correspondant à cette année dès l'affichage ?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Points : 26
    Points
    26
    Par défaut
    Merci ska_root cela correspond presque à ce que je veux faire, sauf qu'au départ il ne m'affiche rien (il devrait afficher les enregistrements correspondants à 2012).

    Après avoir sélectionné 2011, puis 2012 cela est OK.
    Je cherche le pourquoi du mauvais positionnement du début.

  7. #7
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    ben en fait, tu force l'execution de ton jeu de résultat dès l'affichage de la page avec une valeur par défaut (2012)

    exemple:
    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
     
    <?php
    $anchoix = (isset($_REQUEST['anchoix']))?($_REQUEST['anchoix']):('2012');
    $resultats= fonctionQuiRameneDesResultats($anchoix);
    ?>
    <form id="annee" name="annee" method="post" action="">
    <select name="anchoix" onchange="this.form.submit()">
    <option value="2012"<?php if($anchoix=='2012') echo ' selected="selected"'; ?>>2012</option>
    <option value="2011"<?php if($anchoix=='2011') echo ' selected="selected"'; ?>>2011</option>
    <option value="2010"<?php if($anchoix=='2010') echo ' selected="selected"'; ?>>2010</option>
    <option value="2009"<?php if($anchoix=='2009') echo ' selected="selected"'; ?>>2009</option>
    <option value="2008"<?php if($anchoix=='2008') echo ' selected="selected"'; ?>>2008</option>
    </select> 
    </form>
     
    // affichage des resultats 
    <p><?php echo $resultats; ?></p>
    tu vois ?

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Points : 26
    Points
    26
    Par défaut
    Oh oui, je vois que j'ai besoin d'aller me reposer...
    Merci encore.

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

Discussions similaires

  1. Mettre a jour les données dans un formulaire
    Par benjiprog dans le forum VBA Access
    Réponses: 5
    Dernier message: 17/08/2007, 11h41
  2. [MySQL] Mettre un champ selected dans un formulaire de type select
    Par bl4ckwolf dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 19/07/2007, 16h11
  3. Réponses: 1
    Dernier message: 25/09/2006, 09h52
  4. Mettre à jour des champs dans un sous formulaire
    Par Patros dans le forum Access
    Réponses: 3
    Dernier message: 09/08/2006, 15h16
  5. [Conception] mettre à jour un Select Option via BDD
    Par Skeud007 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 08/06/2006, 22h22

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