Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][HTML]Przesyłanie dwóch formularzy na raz?
Forum PHP.pl > Forum > Przedszkole
kubax33
Mam problem z wysłaniem dwóch formularzy i nie mogę sobie z nim poradzić...

mam przykłądowo formularze:
  1. <form name=1 action=1.php>
  2. inputy itp
  3. <input type=submit>
  4. </form>
  5.  
  6. <form name=2 action=upload.php>
  7. upload zdjęć ajax
  8. <input type=submit>
  9. </form>


Jak wysłać dwa formularze za jednym razem choć wątpię czy to możliwe? Dodam, że upload w ajaxie jest z dynamicznym ładowaniem na bierzącej stronie w DIV-ie. Próbowałem w podójnymi submitami, ale problem powstaje kiedy np. w jednym formularzu mam inputy i upload zdjęć ponieważ do uploadu potrzebuję jednego submita i do zapisu do bazy również, a po kliknięciu submita odpowiadającego za zapis danych wszystkie dane post wysyła i wyświetla całą stronę w DIVIE z uploadem. Zmarnowałem dużo czasu na metodę prób i błędów i nic. Może jest jakiś lepszy sposób na połączenie wszystkiego w jeden formularz gdzie będzie UPLOAD z submitem i zapis do bazy z submitem. Formularza w formularzu nie można umiścić, ale właśnie tak jakby to mi jest potrzebne...
gitbejbe
czasami najprostrze rozwiązanie jest najtrudniejsze do zauważania : )
Cytat
Może jest jakiś lepszy sposób na połączenie wszystkiego w jeden formularz


wystarczy, że zrobisz :
  1. <form name="1" action="1.php" enctype="multipart/form-data">
  2. inputy itp
  3. <input type=submit>
  4.  
  5. upload zdjęć ajax
  6. <input type=submit>
  7. </form>

w ten o to sposób masz wszystko w jednym formularzu : ) (do uplodu zdjec nie zapomnij o enctype='multipart/form-data')

nie wiem tylko po co Ci upload z oddzielnym submitem. Do tego formularza wystarczy Tobie jeden submit i wtedy w php sprawdzasz czy zostały przesłane jakieś pliki, jeśli tak to wtedy coś tam z nimi robisz, jeśli nie, to zapisujesz reszte formularza do bazy : )

eidt:
zapomnialem o tym:
Cytat
Dodam, że upload w ajaxie jest z dynamicznym ładowaniem na bierzącej stronie w DIV-ie.Próbowałem w podójnymi submitami, ale problem powstaje kiedy np. w jednym formularzu mam inputy i upload zdjęć ponieważ do uploadu potrzebuję jednego submita i do zapisu do bazy również, a po kliknięciu submita odpowiadającego za zapis danych wszystkie dane post wysyła i wyświetla całą stronę w DIVIE z uploadem

do uploadu ajaxem nie potrzebny Ci 2 submit ; ) zrób wszystko w jednym formularzu, naprawde : )
kubax33
Aby to zobrazować przesyłam fragment kodu jak to funkcjonuje:

  1. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
  2. <script src="http://malsup.github.com/jquery.form.js"></script>
  3.  
  4. <style>
  5.  
  6. .progress
  7. {
  8. position:relative;
  9. width:142px;
  10. border: 1px solid #ddd;
  11. padding: 1px;
  12. border-radius: 3px;
  13. }
  14. .bar
  15. {
  16. background: FF0000;
  17. width:0%;
  18. height:20px;
  19. border-radius: 3px;
  20. }
  21. .percent
  22. { position:absolute;
  23. display:inline-block;
  24. top:3px;
  25. left:48%;
  26. }
  27. </style>
  28. <?
  29. if (!empty($_POST['wgraj']))
  30. {
  31. ////////////////// zapis danych
  32.  
  33. echo "zapisano dane!";
  34. }
  35.  
  36. if (!empty($_POST['wgraj2']))
  37. {
  38. ////////////////// upload zdjęć
  39.  
  40. echo "wgrywam zdjęcia!";
  41. }
  42. else
  43. {
  44. <FORM action="spr.php" method="post" name="formularzdodaj" enctype="multipart/form-data">
  45.  
  46.  
  47. <input name="plik1" type="file">
  48. <input type="submit" name=wgraj2 value="Wgraj pliki ť">
  49.  
  50. <div class="progress">
  51. <div class="bar"></div >
  52. <div class="percent">0%</div >
  53. </div>
  54.  
  55. <div id="status"></div>
  56. <BR><BR>
  57. IMIE: <INPUT type="text" name="imie" id="imie"><BR>
  58. NAZIWSKO: <INPUT type="text" name="nazwisko" id="nazwisko">
  59. <BR><BR>
  60. <input type="submit" name="wgraj" value="Wyślij inputy i upload ť">
  61.  
  62. </form>';
  63. }
  64. ?>
  65. <script>
  66. (function() {
  67.  
  68. var bar = $('.bar');
  69. var percent = $('.percent');
  70. var status = $('#status');
  71.  
  72. $('form').ajaxForm({
  73. beforeSend: function() {
  74. status.empty();
  75. var percentVal = '0%';
  76. bar.width(percentVal)
  77. percent.html(percentVal);
  78. },
  79. uploadProgress: function(event, position, total, percentComplete) {
  80. var percentVal = percentComplete + '%';
  81. bar.width(percentVal)
  82. percent.html(percentVal);
  83. //console.log(percentVal, position, total);
  84. },
  85. success: function() {
  86. var percentVal = '100%';
  87. bar.width(percentVal)
  88. percent.html(percentVal);
  89. },
  90. complete: function(xhr) {
  91. status.html(xhr.responseText);
  92. }
  93. });
  94.  
  95. })();
  96. </script>


Według Twojego sposobu jak widzisz ładuje wszystkie submity do DIVA. Nie wiem jak to ominać próbowałem drugiego submita zrobić takiego:
  1. <a href="spr.php" onclick="document.formularz_edycja.submit();return false;">Wyślij inputy i upload ť</a>

I dopiero wtedy to przesyła, ale dla mnie to nie jest rozwiązanie ponieważ ten przycisk oprócz wysłania wszystkiego musi jeszcze sprawdzić czy dobrze wypełniono wszystkie dane na zasadzie walidacji jquery.
Co z tym zrobić...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.