![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 20.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie! Jestem w trakcie tworzenia własnego systemu do zarządzania wykonywanymi projektami.
I utknąłem... Jak w php rozwiązać sprawę dodawania nowych projektów? Już tłumaczę o co chodzi... PRZYKŁAD ![]() 1. Strona głowna. Klikam w "wykonane" i, 2. Chce tam przycisk/link "dodaj projekt", 3. Otwiera mi się formularz i wypełniam - "nr projektu", "nazwa" , "data" - 1033 - podnośnik - 20.10.2011 - ZAPISZ 4. Po czym klikam w 1033 i poniżej wyświetla mi się okienko ze szczegółowymi plikami projektu... Przycisk "dodaj podzespół" służy do dodawania poszczególnych podzespołow projektu PODNOŚNIK a "dodaj element" daje możliwość dodawania elementów składających się na dany podzespół... Pytanie brzmi: Jak to w php'ie zrobić? Czy jest możliwość dodawania w tym przypadku nowego projektu, który od razu da mi możliwość kliknięcia w jego numer. I rozwinięcia kolejnego kroku do którego będę mógł dodawać podzespoły i elementy danego projektu? Te części to są pliki które można ściągnąć (cylinder, tłok, ramię) a są przechowywane na serwerze. Wogóle bajecznie by było jak tworzyłyby mi się te katalogi w takiej samej strukturze jak na stronie. Czyli dodając nowy projekt tworzy mi się katalog o nazwie PODNOŚNIK. A w środku kolejny -> PODSTAWA i CZESC GORNA wewnątrz których mam poszczególne pliki. W jaki sposób moża to rozwiązać jesli się w ten sposób da. Chyba, że strasznie pokomplikowałem i utrudniłem ten mam nadzieje nie aż tak bardzo skomplikowany problem... Ten post edytował codeine 20.10.2011, 22:43:01 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Jest to dość proste do wykonania (ale strasznie czasochłonne) Poczytaj o :
- gridach w PHP - obsłudze formularzy i żądań - mkdir i pochodne (manual twoim przyjacielem) - file_get_contents, file_put_contents / fopen,fwrite,fclose,file itp. - jeżeli nie umiesz posługiwać sie bazą danych to polecam artykuły o mysql Jeżeli to ogarniesz będziesz wiedział jak zrobić to co opisałeś ![]() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Aby uniknac przyszlych problemow dodam tez, ze wazne sa ustawienia serwera (jak maksymalny rozmiar uploadowanego pliku). Wazne jest tez odpowiednie zabezpieczenie katalogow (przez .htaccess) aby nikt nie mogl pobrac sobie Twoich projektow. Oczywiscie inne zabezpieczenia (przed SQL injection itp.) sa rownie wazne.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 20.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
dziękuje za wszelkie podpowiedzi i sugestie. Spróbuję się w to wgryźć i rozwiązać problem.
/edit 1. Hmmm, a jaka w tym przypadku byłaby najsensowniejsza metoda zapisu tych informacji o plikach projektów? Czy można utworzyć tablice PODNOŚNIK i w niej wszystkie elementy (cylinder, ramka, ramię) i drugą tablice PODNOŚNIK_PODZESPOŁY w której byłyby nazwy podzespołów? Chyba, że od razu tablice dwuwymiarową jeśli do tego była by najlepsza (nigdy nawet z czegoś takiego nie korzystałem, wiem tylko, że są...)? 2. A co do mysql. Mam w tym projekcie już stosowaną bazę danych bo przechowuje w niej informacje o logowanych i rejestrowanych użytkownikach, ale czy do informacji o plikach (oczywiście w bazie tylko nazwy plików odnoszące się do ich miejsca w katalogu na serwerze, a nie pliki bezpośrednio w bazie) też należy ją zastosować? Bo nie potrzebuje informacji np. o tym jaki użytkownik dodał który plik. Chyba, że czegoś tu nie widzę, albo źle interpretuje... 2.1. I od razu zadam pytanie gdyby okazało się, że baza danych informacji o dodawanych plikach jest niezbędna: Jak zapisać informacje w bazie o danym projekcie? Chyba najlepszym rozwiązaniem będzie tworzyć za każdym razem nową tabelę z nazwą projektu (create table...)? Czyli miałbym tabele PODNOŚNIK która zawierałaby info na temat wszystkich części (kolumny: L.P, nr. projektu, nazwa, data, stopień zaawansowania itp). A kolejny projekt to już kolejna tabela. Tyle ile miałbym projektów tyle byłoby tworzonych tabel. PS. Co do mojej obecnej wiedzy na temat php to nabywam ją stopniowo. Wzoruje się na książce wydawnictwa Helion - "PHP i MySQL Tworzenie stron www". |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
1. Logicznym jest nie tworzenie osobnych tabel dla każdego projektu. W tym wypadku musisz przewidzieć jakie dane będą zapisywane do bazy dla każdego nowo tworzonego projektu. Ja bym to widział w ten sposób:
projekty id | nazwa | plik |status podzespoly id | nazwa | dodtkowe_info_1 | dodatkowe_info_2 | dodatkowe_info_n+1 | plik | status projekty_podzespoly id_projekt | id_podzespol Dzięki temu w łatwy sposób połączysz podzespoły z danym projektem używając tylko jednego zapytania. 2. Bazy danych służą do przechowywania dynamicznych treści, więc tak składowanie nazw plików w bazie jest jak najbardziej prawidłowe 2.1. Czytaj punkt 1 ![]() |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 20.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Zaimplementowałem już część odpowiedzialną za użytkowników i dodawanie oraz edycje projektów. Jednak by kontynuować potrzebuje już tabel w bazie dotyczących podzespołów i elementów oraz odpowiednich zależności pomiędzy tymi tabelami.
(Każdy projekt zawiera wiele podzespołów. Każdy podzespół zawiera wiele elementów... - pierwszy post - obrazek) Biorąc pod uwagę podpowiedź CuteOne utworzyłem następującą bazę danych: Coś tu chyba jest nieprawidłowo utworzone... Być może źle zadaje pytania bazie, ale chcąc uzyskać wyniki otrzymuję nieprawidłowe informacje... Np Zamiast wyników: silnik, cylinder, pręt, kulka otrzymuje wypisane wszystkie elementy, podzespoły i projekty. Albo chcąc uzyskać informacje o nazwie elementu i jego numerze gdzie nr_projektu=3000 i nr_podzespołu=300 piszę: uzyskuje błędne wyniki bo wypisuje wszystkie elementy zamiast tylko: 10 śruba, 50 hak Czy wogóle tak skonstruowana baza ma sens? Czy może powinna być zlikwidowana tabela "ppe". Wtedy nr_proj i nr_podz dałbym do tabeli elementy. A do tabeli podzespoly dałbym nr_proj i odpowiednio podpiął bym do tych wierszy klucze obce wskazujące na tabele nadrzędne. Ten post edytował codeine 2.11.2011, 23:34:32 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Nie dziwota, że takie cuda wychodzą gdy nie ma się nawet podstawowej wiedzy na temat MySQL. Mały przykład:
W ten sposób łączysz ze sobą kilka tabel i pobierasz z nich to co chcesz |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 10:37 |