Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Trzy formularz w jednym ?
Forum PHP.pl > Forum > Przedszkole
d.stp
Mam taki bardziej skomplikowany formularz w którym mam:

- upload obrazków (php + ajax)
- upload plików (php + ajax)
- inputy tekstowe i selecty

Wszystko chciałbym umieścić na jednej podstronie, no i zaczyna się problem... dodatkowo to wszystko ma być podzielone na mniej więcej coś takiego:

inputy, selecty | upload obrazków
| upload plików
| checkboxy
| przycisk wyślij

I nie mam pojęcia jak do tego podejść... czy ratuje mnie tylko i wyłącznie rozbicie tego na etapy ?
d0m1n1k_
Czyli rozdzielasz wszystko na:
Formularz 1
Formularz 2
Formularz 3

Proste rozwiązanie które mi przyszło teraz do głowy:

  1. if(!isset(_POST['_dane_wymagane_z_formularza_nr1_sa_podane']) AND !isset(_POST['_dane_wymagane_z_formularza_nr2_sa_podane'])){
  2. //Formularz nr 1 - ten który będzie widoczny na starcie.
  3. //Pierwsza seria inputów i checkboxów
  4. }
  5. if(isset(_POST['_dane_wymagane_z_formularza_nr1_sa_podane'])){
  6. //Formularz nr 2
  7. //Druga seria inputów i checkboxów
  8.  
  9. //Inputy type="hidden" z formularza nr 1 (żeby ich nie utracić)
  10. }
  11. if(isset(_POST['_dane_wymagane_z_formularza_nr2_sa_podane'])){
  12. //Formularz nr 3
  13. //Trzecia seria inputów i checkboxów
  14. //Uploader zdjęć
  15.  
  16. //Inputy type="hidden" z formularza nr 1 i 2 (żeby zostały wbite w baze danych)
  17.  
  18. //Wbicie do bazy danych lub pliku - zależnie od twoich potrzeb.
  19. }


To jest możliwie proste rozwiązanie, nie wiem co inni użytkownicy o tym myślą, ale po pierwsze jeszcze nikt Ci nie pomógł, a po drugie korzystamy tylko z php i jeden plik, to w moim mniemaniu zadziała - jeśli nie chcesz przeładowań strony potrzebny jest dodatkowy język np. jQuery lub Ajax.
d.stp
Chyba nie do końca mnie zrozumiałeś, ale dzięki za pomoc. Na tej podstronie mam już zrobiony formularz uploadu zdjęć oraz formularz uploadu plików. Całość oparta na php + ajax. Z tym że tutaj sprawa wygląda tak, że te formularze do uploadu są oddzielne. Mam dwa <form> do tego (id="imagesUpload" | id="fileUpload") i cały problem polega na tym, że te formularze są w środku tego formularza z lewej strony (inputy, selecty).

Może inaczej:

Mam taki długi formularz, w kolejności:

[input]
[input]
[select]
[input]
[textarea]
[formularz uploadu plików - osobny]
[formularz uploadu zdjęć - osobny]
[input]
[checkbox]
[textarea]
[SUBMIT]

I teraz tak - jak już pisałem upload obrazków i plików to dwa osobne formularze. Działają one na zasadzie że wybiera się plik [input=file] i po wybraniu z automatu wrzuca się plik czy obrazek i wyświetlają się informacje o nim - wszystko php + ajax. Teraz tym ostatnim submit chciałbym wrzucić zapytanie do bazy z tymi inputami, selectami itd.

Nie wiem czy jest jakieś obejście tego, ale wydaje mi się że będę musiał upchać to wszystko w jeden formularz sad.gif
d0m1n1k_
Teraz już chyba rozumiem smile.gif

Powinno się udać w JavaScript

  1. <input type="button" value="Formularzuj!" onclick="submitForms()" />


Z racji, że twoje formularze mają ID:

  1. submitForms = function(){
  2. document.getElementById("imagesUpload").submit();
  3. document.getElementById("fileUpload").submit();
  4. }


Jeśli natomiast opierasz się na nazwach formularzy, a ID olewasz:

  1. submitForms = function(){
  2. document.forms["form1"].submit();
  3. document.forms["form2"].submit();
  4. }
trueblue
d0m1n1k_, nie zadziała.

d.stp, co stoi na przeszkodzie aby zrobić to w jednym formularzu?

d0m1n1k_
Cytat(trueblue @ 9.02.2015, 15:05:09 ) *
d0m1n1k_, nie zadziała.


Dlaczego niby miałoby nie zadziałać?

To może coś takiego:

Jeśłi masz "tradycyjny" button, możesz dodać do niego poniższe działanie onClick, może to zadziała.

  1. document.getElementById('otherForm').submit();
buliq
Spróbuj odpalić 3 submity (kończące się requestem) na raz to się dowiesz smile.gif

Formularze wewnątrz są ci kompletnie zbędne, tym bardziej że pola obsługujesz ajaxem. Jeżeli do ich obsługi używasz ich ID to zamień element FORM na np DIV i tez będzie działać.

Ale oczywiście niczego się nie dowiemy jak nie pokażesz kodu
trueblue
Każdy submit anuluje poprzedni submit. To tak jakby kliknąć szybko w 3 linki na stronie i oczekiwać, że otworzą się wszystkie 3 naraz w jednej zakładce.
d0m1n1k_
Cytat(trueblue @ 9.02.2015, 18:58:01 ) *
Każdy submit anuluje poprzedni submit. To tak jakby kliknąć szybko w 3 linki na stronie i oczekiwać, że otworzą się wszystkie 3 naraz w jednej zakładce.


Przy jQuery dam radę ;-)
Ale zaczynam rozumieć Twój punkt widzenia.
buliq
@up co ma do tego jQuery?
d.stp
trueblue ma rację.

Rozbiłem ten formularz na 2 kroki i po problemie.

Dzięki za pomoc panowie
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.