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

JavaScript Discussion :

Multi submit sur un formulaire


Sujet :

JavaScript

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut Multi submit sur un formulaire
    Hello,

    J'ai un formulaire dans un <table>, qui génère des lignes avec à chaque bout de ligne, deux boutons, de type submit qui ont pour but d'update certains champs dans la BDD.

    Aujourd'hui tout fonctionne sans aucun problème, sauf que c'est un peu redondant, quand on peut avoir une dizaine de lignes, de faire le traitement. (Pour expliquer le contexte, chaque ligne représente une entreprise qui a réserver des places pour un spectacle. Le premier bouton, permet d'attribuer des places à une entreprise, le second permet de dire combien de personne ont été présentes lors de l’événement.)

    Donc j'aimerais avoir seulement deux boutons (plutôt que 2 sur chaque ligne) qui soumettent les valeurs des colonnes associées.

    Je sais pas si c'est bien claire, rien ne vaut un peu de code pour se rendre compte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    foreach($results as $row) {
    echo "<form method='post' action='index.php?option=com_content&view=article&id=528&retour=675' id='form_reservation'>";
    echo "<tr>";
    echo "<td class='text-center'>".$row->nom_structure."</td>";
    echo "<td class='text-center'>".$row->nb_places_demandees."</td>";
    echo "<td class='text-center'><input type='number' id='nb_places_attribuees' name='nb_places_attribuees' value='".$row->nb_places_attribuees."'></td>";
    echo "<input type='text' name='id_reservation' id='id_reservation' value='".$row->id_reservation."' style='display: none;'>";
    echo "<td class='text-center'><input name='attribution_places' type='submit' class='btn btn-success' value='Attribuer'></td>";
    echo "<td class='text-center'><input type='number' id='nb_places_utilisees' name='nb_places_utilisees' value='".$row->nb_places_utilisees."'></td>";
    echo "<td class='text-center'><input name='places_utilisees' type='submit' class='btn btn-success' value='Confirmer'></td>";
    echo "</tr>";
    echo "</form>";
    }
    Je précise que c'est du développement fait sous Joomla!, que ce code ce situe dans un article et que cette syntaxe un peu bizarre, est lié à Sourcerer qui permet d'ajouter du PHP/JS.

    Je m'excuse également si j'ai publié au mauvais endroit, j'ai juste eu un soupçon de javascript dans ma requête n_n
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Briser la structure d'un table en encapsulant le tr dans un form c'est vraiment pas top ...

    il vaut mieux avoir juste les form dans le dernier td en bout de ligne et éventuellement des inputs hidden avec les valeurs dedans.


    Sinon un seul form en base de page
    et au click des boutons tu peuple des input hidden de l'unique form

    Ou encore un traitement ajax en ayant concaténé les données dans un json au click sur les boutons
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Hello la Grenouille,

    Merci pour ta réaction plus-que rapide.

    Qu'entends-tu par briser la structure d'un table?
    J'ai procédé de cette manière, car en me renseignant un peu j'ai pu lire
    A form is not allowed to be a child element of a table, tbody or tr
    Je note tes solutions.

    Je pensais également à faire une fonction JS qui les soumets un par un... Je suis conscients que c'est pas du joli joli.
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    j'ai déja fait des tableaux avec des checkbox en bout de ligne
    avant le submit une fonction scanne le tableau pour coller dans un json ou des input hidden les données des lignes sélectionnées, et soumettre le form ou faire un ajax


    Pour ce qui est de ma remarque sur la structure:
    quand je vois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach($results as $row) {
    echo "<form method='post' action='index.php?option=com_content&view=article&id=528&retour=675' id='form_reservation'>";
    echo "<tr>";
    ça veut dire qu'au final tu as un code html
    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
     
    <table>
      <form>
        <tr>
            <td></td>
            <td></td>
        <tr/>
       </form>
      <form>
        <tr>
            <td></td>
            <td></td>
        <tr/>
        </form>
    .../...
    </table>
    ce qui n'est vraiment pas recommandé
    de plus tu dupliques des id ... ce qui la est encore moins recommandé
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    ce qui n'est vraiment pas recommandé
    de plus tu dupliques des id ... ce qui la est encore moins recommandé
    Oupsssss. Il est vrai, j'avais oublié. J'avais donné un id unique à chaque form avec une variable que je concaténais sur l'id, que j'ai enlevé pour... des raisons inconnues


    j'ai déja fait des tableaux avec des checkbox en bout de ligne
    avant le submit une fonction scanne le tableau pour coller dans un json ou des input hidden les données des lignes sélectionnées, et soumettre le form ou faire un ajax
    Cela dit, je dois être à moitié stupide (que la moitié stp stp...), je ne comprends pas la structure à laquelle tu penses lorsque tu parles des input hidden. Quand à Ajax, j'ai pas encore touché cette techno sous Joomla!. Peut-être l'a tu essayée?
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    sous joomla non, mais peu importe joomla ou autre


    Mon idée d'un seul form ( caché on non ) en bas de page ...

    dans ton form tu mets un input hidden
    au submit tu viens peupler ton input hidden avec une chaine concaténée

    ou alors tu viens cloner une série d'input hidden en fonction des ligne sélectionnées

    Il y a tellement de façons de faire ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    D'accord ça marche, je vois l'idée.

    Je vais essayer de mettre ça en place, au besoin je repasserais ici !

    Merci !
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

  8. #8
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Bonsoir JujuPomme,

    j’ai repris le code de ton premier post avec la syntaxe HEREDOC pour le rendre plus clair. Je sais que SpaceFrog t’a donné des conseils entre temps et que ce code n’est probablement pas à jour, mais ça te donnera une idée.

    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
    foreach ($results as $row) {
      echo <<<EOT
    <form method="post" action="index.php?option=com_content&view=article&id=528&retour=675" id="form_reservation">
      <tr>
        <td class="text-center"> {$row->nom_structure}       </td>
        <td class="text-center"> {$row->nb_places_demandees} </td>
        <td class="text-center">
          <input type="number" id="nb_places_attribuees" name="nb_places_attribuees" value="{$row->nb_places_attribuees}">
        </td>
        <input type="text" name="id_reservation" id="id_reservation" value="{$row->id_reservation}" style="display: none;">
        <td class="text-center">
          <input name="attribution_places" type="submit" class="btn btn-success" value="Attribuer">
        </td>
        <td class="text-center">
          <input type="number" id="nb_places_utilisees" name="nb_places_utilisees" value="{$row->nb_places_utilisees}">
        </td>
        <td class="text-center">
          <input name="places_utilisees" type="submit" class="btn btn-success" value="Confirmer">
        </td>
      </tr>
    </form>
    EOT;
    }
    Outre le problème de la <table> brisée, souligné par SpaceFrog, on peut voir un <input> qui traîne en dehors d’un <td>. Même s’il est display: none, ça joue quand même : il est à cet endroit dans le code HTML, il sera à cet endroit dans l’arbre DOM.


    Une idée comme ça : pour moi la redondance des boutons n’est pas un problème ; elle peut même être utile à l’UX (expérience utilisateur) ainsi qu’à l’accessibilité, surtout si la table est grande. Demande-toi qu’est-ce qui serait le plus pratique, sur différentes tailles d’écrans (les tables posent toujours problème quand on pense au responsive design), ou encore avec différents types de handicaps. Je vois plusieurs scénarios (lecteur d’écran, loupe d’écran, navigation au clavier) qui me font aboutir à la même conclusion : c’est plus pratique avec des boutons sur chaque ligne de la table. Mais c’est une question de jugement personnel, alors fais-toi ta propre opinion
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  9. #9
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Points : 1 509
    Points
    1 509
    Par défaut
    Citation Envoyé par Watilin Voir le message
    Une idée comme ça : pour moi la redondance des boutons n’est pas un problème ; elle peut même être utile à l’UX (expérience utilisateur) ainsi qu’à l’accessibilité, surtout si la table est grande. Demande-toi qu’est-ce qui serait le plus pratique, sur différentes tailles d’écrans (les tables posent toujours problème quand on pense au responsive design), ou encore avec différents types de handicaps. Je vois plusieurs scénarios (lecteur d’écran, loupe d’écran, navigation au clavier) qui me font aboutir à la même conclusion : c’est plus pratique avec des boutons sur chaque ligne de la table. Mais c’est une question de jugement personnel, alors fais-toi ta propre opinion

    J'avais pas vu cette réponse my baaaad !!!!

    Merci pour ton retour, ainsi que pour le bout de code. Depuis ça a pas mal bougé, mais je me renseigne en revanche sur la syntaxe Heredoc qui m'intéresse dans ce cas-là.

    Quand à ton idée, elle était viable si cette vue était destinée à des personnes en situation de handicap. Or, manque de chance ici, c'est pour la partie administration. D'ou le souhait que ce soit plus simple et plus rapide !

    Merci pour le retour
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

Discussions similaires

  1. Fonction submit sur un formulaire
    Par Arakharam dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/05/2016, 21h59
  2. [AC-2003] Filtre multi critère sur un formulaire en mode feuille de données
    Par Soulq dans le forum VBA Access
    Réponses: 3
    Dernier message: 19/06/2009, 16h55
  3. Submit sur plusieurs formulaires PHP et HTML
    Par Gareth dans le forum Langage
    Réponses: 7
    Dernier message: 26/05/2009, 12h09
  4. 3 Submit sur un formulaire
    Par kaking dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/09/2008, 09h31
  5. plusieurs boutons submit sur un formulaire
    Par clement42 dans le forum Struts 1
    Réponses: 1
    Dernier message: 12/05/2006, 10h42

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