Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][MySQL] Plan lekcji
Forum PHP.pl > Forum > Przedszkole
ahilles107
Witam winksmiley.jpg
Chciałbym zrobic plan lekcji w php (dla gimnazjum) - mozliwość dodawania klas i zmiany planu poprzez panel admina.
I nie wiem jak go zaprojektowac ;/ tzn. co dać w bazie i na jakiej zasadzie go zrobić questionmark.gif

Może ktoś juz cos takiego robił questionmark.gif
Hazel
Ja bym to zrobił troszkę wiejskim sposobem, ale możliwie chyba najlepszym. Jedna tabela, o kolumnach:

Klasa Poniedziałek Wtorek... itd.

W każdej kolumnie dotyczącej dnia masz odddzielone na przykład średnikami lekcje danej klasy, i formatujesz w PHP. Dla dużych projektów to niestosowne i musiałbyś pokombinować nad lepszą strukturą, ale tutaj powinno wystarczyć.
Pozdrawiam i życzę powodzenia...

P.S. Jak ktoś ma lepszy pomysł, to mnie uświadomcie tongue.gif
ahilles107
hmm ale w jednym dniu jest kilka lekcji ;/
Hazel
Cytat(Hazel)
W każdej kolumnie dotyczącej dnia masz odddzielone na przykład średnikami lekcje danej klasy, i formatujesz w PHP


Hm, coś niejasno napisałem?
ahilles107
sorqa ;/ nie zaczaiłem.

a jakis inny sposób questionmark.gif coś bardziej elastycznego questionmark.gif
kamilw
Tworzysz tabele z id każdej klasy i nazwą lub czym tam jeszcze chcesz.
A następnie 5 tabel z nazwami dni tygodnia.

Np Poniedziałek
Id klasy . lekcja1. Lekcja2. lekcja 3 itp

I potem formatujesz sobie w php.
Piotrwusek
napisałem coś takiego ostatnio tylko ze do jednej klasy jakby Cię interesowało to daj z nać
Hazel
Cytat(kamilw @ 12.10.2007, 21:59:54 ) *
Tworzysz tabele z id każdej klasy i nazwą lub czym tam jeszcze chcesz.
A następnie 5 tabel z nazwami dni tygodnia.


blinksmiley.gif blinksmiley.gif blinksmiley.gif

To już mój wiejski sposób lepszy...
Bo masz jedną tabelę zamiast wielu, a formatować w php i tak musisz...

@Piotrwusek
no jemu chodzi o wiele klas, jak dla jednej to żaden problem chyba...
Cienki1980
Jak dla mnie najlepszym rozwiązaniem bazy danych dla planu lekcji jest następujący ( podaje tylko główne pola w tabelach, zawsze można każdą tabelę rozbudować )


Tabela : przedmioty:
id - INT auto_increment,
nazwa - varchar

Tabela : klasy:
id - INT auto_increment,
nazwa - varchar

Tabela : nauczyciel:
id - INT auto_increment,
nazwisko - varchar,
imie - varchar

Tabela : plan:
id - INT auto_increment,
id_przedmiot - INT ( klucz obcy ),
id_klasa - INT ( klucz obcy ),
id_nauczyciel - INT ( klucz obcy ),
dzien - INT ( np znacznik dnia ( np. 0-6 zwracany przez PHP ))
godzina - ( pole jak kto woli, albo int albo varchar do zapisu startu lekcji )

Można to jeszcze uzupełnić o tabelę łączącą nauczycieli z przedmiotami:
Tabela : nauczyciel_przedmiot:
id - INT auto_increment,
id_przedmiot - INT (klucz obcy),
id_nauczyciel - INT (klucz obcy)
wtedy w tabeli plan pola id_przedmiot i id_nauczyciel można zastąpić id_nauczyciel_przedmiot.

Układ taki pozwala na pełną elastyczność zmian oraz rozszerzeń planu na więcej nauczycieli, przedmiotów i klas.

@Hazel skoro uważasz, że jedna tabela jest lepsza od wielu ... bo i tak obrabiasz w PHP ... to czas może zacząć sprawdzać jakie korzyści daje więcej tabel questionmark.gif biggrin.gif
Hazel
nie, nie, nie.

Jedna tabela na pewno nie jest lepsza od wielu. Weź przestań ph34r.gif
Chodziło mi o to, że jedna tabela jest lepsza od kilku, jeśli mam mieć w jednej tabeli przedmioty oddzielone średnikami, albo w kilku tabelach to samo, to wolę już mieć jedną, bo formatowac i tak muszę. I nie wkopuj mnie w sprawy typu (może warto zapoznać się wreszcie z instrukcją echo?).

A Twój pomysł jest najlepszy spośród tych trzech rzuconych, bo nie trzeba wartości pola pobranego z bazy rozbijać według średników albo innych separatorów. I mimo że struktura dość skomplikowana, to faktycznie bardzo mi się podoba, gratuluję.
phpion
Cytat(Hazel @ 14.10.2007, 14:07:11 ) *
A Twój pomysł jest najlepszy spośród tych trzech rzuconych, bo nie trzeba wartości pola pobranego z bazy rozbijać według średników albo innych separatorów. I mimo że struktura dość skomplikowana, to faktycznie bardzo mi się podoba, gratuluję.

Powiedziałbym więcej: jest to jedyny właściwy i poprawny sposób spośród tych podanych. Pozostałe to pełna amatorszczyzna smile.gif
Hazel
Nie spamując zbytnio, dopiszę tylko, że masz zupełną rację, a przyznać Wam ją muszę w ramach kary za brak myślenia w poprzednim poście - bo jakbym pomyślał, sam bym wygłówkował. Pozdrawiam.
batman
Podstawowe tabele, których będziesz potrzebował to:
  • Klasy - informacje o klasach - identyfikator (numer), ilość uczniów, dodatkowe informacje (wedle uznania).
  • Sale - identyfikator (numer), ilość miejsc, dodatkowe wyposażenie.
  • Przedmioty - identyfikator, nazwa, dodatkowe informacje (wedle uznania).
  • Nauczyciele - identyfikator, imię, nazwisko, dodatkowe dane (wedle uznania).
Następnie potrzebujesz kilku relacji:
  • Sala_przedmiot - relacja między przedmiotami i salami. Dzięki temu angielski nie będzie się odbywał w sali WF i odwrotnie.
  • Nauczyciel_przedmiot - określa jaki nauczyciel prowadzi jaki przedmiot.
  • Klasa_przedmiot - przypisanie przedmiotów do klas. Nie od dziś wiadomo, że różne roczniki mają różne przedmioty.
Do tego dojdzie pomocnicza tabela (nie jest konieczna) - Dni. Dni mogą się przydać w przypadku zapytań, w których zamiast numerka, chcesz wyświetlić dzień tygodnia.

Na koniec najważniejsza tabela: Plan_zajec. W zasadzie wystarczy w tej tabeli zamieścić jako klucze obce wartości kluczy podstawowych z czterech pierwszych tabel i identyfikator dnia. Warto zadbać o integralność danych i przed dodawaniem czegoś do tej tabeli sprawdzić relacje (po to zostały one stworzone).

To chyba wszystko, co potrzebujesz do stworzenia bazy danych. Wiedz jednak, że porywasz się z motyką na słońce. Aplikacja taka to nie jest takie hop-siup. Jeśli będziesz układał ten plan ręcznie, to jeszcze pół biedy, jednak jeśli chcesz generować ten plan automatycznie, to szczerze życzę powodzenia.
tommy4
U mnie to wygląda w ten sposób:

http://samorzad.8lo.pl/schemex.php

jedna tabela klasy, druga dni, trzecia godziny, czwarta lekcje

zajęcia wpisuje się ręcznie, panel wygląda tak:





Tabel nie będę rozpisywał, bo mi się nie chce;x
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.