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 :

Formulaire avec plusieurs submit -> Récupération


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 193
    Points
    193
    Par défaut Formulaire avec plusieurs submit -> Récupération
    Bonjour.
    Dans mon application je réalise un tableau.
    Il est constitué comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <table>
    <tr>
    <td>info1 </td>
    <td>info2 </td>
    bouton submit
    </tr>
     
    <tr>
    <td>info3 </td>
    <td>info4 </td>
    bouton submit
    </tr>
    </table>
    Voici la construction de mes boutons submit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name="action[valider]" type="submit" value="Valider" />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name="action[sous_valider]" type="submit" value="Valider" />
    Gràce a ce code je peux différencier l'action à éxécuter par rapport au bouton cliquer

    Cependant quand je clic sur un des deux boutons dans mon lien (j'ai mis un GET pour bien voir) il récupère les deux lignes à chaque fois.

    Cela crée un problème car quand je remplie la première ligne (<tr>) il envoie aussi les données de la seconde ligne et donc en resultat j'aurais que des resultats nuls car il va prendre les resultats de la deuxième ligne.

    COmment s'y prendre?

    Merci

  2. #2
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    Houlala ... J'ai l'impression qu'il s'agit plus d'un PB de javascript ...

    Je transfert ton POST dans le bon forum ( Je rigole Je suis pas modérateur ... mais ca m'arrive régulièrement )

    Alors pour moi,

    Si tu veux gérer plusieurs submit et n'en récuperer qu'un il faut que tu fasses plusieurs form ...

    Sinon tu peux passer par un champ caché et tu value ce champ caché sur le clique sur un de tes boutons ...

    Je m'explique .. tu veux savoir si on clique sur le bouton b1 ou b2.

    Tu fais un champs hidden nommé choixB et sur tes boutons tu mets sur B1 un :

    OnClick="document.form.choixB.value='B1'; submit();

    idem pour B2 ...

    Tu recupères ensuite ton choix dans la variable choixB ...
    Take it HiSy

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 193
    Points
    193
    Par défaut
    Dans mon cas je ne peux pas faire deux formulaires.

    Apparemment ton explication sert à recupérer quel bouton a été cliqué.
    Ceci n'est pas un problème, j'arrive à appliquer une action spécifique à chaque bouton mais c'est dans la récupération que ca bloque.

    Ou alors j'ai mal compris ce que tu as écris.

  4. #4
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    Je crois que c'est moi qui comprend mal ce que tu veux ...

    Peux tu me mettre un peu plus de code ?
    Take it HiSy

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 193
    Points
    193
    Par défaut
    Ma form est comme ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form  action="inserer.php" method="GET">
    Dans insérer.php.

    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
    if (isset($_GET['action'])) {
    reset($_GET['action']);
    list($action,$valeur) = each($_GET['action']);
    switch($action) {
    case 'valider' :
    echo $id_projet,$id_utilisateur,$date,$ligne,$mataprem,$nb_heure,$nature,$code_projet;
     
    break;
    case 'sous_valider' :
    echo $id_projet,$id_utilisateur,$date,$ligne,$mataprem,$nb_heure,$nature,$code_projet;
     
    // modifier ce qu'il faut pour réafficher le formulaire avec une ligne en plus
    break;
    }
    }
    Comme tu le vois je peux différencier l'action à faire selon le bouton cliqué.

    Pour le moment j'affiche simplement les infos.

    Quand je clic sur mon premeir bouton cela renvoie ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /inserer.php?date=27-03-2006&jour=lundi&mataprem=matin&code=1&nb_heure=5&nature=Developpement&action%5Bvalider%5D=Valider&ligne=0&code=1&nb_heure=0&nature=DT
    Les deux lignes sont donc passées dans l'url et donc quand je veux les afficher il prends les dernières infos qui correspondent à la seconde ligne qui n'a pas été remplie donc cela renvoie des resultats faux.

    Par contre si je remplie la deuxième ligne ca marchote car il va chercher la deuxième partie qui cette fois sera bien remplie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /inserer.php?date=27-03-2006&jour=lundi&mataprem=matin&code=1&nb_heure=5&nature=Developpement&ligne=0&code=1&nb_heure=4.5&nature=Developpement&action%5Bsous_valider%5D=Valider
    J'espère que c'est archi clair la?
    Merci ^^

  6. #6
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Avec un seul formulaire c'est quand même bien chaud.

    Pourquoi ne pas donner des noms différents à tous tes champs, comme ça tu récupères que ceux appropriés au bouton qui a servi à valider ? Et puis après tu fais ta sauce avec ça et tu fais ce que tu veux...
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 193
    Points
    193
    Par défaut
    Je trouve pas ca terrible dans la forme et le fond.

    Mais bon si c'est vraiment impossible.
    Attendons d'autres avis comme les modos par exemple ^^.

  8. #8
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    Au risque de ta paraitre lourd ..

    je pense que c'est plus un pb JS et je pense qu'il serait plus intérressant de voir le code de ton FORM puisque de toute facon quand tu arrives dans PHP tu as déjà ecraser tes données ...
    Take it HiSy

  9. #9
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    En même temps c'est pas terrible non plus dans le fond de faire un seul formulaire dans ton cas
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 193
    Points
    193
    Par défaut
    Un formulaire par ligne du tableau ca serait mieux?

  11. #11
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Dans la logique 1 formulaire = 1 ensemble de champs + 1 bouton Submit.

    Après quand on veut (ou que on est obligé de) bricoler, en général il faut bricoler jusqu'au bout.

    Pour moi, soit tu fais deux formulaires et c'est simple (mais tu as dis que tu ne pouvais pas le faire).
    Soit tu fais un seul formulaire et alors là le seul moyen en PHP de récupérer les informations correctement c'est de donner des noms différents à tous les champs. Tu les appelles code1, heure1, ... pour le premier bouton de validation et code2, heure2, ... pour le deuxième. C'est pas super beau c'est sûr mais c'est ma seule solution je pense en restant tout PHP.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 193
    Points
    193
    Par défaut
    Ok merci, à moi de faire le choix.

  13. #13
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Bon courage et tiens nous au courant de la solution
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 193
    Points
    193
    Par défaut
    Je vous tiendrai au courant sans problème.

  15. #15
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    Citation Envoyé par masseur
    Dans mon cas je ne peux pas faire deux formulaires.
    Bon OK j'ai pas résisté au plaisir de citer masseur ...

    Plus sérieusement, je crois que tu devrais essayer de lever cette impossibilité qui ne doit pas être à mon sens insurmontable ...

    Dans la mesure ou tu ne veux recuperer qu'un ligne a chaque fois, tu as meilleur temps de faire un form par ligne ...

    Si tu dois récuperer pls lignes ... alors tu peux faire des tableaux en appelant tes variables <input type="text" name="mavariable[]">

    Bon courage ...
    Take it HiSy

Discussions similaires

  1. Un formulaire avec plusieurs submits
    Par Transience dans le forum Ruby
    Réponses: 4
    Dernier message: 23/11/2009, 17h22
  2. Réponses: 2
    Dernier message: 05/04/2009, 17h51
  3. formulaire avec plusieurs boutons submit dont une image
    Par mounia.n dans le forum Langage
    Réponses: 4
    Dernier message: 04/08/2008, 16h52
  4. Un formulaire avec plusieurs boutons "submit"
    Par novices dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 11/09/2006, 21h25
  5. Formulaire avec plusieurs submit !
    Par alfigor dans le forum Langage
    Réponses: 6
    Dernier message: 21/04/2006, 12h09

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