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 :

Un seul submit pour règner sur tous les formulaires


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 46
    Points : 33
    Points
    33
    Par défaut Un seul submit pour règner sur tous les formulaires
    Bonjour,

    Je développe un site en php mais ce que je cherche à faire y trouve ses limites...

    En effet, j'ai un énorme formulaire sur un backoffice qui doit permettre de rentrer des informations sur des produits ainsi que l'image associée à chaque produit.
    Mon problème réside dans le fait d'avoir un aperçu des images en temps réel avant ou après upload.

    Avant l'upload: pas possible semblerait-il (du moins sous Firefox, dommage)
    Après upload, oui mais cela nécessite un submit pour cause de sécurité (re-dommage).

    J'ai donc un énorme formulaire de données ainsi que de plus petits pointant vers leur iframe respective de manière à pouvoir faire un submit sur chaque image à importer et pouvoir les voir directement sans pour autant devoir rafraichir la page générale, ce qui me permet de garder les données déjà entrées dans le grand formulaire de données.

    Tout va bien sauf une chose: pas moyen d'éviter que les formulaires d'images ne se trouvent à l'intérieur du grand formulaire or des formulaires imbriqués ne fonctionnent pas (c'est ce que j'ai vérifié et qui semble confirmé par une recherche google étendue)...

    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
     
    <form 1>
       INPUT données
       <form a>
            INPUT image1
            INPUT submit
       </form a>
       INPUT données
       <form b>
            INPUT image2
            INPUT submit
       </form b>
       INPUT données
     
       INPUT submit des données uniquement
    </form 1>


    Ma dernière idée a donc été de "partitionner" le grand formulaire en plus petits, de la sorte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <form 1>INPUT données</form 1>
    <form a>
         INPUT image1
         INPUT submit
    </form a>
    <form 2>INPUT données</form 2>
    <form b>
         INPUT image2
         INPUT submit
    </form b>
    <form 3>INPUT données</form 3>
     
    <form>INPUT  submit (form1,form2, form3)</form>
    Cette solution est élégante mais php ne la permet pas et ne connaissant pas le javascript, j'ai trouvé un code qui permet de faire un submit pour envoyer différents formulaires spécifiques:

    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
    <SCRIPT LANGUAGE="JavaScript">
    /* Collect all forms passed by array and post it */
    function submitFormsById(arFormsSubmit)
    {
    var formCollector = document.createElement("form");
    with(formCollector)
    {
    method = "post";
    action = "http://www.monsite.com/traitement_des_donnees.php";
    name = "formCollector";
    id = "formCollector";
    style.display = "none";
    }
     
    for(var ix = 0; ix<arFormsSubmit.length;ix++)
    appendFormVals2Form(document.getElementById(arFormsSubmit[ix]), formCollector);
     
    document.body.appendChild(formCollector);
    formCollector.submit();
    }
     
    /* Function: add all elements from ``frmCollectFrom´´ and append them to ``frmCollector´´ before returning ``frmCollector´´*/
    function appendFormVals2Form(frmCollectFrom, frmCollector) {
    var frm = frmCollectFrom.elements;
    for(var ix = 0 ; ix < frm.length ; ix++)
    frmCollector.appendChild(frm[ix]);
    return frmCollector;
    }
     
    </SCRIPT>
    Et pour finir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <INPUT TYPE="submit" value="submit" name="nom" onClick="submitFormsById(Array('form1','form2','form3'))">

    C'est parfait mais pour une raison que j'ignore, ce script ne renvoie en post qu'une valeur sur deux. En effet, quand je récupère par exemple 10 champs input, toutes forms confondues, je n'ai que 5 valeurs exploitables et les autres restent désespérément vides.
    Ce n'est pas une erreur de ma part puisque si j'ai par exemple deux champs qui ses suivent "poids" et "prix", j'aurai le résultat du poids mais pas du prix MAIS si j'intervertis pour "prix" et "poids", j'aurai le résultat du prix mais pas du poids cette fois-ci...
    Pourtant tous les formulaires de données sont bien traités car j'ai bien le résultat des tous...juste que c'est incomplet.

    Avez-vous une idée de la résolution de mon cas?
    Ou peut-être une autre piste plus simple (mais qui fonctionne)?

    Merci!

  2. #2
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    -> ajax si tu veux envoyer plusieurs submit
    ou un seul gros formulaire

    PS : si les champs d'un furmulaire ont le même nom, les navigateurs l'interprete comme un select multiple

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    Merci beaucoup pour ta réponse mais elle ne m'avance pas beaucoup...

    Qu'est-ce que tu penses envoyer de manière asynchrone qui règlerait mon problème?
    Asynchrone ou pas, un formulaire reste un formulaire (et donc exit les formulaires imbriqués) et en ajax, pas de preview sans upload préalable non plus.

    "Un seul gros formulaire" ne fonctionne pas puisqu'il ne me permettrait pas le preview des images dont je parle.

    Quant au PS, aucun des champs de mes formulaires ne partagent le même nom.

    Merci de bien vouloir préciser ta pensée, s'il te plait.

    Pour le reste, es-tu bon en javascript? Assez pour comprendre pourquoi ce script zappe un champ sur deux dans mes formulaires ?

    A+!

  4. #4
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    C'est pour faire des boucles côté serveur...

  5. #5
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    Encore une fois merci Mathieu2000 de te pencher sur mon cas mais comprends-moi quand je te dis que ton message ne m'aide pas.
    Si je ne suis pas assez bon pour débugguer ce script, il y a des chances que je ne le sois pas plus pour trouver la solution à partir d'une phrase aux allures de charade.
    En quoi faire des boucles côté serveur peut-il régler mon cas?
    Php fait des boucles côté serveur et pourtant il ne peut résoudre mon problème.

    Je sais qu'il ne faut pas que j'attende qu'on m'offre la réponse sur un plateau d'argent et je n'ai rien contre le fait de chercher mais là...
    D'autant plus que j'y ai mis du mien pour que la question soit claire et détaillée.

    Un exemple concret peut-être ou une explication qui corresponde à mon cas précis?

    Autre chose: tu sembles ne pas tenir compte du script que j'utilise. Est-il problématique, inefficace, inutile?

    Ce genre de choses...

    Merci pour ton aide et à tous ceux qui voudront bien m'aider.

  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 640
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    des forms imbriqués ... heu c'est a peu près la pire des chose qu'il m'ait été donné de voir ...

    pourquoi ne pas faire qu'un seul form .. ?

    tu peux ne soumettre que certains elements du form :
    au lieu d'un sous form mets des fieldsets et supprime du flux au moyen d'un display none sur le onsubmit ceux que tu ne souhaites pas envoyer ...

    mes les champs en disabled ...

    mais par pitié un seul form sur la page
    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
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par lexgotham Voir le message
    Asynchrone ou pas, un formulaire reste un formulaire (et donc exit les formulaires imbriqués) et en ajax, pas de preview sans upload préalable non plus.
    Es-tu obligé de t'en tenir au mécanisme classique de soumission des formulaires, qui ici te pose des problèmes assez tordus ? L'apport d'Ajax ici serait surtout de traiter "à la main" avec une fonction écrite spécialement pour ça, l'envoi des données au serveur. C'est effectivement plus long que de s'appuyer sur le submit d'un ou plusieurs form, mais au moins tu controlerais à 100% ce que tu envoies, et quand... ^^

    Je ne sais pas si ma réponse est claire et/ou pertinente, mais tiens-nous au courant et on continuera à chercher...

    PS : Ok mathieu est bavard comme ma chaise mais il essaie de t'aider et a de bonnes connaissances alors ne le mords pas

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  8. #8
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    SpaceFrog:

    Je vois +/- ce que tu proposes (mes connaissances en dehors du php étant limitées) mais il reste une inconnue:
    Comment faire pour que dans le cas d'un upload d'image, seule celle-ci soit traitée (et affichée automatiquement sur ma page) tout en gardant les autres données entrées par l'utilisateur intactes et non validées et que dans le cas d'un upload de données seules celles-ci soient traitées, sans uploader à nouveau les images?
    Une chose est sûre, la page ne doit être rafraichie que pour un submit de données et non lors de l'upload/affichage d'images.

    Dans ce que tu proposes, je comprends que le submit n'agira que sur les champ en display (perte des données des champs masqués alors?) mais comment distinguer le fait que l'utilisateur veuille soit uploader une image, soit valider les données?
    C'est le côté "contextuel" que je ne saisi pas.
    Merci en tout cas, c'est une piste intéressante !

    RomainVALERI:

    J'aurais en effet voulu traiter les images sans submit mais même avec Ajax, je ne vois pas comment car il faut un méchanisme d'upload. Après ça se complique car, AJAX ou pas, pour voir l'image il faut au moins l'envoyer sur le serveur mais sans bouton submit c'est exclu (on crie à l'hérésie quand je le propose car cela serait considéré comme une faille de sécurité d'envoyer un fichier sans click de l'utilisateur).
    C'est vrai que je ne suis pas attaché au bouton submit pour les images, mais comment l'éviter.
    Saurais-tu m'en dire plus sur ton idée?

    Merci en tous cas pour vos réponses.
    Si vous pouviez détailler vos propositions, ce serait cool .

    Je redemande au cas où: Vous semblez tous éviter le script qui, pourtant, est à un cheveu de me dépanner. Qu'est-ce qui y pose problème?
    Car il me semble que je garde le contrôle de ce qui est envoyé et que cela réponde à mon cas: si j'upload et soumets les images, elles apparaissent sans rafraichir la page et si je valide les données, seules celles-ci partent vers un script de traitement sans se soucier des images qui sont déjà uploadées.
    Je n'insiste pas dans cette voie, juste que l'ignorer m'intrigue...

    Merci à tous ceux qui ont participé à ce thread!

    En ce qui concerne la clarté et la pertinence de vos réponses, je serais mal avisé de faire des remarques mais avouez que, érudit ou non, une phrase dans le vague n'a jamais eu pour vocation d'aider à résoudre un problème.
    Cela dit, je pense être resté courtois et suis venu avec des arguments. On peut exprimer un différend sans se prendre le chou. Je n'ai ni mordu ni craché dans la soupe, cela dit, mes excuses à Mathieu2000 si je l'ai offensé, ce n'était pas mon but.

  9. #9
    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 640
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    pourquoi perte des données ???
    si le champs n'est pas transmis, un simple test isset coté sevreur et pas de traitement... donc les données de la table ne sont pas modifiées ...

    qu'est ce qui détermine si les données doivent être modifiées ou pas ? le fait que le champs soit renseigné ou qu'il ai été modifié ?

    Le principe reste le même sur le onsubmit tu testes si le champs est renseigné ou lors de sa modifiaction tu modifies un flag qui te permettra de le basculer ensuite en display none lors du submit ...
    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 !

  10. #10
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    Je vois maintenant ce que tu veux dire et je redis ce qui l'a déjà été SpaceFrog: je ne suis nulle part en javascript et ce que tu proposes semble demander un minimum de connaissances à ce niveau (sans compter que je devrai me défaire d'un code que j'ai mis en place et qui est à deux doigts d'aboutir pourtant).
    Créer un "onsubmit", d'accord mais plus loin que ça, ça me dépasse (appel de fonctions javascript etc...).
    C'est d'ailleurs à cause de ce manque que j'ai fait appel à vous pour me dire ce qui semble ne pas aller dans le javascript proposé.
    Sans quoi, je l'aurais probablement débuggué par moi-même.

    Cela dit et je réitère ma question: pourquoi évite-t-on ce script à ce point ainsi que toutes les questions qui le concernent?
    Il est pourtant à 99% de me convenir.

    J'aimerais vraiment suivre ta voie mais je vais me viander à coup sûr alors que là, j'y suis presque.

  11. #11
    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 640
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    lol non au contraire tu en est loin tant que tu auras plusieurs forms ...
    tu ne pourras en soumetre qu'un à la fois

    Maintenant tu fais bien comme tu veux ..
    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 !

  12. #12
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    lol non au contraire tu en est loin tant que tu auras plusieurs forms ...
    tu ne pourras en soumetre qu'un à la fois
    Ta réponse me laisse perplexe...

    A l'heure actuelle, je n'ai pas un envoi que d'une form à la fois!

    Je crois qu'on s'est mal compris sur ce que j'obtiens à l'heure actuelle

    J'ai bien un submit effectif de TOUTES les forms désirées, juste pas de toutes les infos qu'elles contiennent.
    Cela prouve bien que le submit pour toutes les forms fonctionne bel et bien.

    Pour mieux comprendre, voici ce que je récupère au final avec le script:

    form1 titre1= 'blabla'
    form1 reference1=
    form1 poids1=45
    form1 hauteur1=
    form1 largeur1=27
    form1 prix1=

    form2 titre2='blibli'
    form2 reference2=
    form2 poids2=37
    form2 hauteur2=
    form2 largeur2=25
    form2 prix2=

    form3 titre3='bloblo'
    form3 reference3=
    form3 poids3=41
    form3 hauteur3=
    form3 largeur3=13
    form3 prix3=

    J'ai donc bien récupéré les infos de toutes mes forms mais, pour une raison que j'ignore, il n'a traité que les données impairs et à laissé les données paires en plan.

    Ce qui me fait dire que ce n'est pas lié à mes valeurs et que c'est bien au niveau du script que le problème se pose, c'est que si j'intervertis dans mes forms les champs 'titre' et "reference", voici ce que j'obtiens:

    form1 reference1=1234
    form1 titre1=
    form1 poids1=45
    form1 hauteur1=
    form1 largeur1=27
    form1 prix1=

    form2 reference2=5678
    form2 titre2=
    form2 poids2=37
    form2 hauteur2=
    form2 largeur2=25
    form2 prix2=

    form3 reference3=7412
    form3 titre3=
    form3 poids3=41
    form3 hauteur3=
    form3 largeur3=13
    form3 prix3=

    Comme tu peux le voir, toutes les forms sont bien envoyées et c'est en ça que je pense qu'on n'est pas loin du résultat escompté.
    Le fait que, par contre, seul un résultat sur deux est traité doit être un problème de boucle mal gérée dans le javascript mais j'ai beau chercher, je ne trouve pas.

    Non?

  13. #13
    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 640
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    je en vois qu'une seule soluton avec ton système:
    faire une horrible routine qui dasn une bocle ouvre des popups ou des iframes cachés pour soumettre un à un tous tes forms ...

    mais tant que tu persisteras avec plusieurs form cela restera plus que boiteux ...
    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 !

  14. #14
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    Tu as lu mon dernier message?
    Ta dernière réponse laisse à penser que non puisque j'y spécifie explicitement que toutes mes forms sont déjà envoyées (et non pas une seule comme tu le crois encore).

    Pour finir, j'aimerais dire que tu affirmes que je persiste à ne pas vouloir utiliser ta méthode alors même que je te dis que j'aimerais bien mais que je n'ai pas les connaissances suffisantes en javascript pour le faire.
    J'ai tout juste compris ton concept alors pour ce qui est de le réaliser...

    Dialogue de sourd et le ton devient lourd.
    Dommage.

    Cela dit, j'insiste: merci d'avoir essayé de m'aider.

  15. #15
    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 640
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    ça fait plus de dix ans que je pratique le javascript et je n'ai JAMAIS vu un système de forms imbriqués fonctionner correctement ...

    Mais si tu tiens a inventer la piere philosophale ne te gènes surtout pas pour moi !

    Tu avoues humblement ne pas avoir un niveau elevé en javascirpt mais tu persistes à vouloir te passer de conseils avisés ...
    Dommage aussi

    la Methode t'as été donnée précedemment, je ne tiens pas a poursuivre dans la lourdeur ...

    Bonne chance
    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 !

  16. #16
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    Veux-tu bien arrêter d'être insultant à mon égard?

    Je ne prétends pas avoir trouvé la pierre philosophale mais difficile de t'accorder toute crédibilité quand:

    1) Tu dis que j'ai une form seulement d'envoyée alors que je te répète à l'envi que non, preuve à l'appui.

    2) Que tu dis, comme tu viens de le faire, que j'imbrique des forms alors que ma méthode n'en imbrique aucune!

    Même 20 ans de pratique ne te feront jamais répondre correctement à des questions que tu ne lis pas.

    Tout ça parce que t'es vexé que je décide, explication polie à l'appui, de ne pas choisir ta voie du jedi?
    Remets-t'en bon sang!

    Comme tu dis, t'as 10 ans de métier et moi pas et tu crois que ton scénario établi sur 4 phrases va suffire à me faire pondre un script fonctionnel?
    Ne pas savoir et ne pas vouloir c'est différent. Fais la part des choses.

    Faut arrêter de prendre les forumeurs pour des faire-valoir et penser à aider de manière réaliste avec les compétences dont ils disposent!

    Sans quoi ce ne serait pas un "forum" d'entraide mais un "panthéon"...

  17. #17
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    Voici la correction du bug trouvée par une personne sur un autre forum.
    Le code est complet et peut être testé tel quel.

    Le résultat est parfait, un seul submit, plusieurs forms et pas de forms imbriquées.
    De 99%, je passe à 100% de satisfaction en ayant corrigé une ligne.

    Merci à tous ceux qui ont participé et voici, sans mesquinerie, la preuve qu'en 10 ans et un jour on peut en savoir plus qu'en 10 ans tout court...

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    <?php
    if (isset($_POST['a']))
     {
         echo $_POST['a'];?> <br/><?php
         echo $_POST['b'];?> <br/><?php
         echo $_POST['c'];?> <br/><?php
         echo $_POST['d'];?> <br/>  
     
    <?php
     }
     else
     {
    ?>
     
    <html>
    <head>
    <script type="text/javascript">
    function submitFormsById(arrayDIdDeForms)
    {
    	var grosForm = document.createElement("form");
    	with(grosForm)
    	{
    		method = "post";
    		action = "<?php $_SERVER['PHP-SELF'] ?>";
    		name = "grosForm";
    		id = "grosForm";
    		style.display = "none";
    	}
    	for(var i=0;i<arrayDIdDeForms.length;i++)
    	{
    		appendFormVals2Form(document.getElementById(arrayDIdDeForms[i]), grosForm);
    	}
    	document.body.appendChild(grosForm);
    	grosForm.submit();
    }
     
     
    function appendFormVals2Form(petitForm, formConteneur)
    {
    	var elements = petitForm.elements;
    	for(var o=0;o<elements.length;o++)
    	{
    		var element=elements[o].cloneNode(true);
    		formConteneur.appendChild(element);
    	}
    	return formConteneur;
    }
    </script>
     
    </head>
    <body>
    <form action="<?php echo $_SERVER['PHP-SELF']; ?>" method="post" id="form2">
    <input type="text" name="b" id="b" value=""/>
    </form>
    <form action="<?php echo $_SERVER['PHP-SELF']; ?>" method="post" id="form1">
    <input type="text" name="a" id="a" value=""/>
    <input type="text" name="c" id="c" value=""/>
    <input type="text" name="d" id="d" value=""/>
    </form>
    <input value="test" type="button" onclick="submitFormsById(Array('form1','form2'))"/>
    </body>
    </html>
    <?php
    }
    ?>
    Bien à vous.

  18. #18
    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 640
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Jusqu'a preuve du contraire, le seul code HTML que tu nous ait montré
    c'est à dire celui de ton premier poste présente bien des forms imbriqués ...
    Et je ne vois rien d'insultant dans mes propos ...

    Je n'ai juste pas encore trouvé d'extension boule de cristal qui m'aurait permis de voir l'évolution de ton code hrml ...
    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 !

  19. #19
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    Jusqu'au bout hein?!

    Plus tu insistes, plus tu confirmes: tu ne lis pas ce qu'on écrit:

    Tout va bien sauf une chose: pas moyen d'éviter que les formulaires d'images ne se trouvent à l'intérieur du grand formulaire or des formulaires imbriqués ne fonctionnent pas (c'est ce que j'ai vérifié et qui semble confirmé par une recherche google étendue)..


    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
    <form 1>
       INPUT données
       <form a>
            INPUT image1
            INPUT submit
       </form a>
       INPUT données
       <form b>
            INPUT image2
            INPUT submit
       </form b>
       INPUT données
     
       INPUT submit des données uniquement
    </form 1>


    Ma dernière idée a donc été de "partitionner" le grand formulaire en plus petits, de la sorte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <form 1>INPUT données</form 1>
    <form a>
         INPUT image1
         INPUT submit
    </form a>
    <form 2>INPUT données</form 2>
    <form b>
         INPUT image2
         INPUT submit
    </form b>
    <form 3>INPUT données</form 3>
     
    <form>INPUT  submit (form1,form2, form3)</form>
    Cette solution est élégante mais php ne la permet pas et ne connaissant pas le javascript, j'ai trouvé un code qui permet de faire un submit pour envoyer différents formulaires spécifiques:

    Ceci est un plan expliquant ce que je veux faire et ce qui ne va pas et si tu avais lu, tu aurais bien vu que le premier plan est ce qui pose problème (les forms imbriqués) et comment je compte éviter ce problème en les désimbriquant (deuxième shéma).

    Ainsi, je venais ici avec avec la proposition d'un script de submit pour plusieurs forms qui EVITE les forms imbriquées en envoyant des formulaires qui se suivent mais en une fois.

    Seulement voilà, il ne fonctionnait pas complètement et c'est là où je demandais de l'aide.
    En échange, j'ai eu ton arrogance.

    Mais c'est le lot des gens qui "savent".
    Ils savent tellement qu'ils n'ont besoin que de lire la moitié pour savoir ce que j'ai en tête...

    Tu auras pu me demander de clarifier mon propos, je l'aurais fait sans peine.
    Mais quand je te dis que tu n'as pas compris, crois-moi et ne te braque pas sur ta position au point de fantasmer mon problème et de m'enfermer dans le rôle du mec qui te snobbe et n'écoute rien de ce qu'on lui dit.

    J'espère que cette fois-ci, tu liras la bonne ligne sur deux

    Bien à toi.

  20. #20
    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 640
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    l'essentiel étant que cela fonctionne
    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 !

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/06/2008, 13h47
  2. [VS 2005][C#] Une seule icone pour tous les formulaires.
    Par Gold.strike dans le forum Windows Forms
    Réponses: 5
    Dernier message: 26/09/2006, 14h56
  3. [JDBC]Boucle sur tous les éléments du ResultSet
    Par Terminator dans le forum JDBC
    Réponses: 1
    Dernier message: 22/09/2005, 19h30
  4. Recherche sur tous les fichiers d'un projet
    Par Kaorichan dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 28/04/2005, 11h28

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