Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Zadania do wykonania, Czyli jak zrobić angielskie To DO
redelek
post 30.07.2008, 08:02:28
Post #1





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

Ostrzeżenie: (0%)
-----


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


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post
vokiel
post 30.07.2008, 10:14:16
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


  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


--------------------
Go to the top of the page
+Quote Post
redelek
post 30.07.2008, 11:34:40
Post #3





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

Ostrzeżenie: (0%)
-----


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


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post
vokiel
post 30.07.2008, 13:37:27
Post #4





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 19:06