Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zarządzanie obrazkami - 2-etapowe dodawanie
Forum PHP.pl > Forum > Przedszkole
qrzysztof
Witam,

Mam na stronie 2-etapowy (składający się z dwóch formularzy) upload obrazków. Pierwszy formularz ("Załaduj obrazek") wgrywa go na serwer, a dopiero drugi ("Zapisz zmiany") dodaje bądź uaktualnia rekord w bazie danych.

W wyniku tego procesu nieuchronnie powstawać będą obrazki-"sieroty" (te, które zostały wgrane na serwer ale z jakichś powodów nie zapisano zmian). Jak to najlepiej rozwiązać?

Przychodzi mi do głowy dodatkowe pole w tabeli z obrazkami: "potwierdzony" z domyślną wartością 0 i zmienianą na 1 w przypadku wysłania formularza "Zapisz zmiany". A następnie okresowe ręczne lub automatycznie usuwanie "sierot". Da się to jakoś sprytniej rozwiązać zachowując te 2 etapy dodawania obrazków, czy może tak być?
MateuszS
A dlaczego, nie wybierasz obrazka a po 'zapisaniu zmian' on sie uploaduje?
qrzysztof
Mam formularz, w którym docelowo będzie można dodawać kilka obrazków, oraz zmieniać wartości pól tekstowych (wszystko przed zapisaniem zmian). W ten sposób jest to moim zdaniem bardziej czytelne. Użytkownik bardziej wie co się dzieje, że czeka bo ładuje się obrazek. A jak się załaduje to tylko proste "zapisz". Coś jak z emailami i ładowaniem załączników przed wysłaniem.
MateuszS
No ok, fajnie, tyle że samo wysyłanie można zrobić już po naciśnięciu buttona "zapisz". Jeżeli koleś dodał obrazek to się zapisze, jeżeli nie wybrał to zapiszą się tylko pola tekstowe.
qrzysztof
A jest jakiś konkretny powód, dla którego w większości skrzynek email dostępnych przez www, załączniki wysyła się najpierw na serwer a dopiero później klika "wyślij (całą wiadomość)" ?


Ja wiem, że da się ja piszesz. Ale takie obejście problemu to dla mnie ostateczność.
MateuszS
Mi się zawsze wydawało że robi się tak dlatego, że np. user pisze wiad. a w tym czasie się wysyła i nie musi czekać potem 5 min po naciśnięciu wyślij aż się plik prześle, poza tym może się rozmyślić i zmienić załącznik. Choć tak serio to nie wiem dlaczego tak robią, nigdy się nad tym nie zastanawiałem specjalnie.

Może spróbuj przy przesyłaniu zdeklarować sesję z linkiem do pliku, jeżeli dasz zapisz zmiany, sesja zmieni np. wartość a jeżeli po przejściu na inną stronę sesja nadal będzie miała adres w wartości, usuń obrazek... takie pierwsze skojarzenie, nawet nie wiem czy takie coś by działało
qrzysztof
No to tak samo jest u mnie. Tekstowe pola formularza podczas ładowania obrazka są jak najbardziej dostępne i można zaoszczędzić czas wypełniając je wtedy.

Też myślałem o sesji. Muszę pokombinować czy byłoby to wykonalne.
ziqzaq
Witam.
Może zrobić to na dwóch folderach? Jeden z obrazkami tymczasowymi a drugi docelowy (z już zapisanymi w bazie). Przy uploadzie tworzysz tymczasowy obrazek a jak user potwierdzi zmiany przenosisz go do docelowego katalogu.
Co jakiś czas sprawdzasz sobie czy w tymczasowym katalogu są pliki starsze niż np. 1h (czyli raczej nikt już ich nie potrzebuje), jeśli są to je usuń.
qrzysztof
No to też jest jakieś rozwiązanie. Generalnie podobne do tego, które podałem w 1szym poście z tą zaletą, że nie trzeba ruszać bazy.

Ciekawe jak ten problem jest rozwiązany w skrzynkach pocztowych www. Co się dzieje z załącznikami załadowanymi na serwer, ale nie wysłanymi. Czy są od razu kasowane czy lądują w jakimś, raz na jakiś czas, opróżnianym folderze tymczasowym.
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.