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 :

2 formulaires dans une même page


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Points : 71
    Points
    71
    Par défaut 2 formulaires dans une même page
    Bonsoir

    je possède une page .php avec deux formulaires à l'intérieur (method="post").
    En gros, ma page contient un tableau avec un formulaire1 dedans, et plusieurs checkbox nommés "choix[1]", "choix[2]" etc.. (jusqu'à 7), plus un bouton submit.

    Le deuxième formulaire apparaît dans un autre tableau, plus bas dans la page.
    Ce formulaire2 contient également des checkbox nommés de la sorte :"choix[8]" "choix[9]" etc.. (jusqu'à 12).

    Ces checkbox de 1 à 12 que se partagent les formulaires servent à effectuer plusieurs tests à partir de php (notamment une boucle for($i=1;$i<=count($_POST['choix']);$i++)).

    Si je fais un test de la sorte...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for($i=1;$i<=count($_POST['choix']);$i++){ 
    echo $_POST['choix'][$i];
    }
    ...cela devrait m'afficher 1,2,3,...12.
    Cependant, cela ne m'affiche les numéros que de 1 à 7...

    Quoi que je fasse, le formulaire 2 ne passe pas (même si je ne coche que les checkbox du formulaire2 et que je fais un test pour afficher les checkbox cochées, celà ne me donne rien (en revanche j'obtiens bien les numéros si je fais ce même test avec le formulaire1)...

    J'ai également tenté de renommer complètement les checkbox du formulaire2 (pour que les 2 formulaires n'est plus rien à voir l'un avec l'autre), mais toujours pareil, il n'y a que le premier formulaire qui est pris en compte...


    ==> POURQUOI?
    Merci beaucoup de votre aide

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    le </form> se trouve t-il après ton 12ieme checkbox ? Sont t-ils tous englobés dans ton formulaire ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    le </form> se trouve t-il après ton 12ieme checkbox ? Sont t-ils tous englobés dans ton formulaire ?

    Le temps que tu me répondes j'ai effectivement trouvé la solution
    Je m'obstinais à faire 2 formulaires (donc 2 balises <form> et 2 </form>)...

    Donc maintenant ça marche vu que j'ai tout englobé. Mais même si ça marche, je serais curieux de comprendre pourquoi même avec 2 <form> il n'y a que le premier qui est pris en compte..

    Autre question : j'étais persuadé qu'un formulaire ne contenait que des boutons/éléments en tout genre.. S'il y a d'autres choses comme du texte etc entre les deux balises <form></form> ce n'est pas grave alors? (ahhh les principes qu'on se fait )

    En tout cas merci beaucoup d'avoir pris le temps de me répondre

  4. #4
    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
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    je serais curieux de comprendre pourquoi même avec 2 <form> il n'y a que le premier qui est pris en compte..
    On peu mettre plusieurs formulaires dans une page, faut juste qu'ils ne s'imbriquent pas, et qu'il soient bien intégrés dans la page par rapport aux autres éléments.
    Leur donner explicitement un nom unique aussi.
    Bref, il faut pas faire d'erreur HTML, comme tout autre élément.

    Par contre, quand on soumet un formulaire (bouton submit), ce n'est QUE celui qu'on soumet qui sera pris en compte, et non les autres formulaires.
    Ce sera donc que les valeurs des éléments (les input, etc ...) se trouvant à l'intérieur qui seront retournés.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Salut

    On peu mettre plusieurs formulaires dans une page, faut juste qu'ils ne s'imbriquent pas, et qu'il soient bien intégrés dans la page par rapport aux autres éléments.
    Leur donner explicitement un nom unique aussi.
    Bref, il faut pas faire d'erreur HTML, comme tout autre élément.

    Par contre, quand on soumet un formulaire (bouton submit), ce n'est QUE celui qu'on soumet qui sera pris en compte, et non les autres formulaires.
    Ce sera donc que les valeurs des éléments (les input, etc ...) se trouvant à l'intérieur qui seront retournés.
    Effectivement, mais comment expliques-tu que quand je fais un truc du type:
    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
     
    <form method="post">
    <input type="checkbox" name="check1" />
    <input type="submit" value="valider1" />
    </form>
     
    <form method="post">
    <input type="checkbox" name="check2"/>
    <input type="submit" value="valider2" />
    </form>
     
    <?php
    if(isset($_POST['check2'])){
        echo $_POST['check2'];
    }else if(isset($_POST['check1'])){
        echo $_POST['check1'];
    }
    ?>
    ... et que je coche la checkbox "check2" et que je valide par le bouton "valider2", il ne s'affiche rien? Alors que si je coche la checkbox "check1" et le bouton "valider1" là j'obtiens quelque chose..
    C'est tout de même étonnant

    Merci pour ton explication en tout cas

  6. #6
    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
    Points : 3 947
    Points
    3 947
    Par défaut
    J'ai essayé en reprenant ton code, ça fonctionne très bien.

    Du coup, tu dois avoir une erreur ailleurs.
    Suffit un morceau HTML mal fait (balise non fermée, mauvaise imbrication, que sais je ...) pour que le navigateur perde la boule.
    Le problème avec le HTML, c'est qu'il y a rien qui indique une erreur (comme Php), du coup, c'est lorsqu'on a un comportement étrange qui peu mettre la puce à l'oreille.

    Enfin, je suppose d'une erreur HTML, c'est ce qui me semble le plus logique.

    Mise à part ça, prend soin à chaque fois de donner un nom, et indiquer l'URL de la page au niveau du formulaire.
    C'est à mon sens le minimum.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <form name="checker1" action="page.php" method="post">
    <input type="checkbox" name="check1" />
    <input type="submit" value="valider1" />
    </form>
     
    <form name="checker2" action="page.php" method="post">
    <input type="checkbox" name="check2"/>
    <input type="submit" value="valider2" />
    </form>
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Mise à part ça, prend soin à chaque fois de donner un nom, et indiquer l'URL de la page au niveau du formulaire.
    C'est à mon sens le minimum.
    Pas de soucis, ça je le fait toujours (j'ai juste fabriqué un petit code tout bête pour l'exemple ci-dessus, c'était juste pour montrer ce que je faisais à peu près)!
    Merci pour le coup de main, je jetterai un oeil sur mon code

Discussions similaires

  1. [1.x] Deux formulaires distinct dans une même page ?
    Par w1Re1337 dans le forum Symfony
    Réponses: 2
    Dernier message: 06/01/2012, 10h27
  2. 2 formulaires distincts dans une même page
    Par Stephane_br dans le forum ASP.NET
    Réponses: 5
    Dernier message: 15/07/2010, 18h05
  3. Deux formulaires différents dans une même page
    Par zabdaniel dans le forum Langage
    Réponses: 3
    Dernier message: 14/01/2008, 20h31
  4. traiter un formulaire dans une même page
    Par mitmit dans le forum Langage
    Réponses: 4
    Dernier message: 26/04/2007, 17h20
  5. intégrer 3 formulaires dans une même page
    Par el_amiral dans le forum Langage
    Réponses: 12
    Dernier message: 25/04/2007, 17h08

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