![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 0 Dołączył: 26.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Czy ktoś z Was mógłby mi podsunąć jakieś sensowne rozwiązanie mojego problemu?
W bazie danych mysql, utworzyłam tabelę PRODUKTY, której pola to m.in. id, nazwa, kategoria, opis, zdjecie1, zdjecie2, zdjecie3. Z założenia ostatnie kolumny - zdjęcie 1, 2, 3, są polami typu char, w których chcę przechowywać adres obrazka na serwerze. Napisałam sobie skrypt do uploadu plików na serwer, wszystkie pliki do jednego utworzonego katalogu. Tworzę formularz do dodawania nowych produktów, gdzie po kolei należy podać dane produktu i ... pliki do uploadu. Pytanie 1. Jak ograniczyć ilość uploadowanych plików do liczby 3? Tak, aby te trzy adresy zapełniły po kolei wartości kolumn zdjęcie1, zdjecie2, zdjecie3? Nie chcę robić oddzielnej tabeli na zdjęcia, bo każde ze zdjęć będzie odpowiadało tylko określonemu produktowi Pytanie 2. W jaki sposób przekazać ścieżkę dostępu do pliku po uploadzie z ramki iframe do strony nadrzędnej? Aby można było dodać plik ze strony na której znajduje się formularz, zrobiłam iframe i tu wstawiłam plik ze skryptem do uploadownaia plików na serwer. Problem w tym, że już po zapisaniu pliku na serwer i przypisaniem do zmiennej jego adresu na serwerze, nie potrafię wartości tej zmiennej przekazać do strony nadrzędnej (strony, na której znajduje się formularz do dodawania nowych produktów i iframe). |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
ad1.
Dajesz trzy pola w formularzu i w pliku php czytasz pliki tylko z tych pól - najprostsze ograniczenie. Imo źle robisz zapisując zdjęcia w tej samej tabeli co produkty, z wielu powodów, pewnie niedługo się o tym przekonasz ![]() ad2. Czemu w ogóle uploadujesz pliki przez iframe ? Nie lepiej dodać te trzy pola file do głównego formularza produktu ? Jeśli jednak na prawdę nie możesz tego zrobić to zapisuj wgrane pliki w sesji a potem po zapisaniu produktu dodaj zapisane pliki do rekordu produktu. Moim zdaniem strasznie wszystko udziwniasz i kombinujesz z jakimiś dziwnymi rozwiązaniami zamiast zrobić tak jak się robić powinno ![]() -------------------- Nawet świnka może wejść na drzewo kiedy jest chwalona :)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 0 Dołączył: 26.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
ok to powiedzmy, tworzę formularz i dodatkowo 3 pola do załadowania plików
Tylko jakie zmiany wprowadzić w bazie danych? W tabeli produkt zostawić 3 pola na zdjęcia, typu int, będące kluczem obcym do tabeli, którą utworzę (tabela obrazki)? Chcę, aby przy zapisywaniu nowego produktu, po aktywacji skryptu do zapisywania, następowało: 1. Zapisywanie plików jpg na serwer i jednocześnie przypisanie tych ścieżek do zmiennych w polu zdjecie(1,2,3) 2. zapisanie danych do bazy danych ...a ... I jak można by przerobić skrypt do wysyłania 3 plików jednocześnie? Napisałam skrypt do wysyłania jednego pliku:
Nie wiem za bardzo jak go przerobić aby jednocześnie zapisywał 3 pliki i przydzielał im ściezki dostępu, jednak biorąc pod uwagę, że : 1 - żaden plik może nie zostać przesłany (produkt może nie posiadać obrazka) 2 - może zostać wysłany jeden, dwa, lub trzy pliki, nie musi być pełen komplet |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Dobrym nawykiem jest tworzenie tabeli dla każdego rodzaju 'obiektów'. W praktyce wyglądało by to tak:
Tabela produkty: id_produkt nazwa kategoria opis Tabla zdjęcia: id_produkt zdjecie_1 //może być varchar o odp. długości, żeby zmieścić ścieżkę do pliku zdjecie_2 zdjecie_3 Następnie pobieranie:
Co do formularza- przerób to co masz na jakieś ładne funkcje i sprawdzaj po kolei np. tak:
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 0 Dołączył: 26.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
hmmm ale tak bez żadnego klucza głównego w tabeli zdjęcia?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
w tabeli zdjecia id_produktu jest kluczem glownym i pomocniczym (2 w 1), bo przeciez dla 1 produktu bedzie tylko 1 rekord, wiec po co dodatkowe, nic nie dajace pole
![]() teraz pytanie ode mnie: czy te 3 zdjecia wrzuca sie za 1 razem, czy mozna np co kilka dni dodawac? Jezeli tak, to formularz z 3 polami do obrazkow nie spelni swojej roli |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 0 Dołączył: 26.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
chciałam zrobić tak, że wrzuci się tyle zdjęć, ile będzie podanych ścieżek...jeśli wszystkie 3 to wszystkie 3 się wrzucą, jeśli 2 lub 1 to tyle. A jeśli żadne nie będzie podane, to wiadomo. Planowałam zrobić tak, że jeśli np. za drugim razem będzie próba dodania 3 zdjęć, to te wcześniejsze zostaną nadpisane tymi nowymi.
Tylko teraz przychodzi mi do głowy kolejne pytanie. Jak to najlepiej rozwiązać, żeby np. po dodaniu za pierwszym razem 2 zdjęć i za drugim razem 1 zdjęcia, przez to jedno, nie zostało nadpisane np. któreś z dwóch pozostałych zdjęć, tylko żeby było wstawione w pustym miejscu. Niby mogę sprawdzić, które z kolumn posiada wartość NULL i tam wstawić dane, ale nie wiem czy tak to się prawidłowo robi. Pytanie też co, jeśli np. wszystkie 3 są wypełnione, a chcę podmienić tylko jedno z nich. Hmmm... |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Zrob cos w rodzaju slotow na zdjecia. Gdy uzytkownik wrzuca zdjecie, wybiera slot (pole w bazie), do ktorego chce je dodac, powinnas jednak zrobic o tym informacje i dac mozliwosc uzytkownikowi sprawdzenia jego zdjec, ktore jest w ktorym slocie.
Z ciekawosci zapytam, czemu tylko 3 zdjecia? |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 0 Dołączył: 26.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
chcę żeby to były tylko przykładowe obrazki, widok z przodu, z tyłu, ewentualnie w środku (produktem mają być torby, plecaki) a aplikacja ma być dla stałych kontrahentów, którzy wiedzą, jak wygląda produkt. Zdjęcie ma tylko obrazować, czy odpowiedni produkt wybierają....aplikacja na obronę, na uczelnię
![]() |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Dobrym nawykiem jest tworzenie tabeli dla każdego rodzaju 'obiektów'. W praktyce wyglądało by to tak: Tabela produkty: id_produkt nazwa kategoria opis Tabla zdjęcia: id_produkt zdjecie_1 //może być varchar o odp. długości, żeby zmieścić ścieżkę do pliku zdjecie_2 zdjecie_3 Nie siej herezji. Twoja struktura nie ma nic wspólnego z dobrymi nawykami... products: [id, name...] photos: [id, position...] photos_products: [product_id, photo_id] Legenda: klucz główny, klucz obcy, klucz główny + klucz obcy. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 66 Pomógł: 0 Dołączył: 26.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
hmm no to jak w ostatecznie będzie lepiej? zrobić oddzielną tabelę na produkty i zdjęcia + tabelę pomocniczą łączącą produkty i zdjęcia, czy tak, jak napisał CuteOne w poście?
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
jezeli musza byc konkretnie 3 zdjecia, to tak, jak napisal CuteOne. Jezeli nie, to tak:
produkty id nazwa zdjecia id id_produktu nazwa_pliku |
|
|
![]()
Post
#13
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
@lukaskolista:
Weź tylko pod uwagę, że różne produkty mogą mieć te same zdjęcia. Przykład: produkty danej serii różniące się jedynie parametrami technicznymi, a o takim samym wyglądzie wizualnym. W przypadku Twojej koncepcji konieczne będzie uploadowanie plików dla każdego produktu. Moja koncepcja umożliwia wykorzystanie jednego zdjęcia przy kilku produktach. No ale faktyczne rozwiązanie zależy od konkretnych wymogów. Jeśli ~elwierka nie potrzebuje wspomnianej funkcjonalności to Twoje rozwiązanie jest OK ![]() |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
@phpion:
moje rozwiazanie to tylko szablon, jezeli potrzebuje rozwiazanie opisane przez Ciebie, wystarczy zrobic tabele z produktami, zdjeciami i relacje wiele do wielu miedzy nimi produkty id nazwa zdjecia id plik produkty_zdjecia id id_produktu id_zdjecia Ten post edytował lukaskolista 24.09.2010, 07:56:11 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 13:18 |