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 :

Deux formulaires select avec test if [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut Deux formulaires select avec test if
    Bonjour.

    2 formulaires et des conditions de tests if.

    Un formulaire select qui choisie la catégorie et un formulaire pour le ID à choisir.

    MPAGES
    ID 1
    ID 2 etc

    INDEXP
    ID 1
    ID 2 etc

    Présentement, je fais le choix entre MPAGES et INDEXP, et après, je choisi le ID.

    Mon problème, c'est que dans INDEXP, quand je choisi le ID, ça me retourne dans MPAGES.

    Voici 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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
     
            // vérifier si le ID est défini peut importe la catégorie
            $id=isset($_REQUEST['id']) ? $_REQUEST['id'] : "";
     
            // si la catégorie n'est pas défini dans le url, indiquer MPAGES avec le ID actuel par défaut.
            if(!isset($_REQUEST['page'])) 
                    header('location:index.php?id='.$id.'&page=mpages');
     
            // vérifier si la catégorie est défini et que get page est mpages ou indexp établir la constante à INDEXP si non établir le url à MPAGES.
            if(isset($_REQUEST['page']) && ($_REQUEST['page'] == 'mpages' || $_REQUEST['page'] == 'indexp') ) {
                        define("TABLE", strtolower($_REQUEST['page']));
                    }
                    else {
                        header('location:index.php?id='.$id.'&page=mpages');
                    }
     
    ....
     
        <form action="" method="get">
                  &nbsp; <span class="idamodifier">Page : </span>
                <select name="page" onchange='this.form.submit()'>
                    <?php
                          echo "\t<option class=\"titreselect\" value=\"\">:: Sections ::</option>\n";
                          echo "\t<option class=\"titreselect\" value=\"mpages\">:: MPAGES ::</option>\n";
                          echo "\t<option class=\"titreselect\" value=\"indexp\">:: INDEXP ::</option>\n";
                    ?>
                </select>
        </form>
     
        <form action="" method="get">
                  &nbsp; <span class="idamodifier">ID à modifier : </span>
                <select name="id" onchange='this.form.submit()'>
                    <?php
                          echo "\t<option class=\"titreselect\" value=\"\">:: ID ::</option>\n";
                          for ($i = 1; $i <= $rid; $i++) {
                              echo "\t<option value=\"$i\">$i</option>\n";
                          }
                    ?>
                </select>
        </form>
    J'ai besoin d'être aidé pour démêler ça.
    On oublie souvent la simplicité ou la base dans la vie: Maslow

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Quand tu valides le deuxième formulaire, tu n'as plus "page" donc tu rentres dans ta condition qui fait le redirection.
    Ajoute un champs caché
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="page" value="<?php echo $GET['page']; ?>" />
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2015
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par dancom5 Voir le message
    Bonjour.

    2 formulaires et des conditions de tests if.

    Un formulaire select qui choisie la catégorie et un formulaire pour le ID à choisir.

    MPAGES
    ID 1
    ID 2 etc

    INDEXP
    ID 1
    ID 2 etc

    Présentement, je fais le choix entre MPAGES et INDEXP, et après, je choisi le ID.

    Mon problème, c'est que dans INDEXP, quand je choisi le ID, ça me retourne dans MPAGES.

    Voici 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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
     
            // vérifier si le ID est défini peut importe la catégorie
            $id=isset($_REQUEST['id']) ? $_REQUEST['id'] : "";
     
            // si la catégorie n'est pas défini dans le url, indiquer MPAGES avec le ID actuel par défaut.
            if(!isset($_REQUEST['page'])) 
                    header('location:index.php?id='.$id.'&page=mpages');
     
            // vérifier si la catégorie est défini et que get page est mpages ou indexp établir la constante à INDEXP si non établir le url à MPAGES.
            if(isset($_REQUEST['page']) && ($_REQUEST['page'] == 'mpages' || $_REQUEST['page'] == 'indexp') ) {
                        define("TABLE", strtolower($_REQUEST['page']));
                    }
                    else {
                        header('location:index.php?id='.$id.'&page=mpages');
                    }
     
    ....
     
        <form action="" method="get">
                  &nbsp; <span class="idamodifier">Page : </span>
                <select name="page" onchange='this.form.submit()'>
                    <?php
                          echo "\t<option class=\"titreselect\" value=\"\">:: Sections ::</option>\n";
                          echo "\t<option class=\"titreselect\" value=\"mpages\">:: MPAGES ::</option>\n";
                          echo "\t<option class=\"titreselect\" value=\"indexp\">:: INDEXP ::</option>\n";
                    ?>
                </select>
        </form>
     
        <form action="" method="get">
                  &nbsp; <span class="idamodifier">ID à modifier : </span>
                <select name="id" onchange='this.form.submit()'>
                    <?php
                          echo "\t<option class=\"titreselect\" value=\"\">:: ID ::</option>\n";
                          for ($i = 1; $i <= $rid; $i++) {
                              echo "\t<option value=\"$i\">$i</option>\n";
                          }
                    ?>
                </select>
        </form>
    J'ai besoin d'être aidé pour démêler ça.

    Form action tu ne peut pas utilise "?" Ex: <form action="index.php?id=3 method="get"> avec ça quand tu diriger la page de destination tu sera perdu la valeur $_GET['id'], si il faut obliger de avoir les valeur par $_REQUEST, tu sépare les actions de method (sinon il y a beaucoup de choix ajax, $_SESSION ... ), par 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
    18
    19
     
    <form action="index.php" method="post">
        &nbsp; <span class="idamodifier">Page : </span>
        <select name="page" onchange='this.form.submit()'>
            <option class="titreselect" value="">:: Sections ::</option>
            <option class="titreselect" value="mpages">:: MPAGES ::</option>
            <option class="titreselect" value="indexp">:: INDEXP ::</option>
        </select>
    </form>
     
    <form action="index.php?page=<?php echo $_REQUEST['page'];?>" method="post">
        &nbsp; <span class="idamodifier">ID à modifier : </span>
        <select name="id" onchange='this.form.submit()'>
            <option>:: Select ::</option>
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
        </select>
    </form>
    la 1ère method avec GET, 2ème method avec POST, après dans la page de destination tu peut avoir les 2 valeur $_REQUEST['id'] et $_REQUEST['page']

  4. #4
    Membre actif Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Points : 241
    Points
    241
    Par défaut
    J'ai revu mon code à force de faire des essaies.

    Merci pour l'astuce, je l'avais complètement oublié celui la.

    J'ai fais deux formulaires indépendantes et ça marche super bien.

    J'ai chercher pour un dropdown dépendant mais, ce n'est pas natif en html et en jquery/json,
    un peu trop compliqué. Alors, j'ai eu l'idée de mon code que j'ai fais.

    2 input checkbox checked caché.

    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
     
        $page=isset($_REQUEST['page']) || !empty($_REQUEST['page'] ) ? $_REQUEST['page'] : "mpages";
        if($page=="indexp") { 
                $table="indexp"; 
            }
            else {
                $table="mpages";
     
     
    ...
     
            <div style="margin: 10px auto 40px 410px">
                    <form style="float:left;margin-right:10px" action="" method="get">
                                    <input style="display:none" type="checkbox" name="page" value="mpages" checked>
                                    <select title="Les pages de l'onglet services" style="padding:5px" name="id" onchange='this.form.submit()'>
                                                        <option class="titreselect" value="">mpages</option>
                                                <?php
                                                        $bdd3 = new Bdd();
                                                        $bdd3->query('SELECT id FROM mpages');
                                                        $viewid = $bdd3->resultset();
                                                        foreach ($viewid as $v){
                                                            echo '\t<option value="'.(int)$v['id'].'">'.(int)$v['id'].'</option>\n';
                                                        }
                                                ?>
                                    </select>
                    </form>
     
                    <form style="float:left" action="" method="get">
                                    <input style="display:none" type="checkbox" name="page" value="indexp" checked>
                                    <select title="Les pages principales" style="padding:5px" name="id" onchange='this.form.submit()'>
                                                        <option class="titreselect" value="">indexp</option>
                                                <?php
                                                        $bdd3 = new Bdd();
                                                        $bdd3->query('SELECT id FROM indexp');
                                                        $viewid = $bdd3->resultset();
                                                        foreach ($viewid as $v){
                                                            echo '\t<option value="'.(int)$v['id'].'">'.(int)$v['id'].'</option>\n';
                                                        }
                                                ?>
                                    </select>
                    </form>
            </div><br />
    Je garde votre astuce en réserve, il pourrait servir :-)
    On oublie souvent la simplicité ou la base dans la vie: Maslow

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

Discussions similaires

  1. Formulaire select avec un retour selected
    Par kame84sennin dans le forum Langage
    Réponses: 3
    Dernier message: 12/04/2015, 16h07
  2. Formulaire - Select avec grande quantité d'option
    Par link.80 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 26/04/2012, 14h29
  3. [javascript - formulaire] select avec grand nombre d'enregistrements
    Par mussara dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/02/2007, 14h20
  4. Requête SELECT avec deux champs dans une colonne ??
    Par fredhali2000 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 08/06/2006, 10h41
  5. UNION de deux SELECT avec nombre d'arguments différents
    Par orus8 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/07/2004, 14h32

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