Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rozbudowany formularz -
Forum PHP.pl > Forum > PHP
kris81
Witajcie,

mam takie ogólne pytanie jak sobie radzicie z obsługą formularza html podzielonego na kilka stron?

Przykładowo mamy formularz dodania firmy, podzielony na 3 strony:
1. dane firmy do wpisania
2. dodanie zdjęć
3. podgląd

I teraz w kroku 2 i 3 mamy przycisk "Wróć do kroku X". Na każdej stronie muszą być już wypełnione pola (to co wpisał user).
Tak samo zdjęcia - jeśli użytkownik dodał zdjęcia i przeszedł do podglądu, to gdy wraca do strony 2 musi widzieć wgrane zdjęcia.

Jak to najlepiej oprogramować w PHP?

Ja podchodziłem do tego na 2 sposoby: z użyciem input=hidden w każdym kroku, oraz zapisywanie w sesji na czas dodawania firmy.
Hiddeny są dosyć uciążliwe, zwłaszcza gdy mamy 40 pól do wypełnienia.
Dodatkowo w hiddenach trzymałem nazwy zdjęć, zapisywałem je do katalogu "temp", a po dodaniu firmy usuwałem je - ale jeśli
uzytkownik wgra zdjęcia, a potem nie doda firmy to zostają śmieci w tempie...


Jak to rozwiązać profesjonalnie?




drakos
Jeśli masz dane w sesji to po co hiddeny? Na następnej stronie formularza po prostu dopisujesz dane z odpowiednich kluczy tabeli, w której przechowujesz dane, a kiedy wracasz to pobierasz.
Co do zdjęć to zrobiłbym tabelę z tymczasowymi plikami z datą dodania i skrypt w cronie, który usuwa pliki starsze niż 24 godziny (na wypadek jakby ktoś chciał dodawać firmę w chwili, kiedy ma się wykonać Cron).

Inne podejście to zrobić ajaxowy formularz w zakładkach. Wtedy również ajaxem wysyłasz pliki na serwer. Cron dla plików tak samo jak wyżej.
krowal
Hehe
Cytat
Wtedy również ajaxem wysyłasz pliki na serwer.
Jak Ci się uda to masz ode mnie stówę winksmiley.jpg Oczywiście nie mówię o pseudo ajaxowych rozwiązaniach opartych na iframe itp. smile.gif
Jakby nie było reszta Twojego posta jest ok. Ewentualnie możnaby zapisać fotki do tymczasowej lokacji i przechowywać dane w sesji a zapisać do tabeli dopiero po wypełnieniu wszystkich kroków.
kris81
Cytat(drakos @ 29.10.2010, 11:19:22 ) *
Jeśli masz dane w sesji to po co hiddeny? Na następnej stronie formularza po prostu dopisujesz dane z odpowiednich kluczy tabeli, w której przechowujesz dane, a kiedy wracasz to pobierasz.
Co do zdjęć to zrobiłbym tabelę z tymczasowymi plikami z datą dodania i skrypt w cronie, który usuwa pliki starsze niż 24 godziny (na wypadek jakby ktoś chciał dodawać firmę w chwili, kiedy ma się wykonać Cron).

Inne podejście to zrobić ajaxowy formularz w zakładkach. Wtedy również ajaxem wysyłasz pliki na serwer. Cron dla plików tak samo jak wyżej.



Przeczytaj mój post jeszcze raz. Dla ułatwienia podam fragment:
"Ja podchodziłem do tego na 2 sposoby: z użyciem input=hidden w każdym kroku, oraz zapisywanie w sesji na czas dodawania firmy."

Nie używam JEDNOCZEŚNIE hiddenów i sesji, tylko próbowałem dwóch tych sposobów oddzielnie.

Właśnie po to pytanie - co lepiej używać, jakie macie doświadczenie przy tego typu formularzach itd.

Cron odpada, ajax też (nie pytajcie dlaczego - nie mam na to wpływu), co najwyżej usuwanie tempa skryptem odpalanym ręcznie z przeglądarki.

drakos
Cytat(krowal @ 29.10.2010, 11:44:44 ) *
Hehe Jak Ci się uda to masz ode mnie stówę winksmiley.jpg Oczywiście nie mówię o pseudo ajaxowych rozwiązaniach opartych na iframe itp. smile.gif
Jakby nie było reszta Twojego posta jest ok. Ewentualnie możnaby zapisać fotki do tymczasowej lokacji i przechowywać dane w sesji a zapisać do tabeli dopiero po wypełnieniu wszystkich kroków.


Czepiasz się słówek tongue.gif Wiadomo, że chodzi o rozwiązanie typu Uploadify (chyba? winksmiley.jpg )

Cytat(kris81 @ 29.10.2010, 11:55:16 ) *
Przeczytaj mój post jeszcze raz. Dla ułatwienia podam fragment:
"Ja podchodziłem do tego na 2 sposoby: z użyciem input=hidden w każdym kroku, oraz zapisywanie w sesji na czas dodawania firmy."

Nie używam JEDNOCZEŚNIE hiddenów i sesji, tylko próbowałem dwóch tych sposobów oddzielnie.

Właśnie po to pytanie - co lepiej używać, jakie macie doświadczenie przy tego typu formularzach itd.

Cron odpada, ajax też (nie pytajcie dlaczego - nie mam na to wpływu), co najwyżej usuwanie tempa skryptem odpalanym ręcznie z przeglądarki.


Ale można dojść do wniosku, że głosuję na sesje smile.gif

Ja dzielę dodawanie na odpowiednie kroki w osobnych kontrolerach/akcjach, które dodają poszczególne dane. Mam wtedy formularze gotowe do edycji poszczególnych rzeczy i jako taką podzielność gdzie są dane firmy, gdzie galeria itp. Wszystkie dane są or razu wpisywane do bazy w odpowiednich miejscach. Taką mam charakterystykę aplikacji.
Crozin
Cytat
Jak Ci się uda to masz ode mnie stówę Oczywiście nie mówię o pseudo ajaxowych rozwiązaniach opartych na iframe itp.
A ja mogę o tę stówę zawalczyć?
[JAVASCRIPT] pobierz, plaintext
  1. // Dla ułatwienia załóżmy, że mamy jQuery
  2.  
  3. $("#upload-form").submit(function() {
  4. var file = $("#file-input").get(0).files[0];
  5.  
  6. $.ajax({
  7. // ...
  8. data: { file: file.getAsDataURL(); } // file = "data:application/x-zip-compressed;base64,UEsDBAoA....czIvaW1nL2J1dHRvbnMuZ2lmVV"
  9. });
  10.  
  11. return false;
  12. });
[JAVASCRIPT] pobierz, plaintext
Po stronie serwera wystarczy zdekodować i zapisać jako plik. Wygrałem 100? winksmiley.jpg
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.