![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Cześć, zmagam się z pewnym zadaniem, ze z góry narzuconymi regułami. W skrócie to mały, prosty sklepik internetowy, który w całości ma powstać obiektowo. Programowanie proceduralne dozwolone jest tylko do zainicjowania klas. I jedno z wymagań mówi aby unikać konstrukcji warunkowych (if-else oraz switch) do radzenia sobie z różnicami w produktach. Jako że obiektowo programować dopiero się uczę, to nie wiem czy jest może jakieś oczywiste rozwiązanie pozwalające na nieużywanie warunków.
Załózmy, że mam w bazie tabelę PRODUKT z takimi kolumnami oraz danymi: Kod ID | name | typ| MB | ilosc_stron | szerokosc | wysokosc | glebokosc 1 | tetris | dvd | 128 | 0 | 0 | 0 | 0 2 | bilbia | ksiazka | 0 | 1256 | 0 | 0 | 0 3 | stol | mebel | 0 | 0 | 90 | 200 | 60 Jak wdać mam 3 typy produktów (DVD, ksiazka, mebel) i w zależności od tego jaki to typ to odpowiednie kolumny są wypełnione - MB dla dvd, ilosc_stron dla ksiazki i wymiary dla mebli. Zresztą w oddzielnym temacie pytam czy dobrze rozumuję, że tak właśnie powinna baza pod ten cel wyglądać. W każdym razie jak teraz rozróżnić inne akcje do działania na książce, dvd czy meblu kiedy nie mogę zastosować if-else czy switch ? Dzięki. Ten post edytował sadistic_son 15.12.2022, 10:36:08 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Dobra, widze ze chyba ja wczesniej pojechalem bez sensu..
Ale od poczatku Do tych danych [property] => width [label] => Width (cm) [description] => Please provide dimentions in WxHxL format. Dodaj jeszcze property_id Po grzyba masz potem w petli latac po to id, skoro mozesz je miec od razu A potem petla:
Zainetersuj sie BINDowaniem bo przykro sie patrzy na te inserty (IMG:style_emoticons/default/wink.gif) Cytat No i teraz problem jest taki, że user może wpisać dane dla innego typu, np poda typ 'dvd' ale wpisze właściwości dla mebla (wysokość, szerokość). Tak więc produkt w takim przypadku nie powinien się w ogóle dodawać (pierwszy insert). Do pętli go wrzucić nie mogę, bo nie ważne ile jest właściwości properties, to produkt musi się dodać tylko raz. Jakieś sugestie jak z tego wybrnąć? No i co z tego ze wypelni inne pola? Ty z post w petli bierzesz tylko pola z danego typu a nie wszystkie |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
[property] => width No racja, bez sensu SELECTy mnożyć, skoro dane są na wyciągnięcie ręki. Dodane.[label] => Width (cm) [description] => Please provide dimentions in WxHxL format. Dodaj jeszcze property_id Po grzyba masz potem w petli latac po to id, skoro mozesz je miec od razu Pętelka działa cacy. Dzięki. Zainetersuj sie BINDowaniem bo przykro sie patrzy na te inserty (IMG:style_emoticons/default/wink.gif) Tak, mam już gdzieniegdzie nawet pokomentowane bindowanie zapytań. Ale jeszcze słabo to ogarniam (choć to nie jest nic nadzwyczajnego), więc jak kod będzie działać, to wtedy dodam bindowanie.No i co z tego ze wypelni inne pola? Ty z post w petli bierzesz tylko pola z danego typu a nie wszystkie No dla product_properties tak jest jak mówisz. Ale zauważ, że najpierw trzeba dodac produkt, żeby znać jego ID. I to realizują linijki 6-8 z mojego kodu wyżej. A nie można wrzucić tego w pętlę do sprawdzenia czy typ istnieje w tablicy typów, no bo produkt ma się dodać tylko raz - wynika to z bazy, na której konstrukcję sam mnie naproawdziłeś TUTAJ. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 08:19 |