Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Zadania do wykonania
Forum PHP.pl > Forum > Przedszkole
redelek
Witam,

Potrzebuję zrobić na swojej stronce takie zadania z terminami wykonania prac. Narazie przymierzam się do tego i mam kilka pytań.

Tak będzie wyglądała tabela

  1. CREATE TABLE `zadania` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `login` varchar(15) collate utf8_polish_ci DEFAULT NULL,
  4. `tytul` varchar(50) collate utf8_polish_ci DEFAULT NULL,
  5. `opis` text collate utf8_polish_ci,
  6. `data_rozpoczecia` datetime NOT NULL,
  7. `data_zakonczenia` datetime NOT NULL,
  8. `status` int(10) UNSIGNED DEFAULT NULL,
  9. PRIMARY KEY (`id`)
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;


Teraz mam kilka pytań,

1. W polach data_rozpoczecia mam zapisywaną datę i godzinę czy nie lepiej to oddzielnie zapisać ? Chodzi o późniejsze porównywanie i wykonywanie odpowiedniego kodu.
2. Czy skrypt który to będzie sprawdzał umieścić w CRON czy raczej na bieżąco po wczytaniu strony to ustawiać
3. Czy pole status z cyframi 1 - rozpoczęte 2 - wykonane 3 - po terminie to dobry pomysł czy coś innego byście sugerowali?
4. czym porównywać daty i godziny? Date czy microtime - co będzie dokładniejsze?

Będę bardzo zobowiązany za kilka słów lub propozycji na moje pytania.

Dzięki
Redelek
vokiel
  1. Datę lepiej zapisywać razem z godziną. Dla późniejszego porównywania i wykonywania kodu nie będzie to stanowiło problemu.
  2. Zależy co ten skrypt ma sprawdzać. Jeśli tylko pobierać liste ToDo, to przy wczytaniu strony, zwykły select, cron tu nie jest w ogóle potrzebny.
  3. Status mozesz zapisac jako liczby z zakresu 0-10 odpowiadające procentowemu wykonaniu zadania. Wtedy jesli 0 - rozpoczete, 10 - zakonczone, a wartosci pomiedzy to w trakcie, wykonane w x%.
  4. Typ danych w bazie danych timestap albo datetime. Jesli bedziesz mial timestap to mozesz ustawic domyslna wartosc na aktualna godzine (DEFAULT CURRENT_TIMESTAMP). Zalezy co chcesz porownywac. Jesli chcesz liczyc ile czasu trwalo zadanie to zrobisz to w samym select w sql, po prostu odejmiesz dwie daty. Jesli chcesz liczyc ile czasu zostalo na wykonanie zadania, to tez odejmujesz daty (data_zakonczenia - now()) i tez sql winksmiley.jpg

Na poczatku określ dobrze funkcjonalności, które chcesz aby ten system miał. Wtedy jest łatwiej tworzyć strukturę bazy.

Pozdrawiam smile.gif
redelek
Cytat(vokiel @ 30.07.2008, 09:14:16 ) *
  1. Datę lepiej zapisywać razem z godziną. Dla późniejszego porównywania i wykonywania kodu nie będzie to stanowiło problemu.
  2. Zależy co ten skrypt ma sprawdzać. Jeśli tylko pobierać liste ToDo, to przy wczytaniu strony, zwykły select, cron tu nie jest w ogóle potrzebny.
  3. Status mozesz zapisac jako liczby z zakresu 0-10 odpowiadające procentowemu wykonaniu zadania. Wtedy jesli 0 - rozpoczete, 10 - zakonczone, a wartosci pomiedzy to w trakcie, wykonane w x%.
  4. Typ danych w bazie danych timestap albo datetime. Jesli bedziesz mial timestap to mozesz ustawic domyslna wartosc na aktualna godzine (DEFAULT CURRENT_TIMESTAMP). Zalezy co chcesz porownywac. Jesli chcesz liczyc ile czasu trwalo zadanie to zrobisz to w samym select w sql, po prostu odejmiesz dwie daty. Jesli chcesz liczyc ile czasu zostalo na wykonanie zadania, to tez odejmujesz daty (data_zakonczenia - now()) i tez sql winksmiley.jpg
Na poczatku określ dobrze funkcjonalności, które chcesz aby ten system miał. Wtedy jest łatwiej tworzyć strukturę bazy.

Pozdrawiam smile.gif


Chodzi o zadania dla siebie. Jeśli dodam jakieś zadanie jego termin końcowy będzie się równał z datą i godziną danego dnia to zadanie zaświeci się na czerwono i zostanie wysłany e-mail do mnie, że zadanie przekroczyło termin. W bazie automatycznie zmieni się status zadania na 3 czyli po terminie.
Jeśli zadanie będzie miało status 2 czyli zakończone będzie świecić na niebiesko lub będzie przekreślone.
Chodzi mi o taką małą organizację czasu i zadań. Coś podobnego co jest w MS-Outlook tylko przez WWW

Oki dzięki za sugestie pomyślę i zastanowię się nad Twoimi wskazówkami.

Dzięki
Redelek
vokiel
Aha.
To ja bym to rozwiązał tak:
1. dodajesz zadanie, ustalasz termin końcowy
2. podzieliłbym zadania na ich status, i pobierał w 3ech funkcjach (termin < dzisiaj && status!=10) (termin > dzisiaj && status!=10) (status=10):

| ID | ZADANIE | Termin |
---------------------------
| ZADANIA PO TERMINIE |
---------------------------
| 1 | afafdas | 2008-07-29|
---------------------------
| ZADANIA OCZEKUJACE |
---------------------------
| 1 | afafdas | 2008-08-03|
---------------------------
| ZADANIA ZAKOŃCZONE |
---------------------------
| 1 | afafdas| 2008-08-03|

3. rozwiązanie powiadamiania:
3.1 - cron
3.2 - otwarta caly czas strona w przegladarce, i ajax odpytujacy baze co jakiś zadany czas
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.