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 :

option onChange() dans un select [PHP 5.2]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Par défaut option onChange() dans un select
    Bonjour!

    Voilà voilà encore novice en php, j'ai un problème avec une page dans laquelle j'ai un champ select tout simple avec quelques valeurs (0,1,2,3) et j'aimerai afficher une autre série bien définie d'input (divers text, radio et autres) sur cette même page en fonction du résultat du premier select.

    Avec un exemple ça donne :

    select : Choisissez 0, 1, 2, 3

    si 0 sélectionné : rien à ajouter
    si 1 sélectionné : rajouter Personne n°1 <input text etc...>
    si 2 sélectionné : rajouter Personne n°1 <input text etc...> Personne n°2 <input text etc...>
    si 3 sélectionné : rajouter Personne n°1 <input text etc...> Personne n°2 <input text etc...> Personne n°3 <input text etc...>

    Le gros problème est que, si j'arrive actuellement à faire tout ça en cliquant sur un bouton de type submit juste après le 1er select, je voudrai arriver à faire sans et à pouvoir recharger la page toute seule en utilisant l'option onChange, mais ça a pas l'air de vouloir :'( ...

    fonction actualiser dans le onChange()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script language="Javascript">
    function Actualiser() {
     
       this.form.submit(); 
       if($_POST['etape5_question1'] != "check"){
           $_SESSION['etape5_question1'] = $_POST['etape5_question1'];
           javascript:location.reload();
       }else{
           $erreur_etape5_question1 = "Nombre de personnes : Veuillez sélectionner une réponse.";
       }
    }
    </script>
    premier select censé influer sur la suite de la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Nombre de personnes : <select name="etape5_question1" onChange="Actualiser();">
                    <option value="check">Choisissez</option>
                    <option value="0" <?php if ($_SESSION['etape5_question1'] == '0') {echo 'selected="selected"';}?> >0</option>
                    <option value="1" <?php if ($_SESSION['etape5_question1'] == '1') {echo 'selected="selected"';}?> >1</option>
                    <option value="2" <?php if ($_SESSION['etape5_question1'] == '2') {echo 'selected="selected"';}?> >2</option>
                    <option value="3" <?php if ($_SESSION['etape5_question1'] == '3') {echo 'selected="selected"';}?> >3</option>
                    </select>
    actuelle bouillie pour générer la 2ème partie de mon formulaire, désolée je sais que c'est pas propre les echo comme ça, mais j'ai toujours pas trouvé mieux pour rester dans mes boucle if et for
    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
    <?php if(isset($_POST['etape5_question1'])){
                        if($_POST['etape5_question1'] == '1' ||  $_POST['etape5_question1'] == '2' || $_POST['etape5_question1'] == '3'){
     
                            for($a = 1; $a <= $_POST['etape5_question1']; $a++){
                                echo '<strong>Personne n°'.$a.' :</strong>';
                                echo "<br />";
     
                                echo 'Monsieur <input type="radio" name="etape5_question2_'.$a.'" value="Monsieur" <?php if($_SESSION["etape5_question2_'.$a.'"] == "Monsieur"){echo \'checked="checked"\';}?> >';
                                echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
     
                                echo 'Madame <input type="radio" name="etape5_question2_'.$a.'" value="Madame" <?php if($_SESSION["etape5_question2_'.$a.'"] == "Madame"){echo \'checked="checked"\';}?> >';
                                echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
     
                                echo 'Mademoiselle <input type="radio" name="etape5_question2_'.$a.'" value="Mademoiselle" <?php if($_SESSION["etape5_question2_'.$a.'"] == "Mademoiselle"){echo \'checked="checked"\';}?> >';
                                echo "<br />";
                                echo "<br />";
                            }
                        }
                    }
                    ?>
    Pour l'instant, j'ai juste l'impression que le onChange recharge rien :s
    Quelqu'un aurait une idée svp? :s

  2. #2
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Il faut que tu fasses une redirection en javaScript et y passant le paramètre de l'option choisi (recherche de la valeur avec document.getElementById(selectId) OU tu peux modifier un champ hidden (même méthode) puis à l'affichage de la page récupérer ce champ.

  3. #3
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script language="Javascript">
    function Actualiser() {
     
       this.form.submit(); 
       if($_POST['etape5_question1'] != "check"){
           $_SESSION['etape5_question1'] = $_POST['etape5_question1'];
           javascript:location.reload();
       }else{
           $erreur_etape5_question1 = "Nombre de personnes : Veuillez sélectionner une réponse.";
       }
    }
    </script>
    Ici tu mélanges du PHP dans du JS... ça ne peut pas marcher.
    Fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <script language="Javascript">
    function Actualiser() {
       alert('coucou');
    }
    </script>
    Et regarde si quand tu changes t'as ce message ;-)

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Par défaut
    En effet ça m'affiche bien le message d'alert, donc c'est bien que j'ai au moins dû écrire ma fonction comme un pied ^^""

  5. #5
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if($_POST['etape5_question1'] != "check"){
           $_SESSION['etape5_question1'] = $_POST['etape5_question1'];
           javascript:location.reload();
       }else{
           $erreur_etape5_question1 = "Nombre de personnes : Veuillez sélectionner une réponse.";
       }
    Ceci est du PHP, et tu ne peux pas faire ça.
    Oriente toi du côté javascript si tu veux de l'aide ;-)

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Par défaut
    Ok merci tout plein ! Je vais commencer à bidouiller ça. Je clos le tout dès que j'y arrive.

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

Discussions similaires

  1. [script.aculo.us] <option> draggables dans un <select>
    Par Bownobo dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 03/10/2008, 10h03
  2. Nombre d'options affichées dans un select
    Par 4R416N33 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 23/09/2008, 10h39
  3. Modifier l'option sélectionnée dans un select
    Par GLSpirit dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/04/2008, 10h42
  4. onChange dans un select
    Par nebule dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 03/12/2007, 11h19
  5. onchange dans un select
    Par n@n¤u dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/05/2006, 13h57

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