![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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 (IMG:style_emoticons/default/haha.gif) |
|
|
![]()
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. |
|
|
![]()
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. |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 36 559 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 |
|
|
![]()
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" |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 36 559 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 |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 36 559 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ć (IMG:style_emoticons/default/wink.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 22:12 |