Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Dodawanie nowych projektów
codeine
post
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
(IMG:http://img38.imageshack.us/img38/480/ryss.png)

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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
codeine
post
Post #2





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:
  1. CREATE TABLE konstruktorzy
  2. (
  3. email varchar(40) NOT NULL PRIMARY KEY,
  4. imie char(20) NOT NULL,
  5. nazwisko char(30) NOT NULL,
  6. haslo char(30) NOT NULL
  7. ) type=InnoDB;
  8.  
  9. CREATE TABLE projekty
  10. (
  11. nr_proj int UNSIGNED NOT NULL PRIMARY KEY,
  12. nazwa_proj char(30) NOT NULL,
  13. konstruktor_proj char(80) REFERENCES konstruktorzy(email),
  14. status_proj char(4),
  15. notka_proj text,
  16. plik_proj text,
  17. d_rozp_proj date NOT NULL,
  18. d_mod_proj date NOT NULL,
  19. d_zak_proj date NOT NULL
  20. ) type=InnoDB;
  21.  
  22. CREATE TABLE podzespoly
  23. (
  24. nr_podz int UNSIGNED NOT NULL PRIMARY KEY,
  25. nazwa_podz char(30) NOT NULL,
  26. konstruktor_podz char(80) REFERENCES konstruktorzy(email),
  27. status_podz char(4),
  28. notka_podz text,
  29. plik_podz text,
  30. d_rozp_podz date NOT NULL,
  31. d_mod_podz date NOT NULL,
  32. d_zak_podz date NOT NULL
  33. ) type=InnoDB;
  34.  
  35. CREATE TABLE elementy
  36. (
  37. nr_elem int UNSIGNED NOT NULL PRIMARY KEY,
  38. nazwa_elem char(30) NOT NULL,
  39. konstruktor_elem char(80) REFERENCES konstruktorzy(email),
  40. status_elem char(4),
  41. notka_elem text,
  42. plik_elem text,
  43. d_rozp_elem date NOT NULL,
  44. d_mod_elem date NOT NULL,
  45. d_zak_elem date NOT NULL
  46. ) type=InnoDB;
  47.  
  48. CREATE TABLE ppe
  49. (
  50. nr_proj int UNSIGNED NOT NULL REFERENCES projekty(nr_proj),
  51. nr_podz int UNSIGNED NOT NULL REFERENCES podzespoly(nr_podz),
  52. nr_elem int UNSIGNED NOT NULL REFERENCES elementy(nr_elem),
  53. PRIMARY KEY(nr_proj, nr_podz, nr_elem)
  54. ) type=InnoDB;
  55.  
  56.  
  57. INSERT INTO konstruktorzy VALUES
  58. ('r@o2.pl', 'Robert', 'Małys', sha1('rrr')),
  59. ('m@o2.pl', 'Adam', 'Adamski', sha1('mmm')),
  60. ('a@o2.pl', 'Aleksander', 'Broniek', sha1('aaa')),
  61. ('b@o2.pl', 'Bartosz', 'Cieszyński', sha1('bbb')),
  62. ('c@o2.pl', 'Cyprian', 'Dromad', sha1('ccc'));
  63.  
  64. INSERT INTO projekty VALUES
  65. (1000, 'podnosnik', 'Małys', '66%', 'projekt wykonania podnośnika', NULL, '2010-01-21', '2010-01-27', '2010-02-19'),
  66. (2000, 'statecznik', 'Adamski', '10%', 'projekt wykonania statecznika', NULL, '2011-03-23', '2011-04-11', '2011-05-10'),
  67. (3000, 'silnik', 'Broniek', '12%', 'projekt wykonania silnika', NULL, '2010-02-02', '2010-02-17', '2010-02-20');
  68.  
  69. INSERT INTO podzespoly VALUES
  70. (100, 'ramie', 'Adamski', '4%', 'podzespoly wykonywane', NULL, '2001-01-21', '2001-01-18', '2001-02-20'),
  71. (200, 'cylinder', 'Broniek', '56%', 'podzespoly wykonywane', NULL, '2003-03-23', '2004-04-11', '2004-05-11'),
  72. (300, 'podstawa', 'Dromad', '78%', 'podzespoly wykonywane', NULL, '2006-02-02', '2008-02-17', '2009-02-20');
  73.  
  74. INSERT INTO elementy VALUES
  75. (10, 'śruba', 'Adamski', '4%', 'elementy wykonywane', NULL, '2001-01-21', '2001-01-13', '2001-02-20'),
  76. (20, 'pręt', 'Broniek', '56%', 'elementy wykonywane', NULL, '2003-03-23', '2004-01-11', '2004-05-11'),
  77. (30, 'oś', 'Dromad', '77%', 'elementy wykonywane', NULL, '2006-02-02', '2008-02-17', '2009-02-25'),
  78. (40, 'pierścień', 'Małys', '25%', 'elementy wykonywane', NULL, '2001-01-21', '2001-03-18', '2005-07-24'),
  79. (50, 'hak', 'Cieszyński', '13%', 'elementy wykonywane', NULL, '2005-05-11', '2004-08-11', '2004-09-13'),
  80. (60, 'kulka', 'Broniek', '67%', 'elementy wykonywane', NULL, '2007-04-02', '2008-02-17', '2009-02-20');
  81.  
  82. INSERT INTO ppe VALUES
  83. (1000, 100, 10),
  84. (1000, 100, 20),
  85. (1000, 100, 30),
  86. (1000, 100, 40),
  87. (1000, 100, 50),
  88. (1000, 100, 60),
  89. (1000, 200, 10),
  90. (1000, 200, 20),
  91. (1000, 200, 30),
  92. (1000, 300, 40),
  93. (1000, 300, 10),
  94. (2000, 200, 20),
  95. (2000, 200, 30),
  96. (3000, 100, 60),
  97. (3000, 100, 50),
  98. (3000, 200, 50),
  99. (3000, 300, 50),
  100. (3000, 300, 10);
Coś tu chyba jest nieprawidłowo utworzone...
Być może źle zadaje pytania bazie, ale chcąc uzyskać wyniki otrzymuję nieprawidłowe informacje...
Np
  1. SELECT nazwisko, nazwa_elem, nazwa_podz, nazwa_proj FROM elementy, podzespoly, projekty, konstruktorzy WHERE nazwisko='Broniek'
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ę:
  1. SELECT nr_elem, nazwa_elem FROM elementy, ppe WHERE nr_proj='3000' AND nr_podz='300'
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
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 15.10.2025 - 04:14