Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Upload plików - jakie metody?
qrooel
post 20.10.2011, 22:52:56
Post #1





Grupa: Zarejestrowani
Postów: 306
Pomógł: 42
Dołączył: 25.03.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Cześć,

W jaki sposób rozwiązujecie problem uploadu plików dla nieistniejącego rekordu?

Chcemy dodać klienta, klient ten oczywiście nie ma jeszcze żadnego ID w bazie, dodajemy do niego pliki - wszystko jest ok o ile mamy walidację w js.

Co w sytuacji kiedy dodajemy pliki do nowego klienta, a one są ładowane ajaksem do odpowiedniej tabelki, po to aby można było zobaczyć jakie pliki już dodaliśmy i ewentualnie je usunąć. Po dodaniu klienta, jego id trafia do plików.

Można też w sumie zrobić od razu save 'pustego' rekordu żeby mieć ID.

Jak rozwiązujecie takie problemy? Mam nadzieję, że jasno się wyraziłem. ;]

Ten post edytował qrooel 20.10.2011, 23:20:00


--------------------
Strony WWW: http://arscreo.pl
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Orzeszekk
post 21.10.2011, 01:10:07
Post #2





Grupa: Zarejestrowani
Postów: 260
Pomógł: 14
Dołączył: 8.09.2011

Ostrzeżenie: (0%)
-----


No własnie mało jasno jak dla mnie.

Rozumiem ze kazdy wrzucony plik ma swój wiersz w bazie danych opisujacy go (jego ID trafia do plików).


Skoro jestes w stanie wyswietlic sposod ogółu plików TE pliki które wrzucił akurat TEN user, to jestes w stanie rowniez po dodaniu klienta sprawdzic jakie dodal pliki i zapisac ID klienta do tych plików.

Jesli wrzucanie plików jest powiązane z tworzeniem nowego klienta tj klient moze sobie cos tam nawrzucac ale i tak na koniec zostanie mu utworzone konto, to zamień kolejnosc po prostu - utwórz mu konto, weź ID i dopiero działaj.

mam wrazenie ze do tego ajaxa korzystasz z jakiegos gotowego komponentu co do ktorego nikt do konca nie wie jak dziala haha.gif


--------------------
"The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time."
Tom Cargill, Bell Labs
Go to the top of the page
+Quote Post
batman
post 21.10.2011, 07:07:35
Post #3





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




@qrooel
Zapisując informacje o uploadowanych plikach do bazy, masz ich id (lub dowolny inny unikatowy identyfikator). Po uploadzie pliku przesyłasz ten id w odpowiedzi (z ajaxa), a następnie przy pomocy js zapisujesz go do pola typu hidden lub do ciastka (zależy od założeń serwisu). Po zapisaniu klienta uzyskasz jego id, które łączysz z zapisanymi wcześniej identyfikatorami plików.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
qrooel
post 21.10.2011, 08:07:02
Post #4





Grupa: Zarejestrowani
Postów: 306
Pomógł: 42
Dołączył: 25.03.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


OK, nie do końca mnie rozumiecie. Przede wszystkim nie mam tutaj problemu - chodzi mi tylko o poznanie różnych technik.

Sytuacja w takim razie jest taka: tworzę nowego klienta, wypełniam jakieś pola, dodaję pliki (które od razu widzę - każdy plik ma swoje unikatowe ID), jednak się rozmyśliłem i nie chcę już dodawać klienta - więc wychodzę, za chwilę jednak chcę dodać klienta i te pliki które wcześniej wrzuciłem są widoczne - dlaczego? Bo wyciągnąłem je za pomocą: where image_client_id = 0.

Co z tym możemy zrobić - możemy przy wywołaniu akcji 'add_client' usunąć wszystkie zdjęcia gdzie image_client_id = 0. Tylko wtedy jeżeli na jednym koncie będą pracowały dwie osoby, to jedna drugiej zdjęcia będzie usuwać.

Czyli chyba jednym z bardziej eleganckich sposobów będzie dodanie plików do użytkownika konkretnego (user). Zakładając że jedna osoba korzysta z jednego konta.


--------------------
Strony WWW: http://arscreo.pl
Go to the top of the page
+Quote Post
nospor
post 21.10.2011, 08:42:55
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Robisz tak jak pisał batman.
A jeśli w międzyczasię się rozmyśliłeś i przestałeś dodawać klienta to jaki problem? Żaden - w bazie zostają ci pliki, które nie sią do nikogo przypisane. I co? I nic. Ca jakiś czas zapuszczasz cronem zadanie, które czyście pliki, które nie są do nikogo przypisane i leżą już w bazie od x godzin.

Tworząc nowe klienta pod żadnym pozorem nie wyświetlasz mu zdjęc na zasadzie jak pisałeś: where image_client_id = 0 . To bez sensu. Batman podał dobre rozwiązanie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
batman
post 21.10.2011, 08:50:47
Post #6





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Jeszcze dodam tylko, że wstawiając do bazy info o zdjęciu nie zapisujesz do kolumny właściciela wartości 0 (zero), tylko null. W ten sposób wiesz, że zdjęcie nie jest do nikogo przypisane.
Wspomniane przeze mnie sposoby przechowywania informacji o id zdjęć mają zastosowanie:

Ukryte pole:
- jednostronicowy formularz
- brak konieczności pamiętania wgranych plików w przypadku awarii/odświeżenia strony

Ciasteczka:
- możliwość zapisania formularza "na później"
- możliwość odczytania informacji i id wgranych plików w dowolnym miejscu aplikacji, bez konieczności pukania do bazy, np. w sytuacji "ostatnio dodałeś 3 pliki"


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
nospor
post 21.10.2011, 08:58:26
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
że wstawiając do bazy info o zdjęciu nie zapisujesz do kolumny właściciela wartości 0 (zero), tylko null.
Bez przesady. Przeciez nie masz użytkowników o ID 0. Jak masz 0 to wiesz, że to jest niczyje.

Problem z 0 pojawia się dopiero wtedy gdy robisz relacje. Wówczas próba wstawienia 0 da ci błąd, bo nie ma takiego usera i relacji nie da się utworzyć. Wówczas NULL jest jedynym rozwiązaniem


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
batman
post 21.10.2011, 09:06:04
Post #8





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Cytat(nospor @ 21.10.2011, 09:58:26 ) *
Problem z 0 pojawia się dopiero wtedy gdy robisz relacje. Wówczas próba wstawienia 0 da ci błąd, bo nie ma takiego usera i relacji nie da się utworzyć. Wówczas NULL jest jedynym rozwiązaniem

I o to właśnie mi chodziło.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
nospor
post 21.10.2011, 09:07:25
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
W ten sposób wiesz, że zdjęcie nie jest do nikogo przypisane.
To zdanie nie koniecznie na to wskazywało, więc wolałem sprecyzować wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.06.2025 - 08:04