Partage
  • Partager sur Facebook
  • Partager sur Twitter

Formulaire ne s'envoie plus après l'ajout d'un dra

Sujet résolu
    22 janvier 2020 à 12:00:20

    Bonjour à tous, j'ai une question qui va certainement vous sembler très bête mais je début alors ne m'en voulez pas svp :aie:

    Alors voilà, j'ai un template.html.twig, dans ce template j'ai une balise

    qui créer une fiche de non conformité lorsqu'on le submit. Cela fonctionnait très bien.
    Jusqu'à ce que je rajoute deux balises sur des endroits différents de ma page pour inserer un drag and drop comme voici:

    <link href="{{asset('dropZone.css')}}" type="text/css" rel="stylesheet" />
    
                    <script src="dropzone.min.js"></script>
    
                    <form action="monController.php" class="dropzone"></form>

    Cependant depuis que je les ai ajoutés, impossible de subit mon formulaire depuis cet ajout. Cela reste sur la même page comme si je ne cliquais pas sur le bouton.
    Comment faire pour y remédier ? merci.

    • Partager sur Facebook
    • Partager sur Twitter
      22 janvier 2020 à 12:13:39

      Bonjour, ta balise form ne contient pas l'attribut method -> POST / GET

      + je ne vois pas ton bouton submit, peut-on le voir ?

      -
      Edité par Mehddii 22 janvier 2020 à 12:17:39

      • Partager sur Facebook
      • Partager sur Twitter

      Postez votre code et vos msg d'erreurs - "ça marche pas" n'est pas un message d'erreur ...

        22 janvier 2020 à 12:17:13

        J'ai fais comme ça car j'ai vu tous les exemples internet qui ne mettaient pas de POST/GET...
        • Partager sur Facebook
        • Partager sur Twitter
          22 janvier 2020 à 12:18:44

          Tout les exemples internet ? Ce sont des exemples à ne pas considérer alors : https://developer.mozilla.org/fr/docs/Web/HTML/Element/Form

          Sinon comment va tu récupérer les données dans ce cas en php ?

          -
          Edité par Mehddii 22 janvier 2020 à 12:21:53

          • Partager sur Facebook
          • Partager sur Twitter

          Postez votre code et vos msg d'erreurs - "ça marche pas" n'est pas un message d'erreur ...

            22 janvier 2020 à 12:36:25

            Merci beaucoup, mais dans le lien que tu as envoyé, ce ne sont pas des formulaires qui permettent un drag and drop, je parlais d'exemples qui le permettent comme celui là: https://www.startutorial.com/articles/view/how-to-build-a-file-upload-form-using-dropzonejs-and-php

            Mon formulaire qui englobe tout (ma création de fiche et les form pour les drag and drop) possède lui une action="POST" :)

            • Partager sur Facebook
            • Partager sur Twitter
              22 janvier 2020 à 12:43:50

              Le drag and drop fonctionne correctement ? Tu peux y glisser des fichiers sans problème ?

              Bizzare que ton bouton ne fonctionne pas, peux-tu nous le montrer ?

              Sinon, as-tu vérifier qu'il n'y ai pas truc dans le script que tu as prit qui bloquerait la soumission de ce dernier ? Un preventDefault truc comme ça ?

              • Partager sur Facebook
              • Partager sur Twitter

              Postez votre code et vos msg d'erreurs - "ça marche pas" n'est pas un message d'erreur ...

                22 janvier 2020 à 12:51:52

                Je peux y glisser une photo sans problème, mais lorsque je passe la souri sur la photo ça me met un message d'erreur enorme que je ne comprends pas comment enlever, il me dit que la route n'est pas trouvée pour mon controller... (voici le début) : 

                comment ça montrer le bouton ? c'est un bouton type="submit"

                -
                Edité par débutanteEnCodageSiteWeb 22 janvier 2020 à 12:52:30

                • Partager sur Facebook
                • Partager sur Twitter
                  22 janvier 2020 à 13:20:16

                  On sait jamais car si tu met pas submit au niveau tu type ça ne soumet pas comme tu dis. Pourtant là ce n'est pas la soumission le problème mais au niveau du route je présume. Ce n'est pas un message d'erreur comme tu peux le remarquer, c'est du code HTML, sauf au niveau de :

                  No route found for POST controller.php ...

                  Donc j'en conclus que ton sujet doit être dans le forum PHP

                  A part ça il faut vérifier ton routes.yaml, qu'il contienne bien les chemins nécessaires.

                  Et puisque tu ne spécifie pas de méthode http dans ton formulaire, je présume que le problème vient de ton controller.php

                  -
                  Edité par Mehddii 22 janvier 2020 à 13:25:06

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Postez votre code et vos msg d'erreurs - "ça marche pas" n'est pas un message d'erreur ...

                    22 janvier 2020 à 15:00:46

                    Merci pour ta réponse ! en effet j'ai changé et mis la route qui renvoyait à mon controller et je n'ai plus le message HTML. Cependant cela ne marche toujours pas lorque je clique sur le bouton submit pour envoyer le formulaire POST qui permet de créer la fiche et dans lequel se trouve les formulaires de drag and drop...

                    J'ai essayé de regarder le code de inspecter l'element pour le bouton submit mais je ne vois pas quoi chercher qui montrerait pourquoi cela ne s'envoie pas la dedans

                    -
                    Edité par débutanteEnCodageSiteWeb 22 janvier 2020 à 15:02:09

                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 janvier 2020 à 15:22:08

                      Personnellement j'opterais pour le script javascript qui empêche la soumission du formulaire, si tu l’enlèves, ça marche ? Car tu dis que tout fonctionnait bien avant de les mettre

                      Par ailleurs, ton action est correct ? Ne devrais-tu pas plutôt utiliser un {{path()}} ?

                      -
                      Edité par Mehddii 22 janvier 2020 à 15:38:07

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Postez votre code et vos msg d'erreurs - "ça marche pas" n'est pas un message d'erreur ...

                        22 janvier 2020 à 15:54:20

                        Bonjour,

                        Mauvais forum

                        Le sujet est déplacé de la section HTML / CSS vers la section Javascript

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                          22 janvier 2020 à 17:29:42

                          en effet, j'ai changé le action avec le path et il n'y a plus le message. Cependant le bouton ne marche toujours pas...
                          Je ne peux pas désactiver le form, celui-ci permet de faire l'action dès qu'un photo est ajoutée à la dropzone. Sans le form je ne peux pas réucperer les photos mises...
                          • Partager sur Facebook
                          • Partager sur Twitter
                            22 janvier 2020 à 18:05:36

                            Je te demande seulement de faire des tests, il va bien falloir tester pour trouver ou est l'erreur !

                            Le même formulaire, tu le modifies à ce que tu n'utilises plus le script que tu utilises pour le drag and drop, et pourquoi pas faire un test avec un echo sur la même page, histoire de voir si le problème vient du script

                            • Partager sur Facebook
                            • Partager sur Twitter

                            Postez votre code et vos msg d'erreurs - "ça marche pas" n'est pas un message d'erreur ...

                              24 janvier 2020 à 12:04:19

                              pour l'instant j'ai essayé de faire ça

                              <script src="https://rawgit.com/enyo/dropzone/master/dist/dropzone.js"></script>
                              <link rel="stylesheet" href="{{asset('dropZone.css')}}">
                              <form action="{{path('ficheNC')}}" enctype="multipart/form-data" method="POST">
                                  <input type="text" id ="firstname" name ="firstname" />
                                  <input type="text" id ="lastname" name ="lastname" />
                                  <div  class="dropzone dz-clickable" >
                                      <div class="dz-default dz-message" aria-placeholder="">
                                          <span>Drop files here to upload</span>
                                          <input type="file" multiple="multiple" class="dz-hidden-input" style="visibility: hidden; position: absolute; top: 0; left: 0; height: 0; width: 0;">
                               
                                      </div>
                                  </div>
                                  <button type="submit" id="submit-all"> upload </button>
                              </form>
                               
                              <script src="dropzone.js">
                                  Dropzone.options.myDropzone= {
                                      url: {{path('ficheNC')}},
                                      autoProcessQueue: false,
                                      uploadMultiple: true,
                                      parallelUploads: 5,
                                      maxFiles: 1,
                                      maxFilesize: 1,
                                      acceptedFiles: 'image/*',
                                      addRemoveLinks: true,
                                      init: function() {
                                          dzClosure = this; // Makes sure that 'this' is understood inside the functions below.
                               
                                          // for Dropzone to process the queue (instead of default form behavior):
                                          document.getElementById("submit-all").addEventListener("click", function(e) {
                                              // Make sure that the form isn't actually being sent.
                                              e.preventDefault();
                                              e.stopPropagation();
                                              dzClosure.processQueue();
                                          });
                               
                                          //send all the form data along with the files:
                                          this.on("sendingmultiple", function(data, xhr, formData) {
                                              // formData.append("firstname", jQuery("#firstname").val());
                                              // formData.append("lastname", jQuery("#lastname").val());
                                          });
                                      }
                                  }
                              </script>

                              cependant cela ne fonctionne pas: la partie dropzone ne permet pas de mettre des photos dedans... J'ai aussi essayé en mettant

                              <form action="{{path('ficheNC')}}" enctype="multipart/form-data" method="POST" class="dropzone dz-clickable" >

                               et là la dropzone permet de mettre des photos dedans mais celle ci fait la taille du form ce qui n'est pas ce que je veux....
                              Voila voila si quelqu'un peut m'aider.... Merci beacoup !

                              Mehddii , e suis désolée si vous avez eu l'impression que j'abandonnais ce sujet ce n'était pas mon intention, j'essayais juste de voir si je pouvais trouver une approche différente, j'ai essayé quelque tests mais rien de concluant... je ne vois pas bien quoi test, ni comment desacticer un form comme vous l'avez proposé, je ne connais pas grand chose à js.

                              Merci !



                              • Partager sur Facebook
                              • Partager sur Twitter
                                24 janvier 2020 à 12:20:23

                                Re,

                                Après avoir fait une recherche, je suis tomber sur ceci : https://codepen.io/MehdiX/pen/wvBOaYN

                                J'ai rajouter un bouton submit avec comme valeur envoyer et il fonctionne correctement.

                                En espérant que cela t'aidera

                                Sinon pour plus d'exemples voir : dropzone js codepen

                                J'avais simplement demander d'enlever le script que tu utilises pour voir si le bouton n'est pas bloqué par un code se trouvant dans ce script. Enlever la balise <script> quoi .. et voir si le bouton fonctionne à nouveau.

                                Car tu avais dit que le problème était survenu lors de l'ajout du script sur ta page. 

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Postez votre code et vos msg d'erreurs - "ça marche pas" n'est pas un message d'erreur ...

                                  24 janvier 2020 à 12:41:34

                                  Bonjour, merci pour le lien !

                                  Cependant lorsque j'utilise, j'ai le problème évoqué au dessus: la dropzone fait la taille du form... Hors j'aimerai que celle-ci ne prenne qu'une partie du form, je ne sais pas si je suis très claire...

                                  Encore merci pour votre aide !

                                  Le problème du bouton vient, je pense, du fait que j'avais mis les balises form de ma dropzone dans ma balise form methode="POST" qui permettait de soumettre le formulaire. C'est pourquoi maintenant j'essaye de n'utiliser qu'une balise form pour mon formulaire et ma dropzone mais c'est plus compliqué que ce que je pensais...

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    24 janvier 2020 à 13:07:21

                                    Je n'ai pas trop compris, pourrais-tu nous représenter le problème sur un codePen ?

                                    Sinon, si ce que tu veux c'est réduire la taille du dropzone, tu peux agir sur le css dans ce cas exemple : https://codepen.io/MehdiX/pen/wvBOaYN

                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Postez votre code et vos msg d'erreurs - "ça marche pas" n'est pas un message d'erreur ...

                                      24 janvier 2020 à 14:03:53

                                      Je ne sais pas comment représenter mon problème avec un codePen... Je vais essayer de l'expliquer plus clairement:

                                      Ce code la marche très bien, la dropzone permet d'ajouter des photos donc c'est bien

                                      <script src="https://rawgit.com/enyo/dropzone/master/dist/dropzone.js"></script>
                                      <link rel="stylesheet" href="{{asset('dropZone.css')}}">
                                      <form action="{{path('ficheNC')}}" enctype="multipart/form-data" method="POST" class="dropzone dz-clickable" >
                                          <input type="text" id ="firstname" name ="firstname" />
                                          <input type="text" id ="lastname" name ="lastname" />
                                          <div  >
                                              <div class="dz-default dz-message" aria-placeholder="">
                                                  <span>Drop files here to upload</span>
                                                  <input type="file" multiple="multiple" class="dz-hidden-input" style="visibility: hidden; position: absolute; top: 0; left: 0; height: 0; width: 0;">
                                      
                                              </div>
                                          </div>
                                          <button type="submit" id="submit-all"> upload </button>
                                      </form>
                                      
                                      
                                      
                                      <script src="dropzone.js">
                                          Dropzone.options.myDropzone= {
                                              url: {{path('ficheNC')}},
                                              autoProcessQueue: false,
                                              uploadMultiple: true,
                                              parallelUploads: 5,
                                              maxFiles: 1,
                                              maxFilesize: 1,
                                              acceptedFiles: 'image/*',
                                              addRemoveLinks: true,
                                              init: function() {
                                                  dzClosure = this; // Makes sure that 'this' is understood inside the functions below.
                                      
                                                  // for Dropzone to process the queue (instead of default form behavior):
                                                  document.getElementById("submit-all").addEventListener("click", function(e) {
                                                      // Make sure that the form isn't actually being sent.
                                                      e.preventDefault();
                                                      e.stopPropagation();
                                                      dzClosure.processQueue();
                                                  });
                                      
                                                  //send all the form data along with the files:
                                                  this.on("sendingmultiple", function(data, xhr, formData) {
                                                      // formData.append("firstname", jQuery("#firstname").val());
                                                      // formData.append("lastname", jQuery("#lastname").val());
                                                  });
                                              }
                                          }
                                          var dropzone = new Dropzone('#demo-upload', {
                                              previewTemplate: document.querySelector('#preview-template').innerHTML,
                                              parallelUploads: 2,
                                              thumbnailHeight: 120,
                                              thumbnailWidth: 120,
                                              maxFilesize: 3,
                                              filesizeBase: 1000,
                                              thumbnail: function(file, dataUrl) {
                                                  if (file.previewElement) {
                                                      file.previewElement.classList.remove("dz-file-preview");
                                                      var images = file.previewElement.querySelectorAll("[data-dz-thumbnail]");
                                                      for (var i = 0; i < images.length; i++) {
                                                          var thumbnailElement = images[i];
                                                          thumbnailElement.alt = file.name;
                                                          thumbnailElement.src = dataUrl;
                                                      }
                                                      setTimeout(function() { file.previewElement.classList.add("dz-image-preview"); }, 1);
                                                  }
                                              }
                                      
                                          });
                                      
                                      
                                          // Now fake the file upload, since GitHub does not handle file uploads
                                          // and returns a 404
                                      
                                          var minSteps = 6,
                                              maxSteps = 60,
                                              timeBetweenSteps = 100,
                                              bytesPerStep = 100000;
                                      
                                          dropzone.uploadFiles = function(files) {
                                              var self = this;
                                      
                                              for (var i = 0; i < files.length; i++) {
                                      
                                                  var file = files[i];
                                                  totalSteps = Math.round(Math.min(maxSteps, Math.max(minSteps, file.size / bytesPerStep)));
                                      
                                                  for (var step = 0; step < totalSteps; step++) {
                                                      var duration = timeBetweenSteps * (step + 1);
                                                      setTimeout(function(file, totalSteps, step) {
                                                          return function() {
                                                              file.upload = {
                                                                  progress: 100 * (step + 1) / totalSteps,
                                                                  total: file.size,
                                                                  bytesSent: (step + 1) * file.size / totalSteps
                                                              };
                                      
                                                              self.emit('uploadprogress', file, file.upload.progress, file.upload.bytesSent);
                                                              if (file.upload.progress == 100) {
                                                                  file.status = Dropzone.SUCCESS;
                                                                  self.emit("success", file, 'success', null);
                                                                  self.emit("complete", file);
                                                                  self.processQueue();
                                                                  //document.getElementsByClassName("dz-success-mark").style.opacity = "1";
                                                              }
                                                          };
                                                      }(file, totalSteps, step), duration);
                                                  }
                                              }
                                          }
                                      </script>
                                      
                                      
                                      

                                      MAis lorsque je met la

                                      class="dropzone dz-clickable"

                                      sur le form, la zone de la dropzone est celle du formulaire comme la photo ci-dessous:

                                      Et meme si je change le CSS de la dropzone cela diminue la taille du form mais la dropzone correspond toujours au form.

                                      Si je mets la

                                      class="dropzone dz-clickable" 

                                      sur une div afin de pouvoir jour su sa taille comme le code-ci dessous:

                                      <form action="{{path('ficheNC')}}" enctype="multipart/form-data" method="POST" >
                                          <input type="text" id ="firstname" name ="firstname" />
                                          <input type="text" id ="lastname" name ="lastname" />
                                          <div  class="dropzone dz-clickable" >
                                              <div class="dz-default dz-message" aria-placeholder="">
                                                  <span>Drop files here to upload</span>
                                                  <input type="file" multiple="multiple" class="dz-hidden-input" style="visibility: hidden; position: absolute; top: 0; left: 0; height: 0; width: 0;">
                                      
                                              </div>
                                          </div>
                                          <button type="submit" id="submit-all"> upload </button>
                                      </form>
                                      

                                      Cela me fais une jolie dropzone dans le formulaire sans prendre tout sa taille comme sur la photo ci-dessous:


                                      Cependant la dropzone ne fonctionne plus, lorsque je clique dessus je ne peux pas ajouter de photo, ni lorsque je drop les photos dedans, ce n'est plus une dropzone.

                                      Comment faire pour qu'elle soit de la forme ci-dessus mais avec la possiblité d'y déposer des photos ?

                                      J'espère avoir été plsu claire, encore merci !

                                      -
                                      Edité par débutanteEnCodageSiteWeb 24 janvier 2020 à 14:04:50

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        24 janvier 2020 à 14:45:15

                                        Voilà il suffisait de mieux expliquer !

                                        Donc pour commencer, ce que tu veux faire, c'est imbriquer un formulaire dans un autre -> Impossible

                                        Ce que j'ai fait :

                                        - J'ai fait deux formulaire séparés, leur est donner deux id différent, le premier sera id="form1" et le deuxième id="form2"

                                        - J'ai placer le formulaire contenant tes deux input au dessus, j'ai placer ensuite le formulaire du drag and drop

                                        - J'ai sorti le bouton Upload (le submit quoi ...) en dehors du premier formulaire (id="form2"), et lui est passer l'attribut form="form2" pour l'associé au formulaire d'où il vient :

                                        Voir l'attribut form html

                                        Après vient le problème de lors de l'envoi du formulaire, comment faire pour submit un bouton formulaire en récupérant depuis deux formulaires ? Facile, avec un peu de javascript tu peux le faire, voir -> https://stackoverflow.com/questions/7843355/submit-two-forms-with-one-button

                                        Donc la solution -> https://codepen.io/MehdiX/pen/povYgRa?editors=1100

                                        -
                                        Edité par Mehddii 24 janvier 2020 à 14:46:33

                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Postez votre code et vos msg d'erreurs - "ça marche pas" n'est pas un message d'erreur ...

                                          24 janvier 2020 à 15:00:29

                                          Je vais regarder tout ça et essayer de l'adapter à mon code, un énorme merci !
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            26 janvier 2020 à 23:22:31

                                            Bonsoir, je reviens ici car je n'arrive pas à faire la suite de ce que je voudrai faire...

                                            Donc grâce au code de Mehddii j'ai pu faire mon form et qu'il soit bien submit. Puisque j'ai besoin d'un formulaire "en pulisuers fois" qui me permet de créer une fiche et dans la fonction php de l'enregistrer sur une API et deux formulaires qui sont des dropzone qui me permettent de mettre des photos, ces photos devant etre également enregitrées sur l'API, j'ai quelque chose dans ce genre là pour le HTML

                                            <DIV id="dropzone">
                                                <form id="form2" action=routeQuiRenvoieALaFonctionPourCréerFiche methode="Post">
                                            //une partie de mon formulaire qui permet d'entrer les infos de la fiche
                                                </form>
                                                <form id="form1" action=routeQuiRenvoieALaFonctionPourCréerFiche enctype="multipart/form-data" method="POST" class="dropzone dz-clickable">
                                                <div  >
                                                    <div class="dz-default dz-message" aria-placeholder="">
                                                        <span>Drop files here to upload</span>
                                                        <input type="file" multiple="multiple" class="dz-hidden-input" style="visibility: hidden; position: absolute; top: 0; left: 0; height: 0; width: 0;">
                                             
                                                    </div>
                                                </div>
                                            </form>
                                               <form id="form2" action=routeQuiRenvoieALaFonctionPourCréerFiche methode="Post">
                                            //une partie de mon formulaire qui permet d'entrer les infos de la fiche
                                                </form>
                                              <form id="form1" action=routeQuiRenvoieALaFonctionPourCréerFiche enctype="multipart/form-data" method="POST" class="dropzone dz-clickable">
                                                <div  >
                                                    <div class="dz-default dz-message" aria-placeholder="">
                                                        <span>Drop files here to upload</span>
                                                        <input type="file" multiple="multiple" class="dz-hidden-input" style="visibility: hidden; position: absolute; top: 0; left: 0; height: 0; width: 0;">
                                             
                                                    </div>
                                                </div>
                                            </form>
                                              </DIV>

                                            Pour envoyer les infos et créer la fnc j'ai un peu de js qui me permet d'envoyer toutes les parties de form2 vers la fonction et ainsi créer ma fiche.

                                            Voilà mes questions : Comment faire pour récupérer les photos de mes dropzones dans ma fonction php et ainsi pouvoir les enregistrer sur mon API (une fois que j'ai les photos je sais les enregistrer sur mon API dans ma fonction php) ? Et comment je peux faire pour différencier les photos de je récupererais de la première dropzone et de la deuxième ?

                                            Merci beaucoup !

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              27 janvier 2020 à 8:08:37

                                              Bonjour,

                                              Ce n'est pas ce que je t'ai montrer, on ne met jamais d'id identiques dans le html sinon t'auras des erreur avec le W3C

                                              Seulement les deux premiers formulaire suffisent, avec un bouton en dehors qui correspond au premier pour submit, pourquoi tu en as 4 ?

                                              En gros ça doit donner un truc comme ça : https://codepen.io/MehdiX/pen/wvBZBpg?editors=1000

                                              Pour ta première question tout est expliqué sur le site de l'API en question, si tu as les bases de PHP, je ne vois pas ce qu'il y'a de si difficile. Essayes de faire et montre nous ou tu bloques.

                                              Deuxième question, je ne comprend toujours pas pourquoi tu utilises deux dropzone ? Une seule suffit non ?

                                              Sinon pour différencier la récupération depuis deux formulaires différents, je t'ai donner un lien à suivre, le revoilà en javascript : https://stackoverflow.com/questions/7843355/submit-two-forms-with-one-button

                                              Et puis tu disposes d'une FAQ si jamais tu bloques sur qq chose sur leur site, voir : https://www.startutorial.com/articles/view/move_uploaded_file-faq

                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              Postez votre code et vos msg d'erreurs - "ça marche pas" n'est pas un message d'erreur ...

                                                27 janvier 2020 à 9:40:06

                                                En fait j'ai 4 form en tout (dont 2 dropzone) car j'ai besoin de 2 dropzone à 2 endroits différents.

                                                En gros sur mon formulaire j'ai 3 "pages" qui sont des div que je montre ou que je cache en fonction de quand l'utilisateur appuie sur suivant ou précédent. Ma première "page" concerne les infos de la fiche de non conformité, la deuxieme les infos de cette non conformité où l'utilisateur peut ajouter une photo, et la dernière la mise en conformité ou l'utilisateur peut ajouter une photo également. Lors de l'ajout de la photos à l'api il y a une paramètre que je mets à true si la photo concerne à mise en en conformité et false si elle concerne la non conformité. C'est pourquoi j'ai besoin de deux dropzeons différentes où je réussi à différencier les photos que je récupère de l'un ou de l'autre.

                                                Pour le bouton qui différencie 2 formulaire je te recmercie ! c'est grâce à ça que je peux submit au même endroit mes deux form2. Cependant le problème n'est pas pour submit les formulaire mais pour récuperer les photos dans ma fonction en php... j'ai regardé le lien https://www.startutorial.com/articles/view/move_uploaded_file-faq mais je ne comprends vraiment pas bien ce qu'ils font

                                                Pour ce qui est de regarder le site de l'api, ce n'est pas une api que j'ai trouvé sur internet, c'est une api faite spécialement pour mon projet mais une fois les photos récupérées et différenciées je pense pouvoir me débrouiller pour les enregistrer sur l'api en code php :)

                                                Pour ce qui est des id semblables, je ne sais pas si vous parlez de l'id des divs ou des id des form, mais pour les id des form, grâce à mon bouton qui valide tous les form d'un certain id ça a l'air de marcher sans me faire d'erreur... 

                                                Encore merci pour votre réponse ! 

                                                -
                                                Edité par débutanteEnCodageSiteWeb 27 janvier 2020 à 9:56:09

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  27 janvier 2020 à 10:12:54

                                                  Je parle de la validation W3C -> https://validator.w3.org/#validate_by_input

                                                  On n'utilise jamais deux id identiques, pour cela il existe les class

                                                  Sinon, je ne saurais comment t'aider si tu ne commences pas à faire toi même, puis revenir ici avec un problème plus précis.

                                                  "Je ne comprend pas bien ce qu'ils font" n'est pas une question, pour cela je devrais relire toute l'api savoir ce qu'elle fait, voir même la tester par moi même pour te comprendre.

                                                  Donc je te conseillerais de commencer, trouver un problème précis sur lequel tu bloques, et revenir ici.

                                                  Sinon, si ton problème est plus générale, c'est à dire que tu veux récupérer des valeurs depuis des formulaires différents :

                                                  Alors en quoi ? Javascript ? PHP ?

                                                  Et quel est le soucis, tu as essayer de récupérer ces dernière mais ça ne marche pas ? Montre nous le code etc ...

                                                  En espérant pouvoir t'aider !

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter

                                                  Postez votre code et vos msg d'erreurs - "ça marche pas" n'est pas un message d'erreur ...

                                                    27 janvier 2020 à 10:43:03

                                                    Merci beaucoup,

                                                    J'ai vérifié que l'envoie du formulaire se faisait bien mais finalement avec 2 id pareils vous aviez raison cela ne marche pas, donc j'ai fait quelque chose comme ça :

                                                    <DIV id="dropzone">
                                                        <form id="form2" action=routeQuiRenvoieALaFonctionPourCréerFiche methode="Post">
                                                    //une partie de mon formulaire qui permet d'entrer les infos de la fiche
                                                        </form>
                                                        <form id="form1" action=routeQuiRenvoieALaFonctionPourCréerFiche enctype="multipart/form-data" method="POST" class="dropzone dz-clickable">
                                                        <div  >
                                                            <div class="dz-default dz-message" aria-placeholder="">
                                                                <span>Drop files here to upload</span>
                                                                <input type="file" multiple="multiple" class="dz-hidden-input" style="visibility: hidden; position: absolute; top: 0; left: 0; height: 0; width: 0;">
                                                      
                                                            </div>
                                                        </div>
                                                    </form>
                                                       <form id="form3" action=routeQuiRenvoieALaFonctionPourCréerFiche methode="Post">
                                                    //une partie de mon formulaire qui permet d'entrer les infos de la fiche
                                                        </form>
                                                      <form id="form4" action=routeQuiRenvoieALaFonctionPourCréerFiche enctype="multipart/form-data" method="POST" class="dropzone dz-clickable">
                                                        <div  >
                                                            <div class="dz-default dz-message" aria-placeholder="">
                                                                <span>Drop files here to upload</span>
                                                                <input type="file" multiple="multiple" class="dz-hidden-input" style="visibility: hidden; position: absolute; top: 0; left: 0; height: 0; width: 0;">
                                                      
                                                            </div>
                                                        </div>
                                                    </form>
                                                      </DIV>
                                                     <button  name="creationFiche" id="valider1" form="form2" class="btn btn-success" onclick="submitForms();">Valider</button

                                                    Avec une fonction js comme ceci :

                                                            function submitForms(){
                                                    
                                                                document.getElementById("form2").submit();
                                                                document.getElementById("form3").submit();
                                                    }

                                                    Mais cela ne récupère pas les valeurs du form3 je ne comprends pas pourquoi


                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      27 janvier 2020 à 10:51:46

                                                      Re,

                                                      Déjà ce n'est pas methode="" mais method="" (dans ton form2 et form3)

                                                      Peux-tu nous montrer tout le code complet et non pas que des form avec commentaires ? Egalement pour le javascript

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter

                                                      Postez votre code et vos msg d'erreurs - "ça marche pas" n'est pas un message d'erreur ...

                                                        27 janvier 2020 à 10:56:39

                                                        oui dans mon code cest method :)

                                                        Le voilà mais il est assez long et je suis débutante donc il ne doit pas etre très propore...

                                                        <script src="https://rawgit.com/enyo/dropzone/master/dist/dropzone.js"></script>
                                                        <link rel="stylesheet" href="{{asset('dropZone.css')}}">
                                                        <link rel="stylesheet" href="{{asset('testFNCdropzone.css')}}" />
                                                        <script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
                                                        
                                                        
                                                        <meta charset="utf-8">
                                                        
                                                        
                                                        <div id="page">
                                                            <div id="corps">
                                                                <aside>
                                                                    <div id="logoBlanc">
                                                                        <p>
                                                                            <img src= "{{asset('imagesProjet/logo_blanc.png')}}"  alt=" " />
                                                                        </p>
                                                                    </div>
                                                                    <div id="nomUtilisateurCO">
                                                                        Admin
                                                                    </div>
                                                                    <div id="bouttons">
                                                                        <div id="creationFicheNC">
                                                                            <div id="icons">
                                                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0,0H24V24H0Z" fill="none"/><path d="M7,15h7v2H7Zm0-4H17v2H7ZM7,7H17V9H7ZM19,3H14.82A2.988,2.988,0,0,0,9.18,3H5a1.752,1.752,0,0,0-.4.04A2.021,2.021,0,0,0,3.16,4.23,1.926,1.926,0,0,0,3,5V19a2.052,2.052,0,0,0,.16.78,2.119,2.119,0,0,0,.43.64,2.008,2.008,0,0,0,1.01.55A2.6,2.6,0,0,0,5,21H19a2.006,2.006,0,0,0,2-2V5A2.006,2.006,0,0,0,19,3Zm-7-.25a.75.75,0,1,1-.75.75A.755.755,0,0,1,12,2.75ZM19,19H5V5H19Z" fill="#b4b4b4"/></svg>
                                                                            </div>
                                                                            <div id="texte">
                                                                                <a href="{{path('ficheNC')}}">Créer une fiche de non-conformité</a><br/><br/><br/>
                                                                            </div>
                                                                        </div>
                                                                        <div id="consulterFicheNC">
                                                                            <div id="icons">
                                                                                <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><defs><clipPath id="a"><rect width="24" height="24" fill="none"/></clipPath></defs><g clip-path="url(#a)"><rect width="24" height="24" fill="none"/><path d="M107,17.3a9.624,9.624,0,0,1-8.8-5.5A9.732,9.732,0,0,1,107,6.3a9.624,9.624,0,0,1,8.8,5.5A9.624,9.624,0,0,1,107,17.3Zm0-13a11.782,11.782,0,0,0-11,7.5,11.817,11.817,0,0,0,22,0A11.782,11.782,0,0,0,107,4.3Zm0,10a2.5,2.5,0,1,1,2.5-2.5A2.476,2.476,0,0,1,107,14.3Zm0-7a4.5,4.5,0,1,0,4.5,4.5A4.481,4.481,0,0,0,107,7.3Z" transform="translate(-95 1)" fill="#b4b4b4"/></g></svg>
                                                                            </div>
                                                                            <div id="texte">
                                                                                <a href="{{path('listeFicheNC')}}">Consulter les fiches de non-conformité</a><br/><br/><br/>
                                                                            </div>
                                                                        </div>
                                                                        <div id="demandeSupp">
                                                                            <div id="icons">
                                                                                <svg xmlns="http://www.w3.org/2000/svg" width="21.5" height="21.5" viewBox="0 0 21.5 21.5"><path d="M13.321,3.876,22.33,21.832H4.311L13.321,3.876Zm0-1.948a1.554,1.554,0,0,0-1.278.937L2.866,21.155c-.7,1.25-.1,2.273,1.329,2.273H22.447c1.434,0,2.032-1.023,1.329-2.273h0L14.6,2.865a1.554,1.554,0,0,0-1.278-.937ZM14.664,19.4a1.344,1.344,0,1,1-1.344-1.344A1.344,1.344,0,0,1,14.664,19.4Zm-1.344-2.687a1.344,1.344,0,0,1-1.344-1.344V11.334a1.344,1.344,0,1,1,2.687,0v4.031A1.344,1.344,0,0,1,13.321,16.709Z" transform="translate(-2.571 -1.928)" fill="#b4b4b4"/></svg>
                                                                            </div>
                                                                            <div id="texte">
                                                                                <a href="{{path('listeDemandeSuppression')}}">Demande de suppression</a><br/><br/><br/>
                                                                            </div>
                                                                        </div>
                                                                        <div id="modiOrigines">
                                                                            <div id="icons">
                                                                                <svg xmlns="http://www.w3.org/2000/svg" width="19.301" height="19.301" viewBox="0 0 19.301 19.301"><path d="M12.221,1.928a9.65,9.65,0,1,0,9.65,9.65,9.65,9.65,0,0,0-9.65-9.65Zm0,18.094a8.416,8.416,0,0,1-3.34-.687l4.394-4.944a.6.6,0,0,0,.152-.4V12.181a.6.6,0,0,0-.6-.6c-2.13,0-4.377-2.214-4.4-2.236A.6.6,0,0,0,8,9.166H5.586a.6.6,0,0,0-.6.6v3.619a.6.6,0,0,0,.333.539L7.4,14.967v3.541A8.449,8.449,0,0,1,4.59,7.959h2.2a.6.6,0,0,0,.426-.177L9.632,5.37a.6.6,0,0,0,.177-.426V3.485a8.468,8.468,0,0,1,6.112.5c-.078.066-.154.135-.227.208a3.619,3.619,0,0,0,2.556,6.178q.09,0,.179,0a14.164,14.164,0,0,1-.158,7.018.6.6,0,0,0-.016.1,8.418,8.418,0,0,1-6.034,2.538Z" transform="translate(-2.571 -1.928)" fill="#b4b4b4"/></svg>
                                                                            </div>
                                                                            <div id="texte">
                                                                                <a href="{{path('ajoutSousOrigine')}}">Modification des origines</a><br/><br/><br/>
                                                                            </div>
                                                                        </div>
                                                                        <div id="bouttonProfil">
                                                                            <div id="icons">
                                                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><rect width="24" height="24" fill="none"/><path d="M10,9a1.5,1.5,0,1,1,1.5-1.5A1.538,1.538,0,0,1,10,9Zm0-5A3.543,3.543,0,0,0,6.5,7.5a3.5,3.5,0,0,0,7,0A3.543,3.543,0,0,0,10,4Zm6.4,10.8c-1.4-1.7-4.9-2.3-6.4-2.3s-4.9.6-6.4,2.3A7.913,7.913,0,0,1,2,10a8,8,0,0,1,16,0A7.913,7.913,0,0,1,16.4,14.8ZM5.1,16.3c.4-.9,3-1.8,4.9-1.8s4.5.9,4.9,1.8A7.481,7.481,0,0,1,10,18,7.481,7.481,0,0,1,5.1,16.3ZM10,0A10,10,0,1,0,20,10,10.029,10.029,0,0,0,10,0Z" transform="translate(2 2)" fill="#b4b4b4"/></svg>
                                                                            </div>
                                                                            <div id="texte">
                                                                                <a href="{{path('monProfil')}}">Profil</a><br/><br/><br/>
                                                                            </div>
                                                                        </div>
                                                                        <div id="utilisateurs">
                                                                            <div id="icons">
                                                                                <svg xmlns="http://www.w3.org/2000/svg" width="19.508" height="19.508" viewBox="0 0 19.508 19.508"><g transform="translate(-27 -573)"><g transform="translate(27 573)" fill="rgba(255,255,255,0)"><path d="M 9.753781318664551 18.50750350952148 C 4.926931381225586 18.50750350952148 1.000001311302185 14.5805835723877 1.000001311302185 9.753753662109375 C 1.000001311302185 4.926923751831055 4.926931381225586 1.000003695487976 9.753781318664551 1.000003695487976 C 14.58063125610352 1.000003695487976 18.50756072998047 4.926923751831055 18.50756072998047 9.753753662109375 C 18.50756072998047 14.5805835723877 14.58063125610352 18.50750350952148 9.753781318664551 18.50750350952148 Z" stroke="none"/><path d="M 9.753781318664551 2.000003814697266 C 5.478331565856934 2.000003814697266 2.000001907348633 5.478323936462402 2.000001907348633 9.753753662109375 C 2.000001907348633 14.02918434143066 5.478331565856934 17.50750350952148 9.753781318664551 17.50750350952148 C 14.02923202514648 17.50750350952148 17.50756072998047 14.02918434143066 17.50756072998047 9.753753662109375 C 17.50756072998047 5.478323936462402 14.02923202514648 2.000003814697266 9.753781318664551 2.000003814697266 M 9.753781318664551 3.814697265625e-06 C 15.14064121246338 3.814697265625e-06 19.50756072998047 4.366903305053711 19.50756072998047 9.753753662109375 C 19.50756072998047 15.14060401916504 15.14064121246338 19.50750350952148 9.753781318664551 19.50750350952148 C 4.366921424865723 19.50750350952148 1.9073486328125e-06 15.14060401916504 1.9073486328125e-06 9.753753662109375 C 1.9073486328125e-06 4.366903305053711 4.366921424865723 3.814697265625e-06 9.753781318664551 3.814697265625e-06 Z" stroke="none" fill="#b4b4b4"/></g><g transform="translate(30.863 577.906)"><path d="M10.323,25.809v-1.1A2.206,2.206,0,0,0,8.117,22.5H3.706A2.206,2.206,0,0,0,1.5,24.706v1.1" transform="translate(-1.5 -15.883)" fill="none" stroke="#b4b4b4" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/><path d="M11.911,6.706A2.206,2.206,0,1,1,9.706,4.5,2.206,2.206,0,0,1,11.911,6.706Z" transform="translate(-5.294 -4.5)" fill="none" stroke="#b4b4b4" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/><path d="M31.654,25.932v-1.1A2.206,2.206,0,0,0,30,22.7" transform="translate(-19.523 -16.006)" fill="none" stroke="#b4b4b4" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/><path d="M24,4.695a2.206,2.206,0,0,1,0,4.273" transform="translate(-15.729 -4.623)" fill="none" stroke="#b4b4b4" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/></g></g></svg>
                                                                            </div>
                                                                            <div id="texte">
                                                                                <a href="{{path('listeUsers')}}">Voir la liste des utilisateurs</a><br/><br/><br/>
                                                                            </div>
                                                                        </div>
                                                                        <div id="deconnexion">
                                                                            <div id="icons">
                                                                                <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><defs><clipPath id="a"><rect width="24" height="24" fill="none"/></clipPath></defs><g clip-path="url(#a)"><rect width="24" height="24" fill="none"/><path d="M155.889-9.524l-1.413,1.413L150.889-11.7,147.3-8.111l-1.413-1.413,3.588-3.588L145.889-16.7l1.413-1.413,3.587,3.588,3.587-3.588,1.413,1.413L152.3-13.111Zm-5-13.588a10,10,0,0,0-10,10,10,10,0,0,0,10,10,10,10,0,0,0,10-10,10,10,0,0,0-10-10Z" transform="translate(-138.889 25.111)" fill="#b4b4b4" fill-rule="evenodd"/></g></svg>
                                                                            </div>
                                                                            <div id="texte">
                                                                                <a href="{{path('logout')}}">Déconnexion</a><br/>
                                                                            </div>
                                                                        </div>
                                                                    </div>
                                                                </aside>
                                                            </div>
                                                        
                                                        
                                                            <div id="ficheNC">
                                                            <DIV id="dropzone">
                                                                <form id="form2" method="POST" action="{{path('ficheNC')}}">
                                                                    <div id="page1">
                                                                        <div id="enTete">
                                                                            <div id="premier">
                                                                                <div id="rondNumeroFonce"> <div id="numero">1</div></div>
                                                                                <div id="texteFonce">Description</div>
                                                                            </div>
                                                                            <div id="videClair"></div>
                                                        
                                                                            <div id="deuxieme">
                                                                                <div id="rondNumeroClair"> <div id="numero">2</div></div>
                                                                                <div id="texteClair">Type</div>
                                                                            </div>
                                                                            <div id="videClair"></div>
                                                                            <div id="troisieme">
                                                                                <div id="rondNumeroClair"> <div id="numero">3</div></div>
                                                                                <div id="texteClair">Conformité</div>
                                                                            </div>
                                                                        </div>
                                                                        <div id="infospage1">
                                                                            <div id="colonne1">
                                                        
                                                                                <div id="infoNC">
                                                                                    <label for="titre">Titre* </label> <br/> <input type="text" name="titre" id="titre" placeholder="Titre de la non conformité" required/>
                                                                                </div>
                                                        
                                                                                <div id="infosUser">
                                                                                    <div id="textInfosUser">
                                                                                        <div id="textEmetteur">Emetteur</div>
                                                                                        <div id="textDate">Date</div>
                                                                                    </div>
                                                        
                                                        
                                                                                    <div id="valeurInfosUser">
                                                                                        <div id="valeurEmetteur">{{user.utilisateur.nom}} {{user.utilisateur.prenom}}</div>
                                                                                        <div id="valeurDate">{{date}} </div>
                                                                                    </div>
                                                                                </div>
                                                        
                                                                                <div id="infoNC">
                                                                                    <label for="objet">Objet </label> <br/> <input type="text" name="objet" id="objet" placeholder="Type d'objet présentant un défaut"/>
                                                                                </div>
                                                        
                                                                                <div id="infoNC">
                                                                                    <label for="repere">Repère </label> <br/> <input type="text" name="repere" id="repere" placeholder="Repère de la pièce"/>
                                                                                </div>
                                                        
                                                                            </div>
                                                        
                                                                            <div id="colonne2">
                                                                                <div id="infoNC">
                                                                                    <label for="nomAffaire">Nom de l'affaire* </label> <br/> <input type="text" name="nomAffaire" id="nomAffaire" placeholder="Affaire" required/>
                                                                                </div>
                                                        
                                                                                <div id="infoNC">
                                                                                    <label for="numeroAffaire">Numéro de l'affaire* </label> <br/> <input type="text" name="numeroAffaire" id="numeroAffaire" placeholder="n°123456" required/>
                                                                                </div>
                                                        
                                                                                <div id="infoNC">
                                                                                    <label for="colis">Numéro du colis </label> <br/> <input type="text" name="colis" id="colis" placeholder="Numéro de colis"/>
                                                                                </div>
                                                        
                                                                                <div id="infoNC">
                                                                                    <label for="quantite">Quantité </label> <br/> <input type="text" name="quantite" id="quantite" placeholder="Nombre de pièces présentant le défaut"/>
                                                                                </div>
                                                        
                                                                            </div>
                                                                        </div>
                                                        
                                                        
                                                                        <input type="button" id="suivantPage1" value="Suivant" onclick="openPage2();"/>
                                                        
                                                                    </div>
                                                        
                                                                    <div id="page2">
                                                                        <div id="enTete">
                                                                            <div id="premier">
                                                                                <div id="rondNumeroFonce"> <div id="check"><svg xmlns="http://www.w3.org/2000/svg" width="43.974" height="43.974" viewBox="0 0 43.974 43.974"><path d="M33.077,14.246l-1.86-1.913a.4.4,0,0,0-.3-.127h0a.384.384,0,0,0-.3.127l-12.9,12.991-4.693-4.693a.409.409,0,0,0-.592,0l-1.882,1.882a.421.421,0,0,0,0,.6l5.92,5.92a1.872,1.872,0,0,0,1.237.6,1.962,1.962,0,0,0,1.226-.581h.011L33.087,14.849A.452.452,0,0,0,33.077,14.246Z" transform="translate(0.178 1.07)" fill="#fff"/></svg></div></div>
                                                                                <div id="texteFonce">Description</div>
                                                                            </div>
                                                                            <div id="videFonce"></div>
                                                        
                                                                            <div id="deuxieme">
                                                                                <div id="rondNumeroFonce"> <div id="numero">2</div></div>
                                                                                <div id="texteFonce">Type</div>
                                                                            </div>
                                                                            <div id="videClair"></div>
                                                                            <div id="troisieme">
                                                                                <div id="rondNumeroClair"> <div id="numero">3</div></div>
                                                                                <div id="texteClair">Conformité</div>
                                                                            </div>
                                                                        </div>
                                                        
                                                                        <div id="Origines">
                                                                            <div id="OriginesText">Origines*</div>
                                                        
                                                                            <div id="listeOrigines">
                                                                                <div id="aligneHorizontalement">
                                                                                    {% for origine, listeOrigine in parsee %}
                                                                                        <div id="Origine">
                                                                                            <input type="radio" name="origine" value="{{origine}}" id="{{origine}}" onclick="openListeSousOrigines('{{origine}}')" required/> <label for="{{origine}}">{{origine}}</label>
                                                                                        </div>
                                                                                    {% endfor %}
                                                                                </div>
                                                                            </div>
                                                        
                                                                        </div>
                                                                        <div id="listeSousOrigines"></div>
                                                                        <script>
                                                                            "use strict";
                                                                            const listeOrigines = document.getElementById('listeOrigines');
                                                                            const listeSousOrigines = document.getElementById('listeSousOrigines');
                                                                            listeOrigines.style.display = 'block';
                                                                            listeSousOrigines.style.display = 'none';
                                                                            function openListeSousOrigines( origine )
                                                                            {
                                                                                listeSousOrigines.style.display = 'block';
                                                        
                                                                                switch(origine)
                                                                                {
                                                                                        {% for origine, listeOrigine in parsee %}
                                                                                    case '{{origine}}':
                                                                                        listeSousOrigines.innerHTML="<div id=\"SousOrigines\">" +
                                                                                            " <div id=\"SousOriginesText\">Sous origines*</div>" +
                                                                                            "<div id=\"listeSousOrigines\">" +
                                                                                            "<div id=\"aligneHorizontalement\">" +
                                                                                            "               {% for sousOrigine in listeOrigine %}\n" +
                                                                                            "          <div id=\"SousOrigine\">      <input type=\"radio\" name=\"sousOrigine\" value=\"{{ sousOrigine }}\" id=\"{{ sousOrigine }}\" /> <label for=\"{{ sousOrigine }}\">{{ sousOrigine }}</label> </div>\n" +
                                                                                            "                {% endfor %} <div/><div/><div/>";
                                                                                        break;
                                                                                        {% endfor %}
                                                        
                                                                                    // default:
                                                                                    //   listeSousOrigines.innerText="rien n'est selectionné"
                                                                                }
                                                        
                                                                            }
                                                        
                                                                        </script>
                                                        
                                                                        <div id="infosNonConformite">
                                                                            <div id="nonConformiteText">
                                                                                Type de non-conformité*: <br/>
                                                                            </div>
                                                                            <div id="optionsNonConformite">
                                                                                <div id="nonConformite">
                                                                                    <input type="radio" name="categorie" value="PourInfo" id="PourInfo" /> <label for="PourInfo">Pour information</label>
                                                                                </div>
                                                                                <div id="nonConformite">
                                                                                    <input type="radio" name="categorie" value="Mineure" id="Mineure" /> <label for="Mineure">Mineure</label>
                                                                                </div>
                                                                                <div id="nonConformite">
                                                                                    <input type="radio" name="categorie" value="Majeure" id="Majeure" /> <label for="Majeure">Majeure</label><br /> <br/>
                                                                                </div>
                                                                            </div>
                                                                        </div>
                                                                        <br/>
                                                                        <div id="choixResponsable">
                                                                            <div id="choixReponsableText">Pour choisir un utilisateur qui validera la fiche : </div>
                                                        
                                                                            <label for="userVV">
                                                                                <select name="userVV" id="userVV"> <!--utiliser le name pour récup la valeur avec request-->
                                                                                    <option value="vide">Pour validation</option> <!--la valeur est la value du option-->
                                                                                    {% for utilisateur in listeUser2et3%}
                                                                                        {%if user.utilisateur.id!=utilisateur.id%}
                                                                                            <option value="{{utilisateur.id}}">{{utilisateur.nom|upper}} {{utilisateur.prenom}}</option>
                                                                                        {% endif %}
                                                                                    {% endfor %}
                                                                                </select>
                                                        
                                                                            </label>
                                                        
                                                                        </div>
                                                        
                                                                        <div id="choixPourInfoText">
                                                                            Pour choisir un (ou plusieurs) utilisateur(s) qui recevra la fiche par mail :
                                                                        </div>
                                                                        <div id="choixUser">
                                                                            <p>
                                                                                {% for utilisateur in listeUser%}
                                                                                    {%if user.utilisateur.id!=utilisateur.id%}
                                                                                        <label for="user-{{utilisateur.id}}">
                                                                                            <input type="checkbox" id="user-{{utilisateur.id}}" name="listeUser1[]" value="{{utilisateur.id}}">
                                                                                            {{utilisateur.nom|upper}} {{utilisateur.prenom}}
                                                        
                                                                                        </label>
                                                                                        <br/>
                                                                                    {% endif %}
                                                                                {% endfor %}
                                                                            </p>
                                                                        </div>
                                                                        <label for="descriptionNC"></label> <textarea name="descriptionNC" id="descriptionNC" placeholder="Description de la non conformité" required></textarea>
                                                        
                                                        
                                                                    </div>
                                                                </form>
                                                                <form id="form1" action="{{path('ficheNC')}}" enctype="multipart/form-data" method="POST" class="dropzone dz-clickable">
                                                                </form>
                                                                <form id="form3" method="POST" action="{{path('ficheNC')}}">
                                                        
                                                                    <input type="button" id="precedentPage2" value="Précédent" onclick="openPage1();"/>
                                                                    <input type="button" id="suivantPage2" value="Suivant" onclick="openPage3();"/>
                                                                    <div id="page3">
                                                                        <div id="enTete">
                                                                            <div id="premier">
                                                                                <div id="rondNumeroFonce"> <div id="check"><svg xmlns="http://www.w3.org/2000/svg" width="43.974" height="43.974" viewBox="0 0 43.974 43.974"><path d="M33.077,14.246l-1.86-1.913a.4.4,0,0,0-.3-.127h0a.384.384,0,0,0-.3.127l-12.9,12.991-4.693-4.693a.409.409,0,0,0-.592,0l-1.882,1.882a.421.421,0,0,0,0,.6l5.92,5.92a1.872,1.872,0,0,0,1.237.6,1.962,1.962,0,0,0,1.226-.581h.011L33.087,14.849A.452.452,0,0,0,33.077,14.246Z" transform="translate(0.178 1.07)" fill="#fff"/></svg></div></div>
                                                                                <div id="texteFonce">Description</div>
                                                                            </div>
                                                                            <div id="videFonce"></div>
                                                        
                                                                            <div id="deuxieme">
                                                                                <div id="rondNumeroFonce"> <div id="check"><svg xmlns="http://www.w3.org/2000/svg" width="43.974" height="43.974" viewBox="0 0 43.974 43.974"><path d="M33.077,14.246l-1.86-1.913a.4.4,0,0,0-.3-.127h0a.384.384,0,0,0-.3.127l-12.9,12.991-4.693-4.693a.409.409,0,0,0-.592,0l-1.882,1.882a.421.421,0,0,0,0,.6l5.92,5.92a1.872,1.872,0,0,0,1.237.6,1.962,1.962,0,0,0,1.226-.581h.011L33.087,14.849A.452.452,0,0,0,33.077,14.246Z" transform="translate(0.178 1.07)" fill="#fff"/></svg></div></div>
                                                                                <div id="texteFonce">Type</div>
                                                                            </div>
                                                                            <div id="videFonce"></div>
                                                                            <div id="troisieme">
                                                                                <div id="rondNumeroFonce"> <div id="numero">3</div></div>
                                                                                <div id="texteFonce">Conformité</div>
                                                                            </div>
                                                                        </div>
                                                        
                                                                        <div id="coutOUduree">
                                                                            <div id="cout">
                                                                                <div id="coutText">
                                                                                    <label for="cout">Cout </label>
                                                                                </div>
                                                                                <div id="coutValeur">
                                                                                    <input type="text" name="cout" id="cout" />
                                                                                </div>
                                                                            </div>
                                                                            <div id="OU">OU</div>
                                                                            <div id="duree">
                                                                                <div id="dureeText">
                                                                                    <label for="duree">Durée </label>
                                                                                </div>
                                                                                <div id="dureeValeur">
                                                                                    <input type="text" name="duree" id="duree" required/>
                                                                                </div>
                                                                            </div>
                                                                        </div>
                                                                        <label for="descriptionMEC"></label> <textarea name="descriptionMEC" id="descriptionMEC" placeholder="Description de la mise en conformité*" required></textarea>
                                                                        <br/>
                                                        
                                                        
                                                                    </div>
                                                        
                                                                </form>
                                                                <form id="form1Bis" action="{{path('ficheNC')}}" enctype="multipart/form-data" method="POST" class="dropzone dz-clickable">
                                                                    <div class="dz-default dz-message" aria-placeholder="">
                                                                        <input type="file" multiple="multiple" class="dz-hidden-input" style="visibility: hidden; position: absolute; top: 0; left: 0; height: 0; width: 0;">
                                                                    </div>
                                                                </form>
                                                        
                                                                <input type="button" id="precedentpage3" value="Précédent" onclick="openPage2();"/>
                                                                <button  name="creationFiche" id="valider1" form="form2" class="btn btn-success" onclick="submitForms();"><svg xmlns="http://www.w3.org/2000/svg" width="38.086" height="38.086" viewBox="0 0 38.086 38.086">
                                                                        <g id="Icon_feather-send" data-name="Icon feather-send" transform="translate(1.5 6.586)">
                                                                            <path id="Tracé_2120" data-name="Tracé 2120" d="M33,3,16.5,19.5" transform="translate(-3 -3)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="3"/>
                                                                            <path id="Tracé_2121" data-name="Tracé 2121" d="M38.086,3,25.806,38.086,18.789,22.3,3,15.28Z" transform="translate(-3 -8.086)" fill="none" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="3"/>
                                                                        </g>
                                                                    </svg>
                                                                </button>
                                                            </DIV>
                                                        
                                                            <br/>
                                                            <script>
                                                                const page1 = document.getElementById('page1');
                                                                const page2 = document.getElementById('page2');
                                                                const page3 = document.getElementById('page3');
                                                                const idForm1= document.getElementById('form1');
                                                                const idForm1Bis= document.getElementById('form1Bis');
                                                                const boutonSuivantPage2=document.getElementById('suivantPage2');
                                                                const bouttonPrecedentPage2=document.getElementById('precedentPage2');
                                                                const boutonprecedentpage3=document.getElementById('precedentpage3');
                                                                const boutonValider=document.getElementById('valider1');
                                                        
                                                                boutonValider.style.display='none';
                                                                boutonprecedentpage3.style.display='none';
                                                                boutonSuivantPage2.style.display='none';
                                                                bouttonPrecedentPage2.style.display='none';
                                                                idForm1.style.display='none';
                                                                idForm1Bis.style.display='none';
                                                                page1.style.display = 'block';
                                                                page2.style.display = 'none';
                                                                page3.style.display = 'none';
                                                        
                                                                function openPage1()
                                                                {
                                                                    page1.style.display = 'block';
                                                                    page2.style.display = 'none';
                                                                    page3.style.display = 'none';
                                                                    idForm1.style.display='none';
                                                                    idForm1Bis.style.display='none';
                                                                    bouttonPrecedentPage2.style.display='none';
                                                                    boutonSuivantPage2.style.display='none';
                                                                    boutonprecedentpage3.style.display='none';
                                                                    boutonValider.style.display='none';
                                                                }
                                                        
                                                                function openPage2()
                                                                {
                                                                    page1.style.display = 'none';
                                                                    page2.style.display = 'block';
                                                                    page3.style.display = 'none';
                                                                    idForm1.style.display='block';
                                                                    idForm1Bis.style.display='none';
                                                                    bouttonPrecedentPage2.style.display='block';
                                                                    boutonSuivantPage2.style.display='block';
                                                                    boutonprecedentpage3.style.display='none';
                                                                    boutonValider.style.display='none';
                                                                }
                                                        
                                                                function openPage3()
                                                                {
                                                                    page1.style.display = 'none';
                                                                    page2.style.display = 'none';
                                                                    page3.style.display = 'block';
                                                                    idForm1.style.display='none';
                                                                    idForm1Bis.style.display='block';
                                                                    bouttonPrecedentPage2.style.display='none';
                                                                    boutonSuivantPage2.style.display='none';
                                                                    boutonprecedentpage3.style.display='block';
                                                                    boutonValider.style.display='block';
                                                                }
                                                        
                                                                function submitForms(){
                                                        
                                                                  /*  $('<input />').attr('type', 'hidden')
                                                                        .attr('creationFiche', param.name)
                                                                        .attr('creationFiche', param.value)
                                                                        .appendTo('#form2');*/
                                                                  //  document.getElementById("form1").submit();
                                                                    document.getElementById("form2").submit();
                                                                    document.getElementById("form3").submit();
                                                        
                                                                }
                                                        
                                                            </script>
                                                            <script>
                                                                var dropzone = new Dropzone('#demo-upload', {
                                                                 //   previewTemplate: document.querySelector('#preview-template').innerHTML,
                                                                    parallelUploads: 2,
                                                                    thumbnailHeight: 120,
                                                                    thumbnailWidth: 120,
                                                                    maxFiles: 5,
                                                                    maxFilesize: 3,
                                                                    filesizeBase: 1000,
                                                                    thumbnail: function(file, dataUrl) {
                                                                        if (file.previewElement) {
                                                                            file.previewElement.classList.remove("dz-file-preview");
                                                                            var images = file.previewElement.querySelectorAll("[data-dz-thumbnail]");
                                                                            for (var i = 0; i < images.length; i++) {
                                                                                var thumbnailElement = images[i];
                                                                                thumbnailElement.alt = file.name;
                                                                                thumbnailElement.src = dataUrl;
                                                                            }
                                                                            setTimeout(function() { file.previewElement.classList.add("dz-image-preview"); }, 1);
                                                                        }
                                                                    }
                                                        
                                                                });
                                                        
                                                        
                                                                // Now fake the file upload, since GitHub does not handle file uploads
                                                                // and returns a 404
                                                        
                                                                var minSteps = 6,
                                                                    maxSteps = 60,
                                                                    timeBetweenSteps = 100,
                                                                    bytesPerStep = 100000;
                                                        
                                                                dropzone.uploadFiles = function(files) {
                                                                    var self = this;
                                                        
                                                                    for (var i = 0; i < files.length; i++) {
                                                        
                                                                        var file = files[i];
                                                                        totalSteps = Math.round(Math.min(maxSteps, Math.max(minSteps, file.size / bytesPerStep)));
                                                        
                                                                        for (var step = 0; step < totalSteps; step++) {
                                                                            var duration = timeBetweenSteps * (step + 1);
                                                                            setTimeout(function(file, totalSteps, step) {
                                                                                return function() {
                                                                                    file.upload = {
                                                                                        progress: 100 * (step + 1) / totalSteps,
                                                                                        total: file.size,
                                                                                        bytesSent: (step + 1) * file.size / totalSteps
                                                                                    };
                                                        
                                                                                    self.emit('uploadprogress', file, file.upload.progress, file.upload.bytesSent);
                                                                                    if (file.upload.progress == 100) {
                                                                                        file.status = Dropzone.SUCCESS;
                                                                                        self.emit("success", file, 'success', null);
                                                                                        self.emit("complete", file);
                                                                                        self.processQueue();
                                                                                        //document.getElementsByClassName("dz-success-mark").style.opacity = "1";
                                                                                    }
                                                                                };
                                                                            }(file, totalSteps, step), duration);
                                                                        }
                                                                    }
                                                                }
                                                            </script>
                                                        </div>
                                                        </div>
                                                        
                                                        

                                                        Merci beaucoup !

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          27 janvier 2020 à 11:21:45

                                                          Ok qu'est ce qui ne fonctionne pas ? Tu as des erreurs ?

                                                          Sinon, si tu veux de l'aide, je te conseille déjà de mettre ce sujet en résolu, puisque le problème du bouton qui ne clic pas est résolu et surtout que ton code est vraiment bordélique sans vouloir t'enfoncer bien-sûr !

                                                          Puis recréer un nouveau sujet, avec une description clair et précise du problème en question, avec le code cible du problème et surtout des exemples ou message d'erreurs. Essayes de bien structurer ton problème pour recevoir de l'aide de la part des autres également.

                                                          Sinon je vois encore des soucis d'id qui se répètent, je te conseille d'utiliser le lien de validation de code que je t'ai envoyer

                                                          -
                                                          Edité par Mehddii 27 janvier 2020 à 11:24:11

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter

                                                          Postez votre code et vos msg d'erreurs - "ça marche pas" n'est pas un message d'erreur ...

                                                            27 janvier 2020 à 11:24:07

                                                            non je n'ai pas d'erreur, mais je ne récupère pas les input cout, durée et descriptionMEC qui sont dans le form3, je ne récupère que les infos qui sont dans le form2...

                                                            Oui je vais faire un nouveau sujet !

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            Formulaire ne s'envoie plus après l'ajout d'un dra

                                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                            • Editeur
                                                            • Markdown