interaktywny kalendarz

0

Witam serdecznie
Moja firma postawiłą przedemną problem z którym troche się motam i chciałbym prosić o pomoc.
Chodzi o stworzenie czegoś na kształt terminarza dla rezerwacji samochodu. przykładowo widzimy schemat tygodniowy no i jest tam zaznaczone że samochód w takim dniu w godzinach na przykład 8-9:30 jest zarezerwowany. Użytkownik ma możliwość rezerwacji danego samochodu (bez względu na to czy auto jest już zarezerwowane czy nie!) dlatego że chodzi o auta ciężarowe i konieczna jest możliwość doładowania czegoś jeżeli auto nie jest w pełni załadowane.
Stworzyłem sobie baze w której zawarłem pola:
ID int(11) auto_increment
DATA date
gstart text
gstop text
opis longtext

udaje mi się oczywiście dodawać nowe wpisy ale kompletnie nie mam pomysłu na to w jaki sposób je wyświetlać. próbowałem po prostu wsadzać je w tabele tworząc coś swojego rodzaju kalendarz ale mi się rozjerzdźało, próbowałem wczytywać dane z bazy do tablicy[][] bez powodzenia. Proszę o pomoc bo chyba moje umiejętności są tutaj jeszcze zbyt małe.

0
$oldest = 60*60*24*2; //60 sekund w minucie, 60 minut w godzinie, 24 godziny w dobie, dwie doby sumarycznie. Konkluzja: Wpisy na których samochody już dojechały są ukrywane z listy po 2 dniach
$oldest = time()  - $oldest; //Obliczamy ile sekund od epoki UNIXowej możemy dopuścić

$q = mysql_query('SELECT * FROM samochody WHERE gstop < '.$oldest.' ORDER BY `DATA` DESC ', $link);
while($tablica = mysql_fetch_array($q)) {
if ($tablica['gstop'] < time()) $stan = '<font color="green">Ukończono</font>';
if ($tablica['gstart'] > time()) $stan = '<font color="green">Oczekuje</font>';
if ($tablica['gstart'] < time() && $tablica['gstop'] > time()) $stan = '<font color="red">Jedzie do celu</font>';

echo('Samochód '.$id.' przewozi: '.$tablica['opis'].'; Status: ' . $stan);
}

W tym zapytaniu jednak uwzględniam to że gstart i gstop to wartości INT, bo najwygodniej jest przedstawiać czas w formie liczby. Możemy że tak powiem przekonwertować naszą datę w ilość sekund od czasu rozpoczęcia epoki UNIXowej i na odwrót za pomocą funkcji: mktime() oraz date(). Funkcji MKTIME do konwertowania czasu na liczbę używasz tak:

$liczba = mktime($s_godzina,$s_minuta,$s_sekunda,$s_dzien,$s_miesiac,$s_rok);

I to co wychodzi to zwykły INT. Bardzo poręczne przy porównywaniu dat w PHP, bo w przypadku gdy gstart to: 900 12.03.2009, a gstop to: 900 12.03.2009 to różnicę obliczysz w banalny sposób. Obie daty konwertujesz na liczby i odejmujesz. Zostaje Ci liczba sekund różnicy między datami ;)

0

kwestie sprawdzenia i porównywania są super.
Nie wiem jednak jak zadeklarować element wyświetlający. tzn jak graficznie to pokazać.
to co mam zrobić to coś w stylu kalendarza tygodniowego z godzinami. (troche jak w kalendarzu outlocka :) )

              8 | 8:30 | 9 | 9:30|.........|18:00

poniedziałek | | | | |
wtorek | |rrrrrrrrrrr| |
środa | | | | |
czwartek |rrrrrrr| | | |
piątek |
sobota

W miejscu gdzie napisałem dzień tygodnia oczywiście może być data, to bez znaczenia. W sumie datę mogę wziąć z bazy to będzie nawet prostsze. Nie wiem czy na takiej deklaracji bazy dam radę zrobić coś takiego.
generalnie myślałem w ten sposób aby najpierw wypisać godziny w jakiejś tam pentli. a potem sprawdzać idąc po kolei względem danych z bazy sprawdzać czy są zaznaczone czy nie ale sypie mi się to i nie działa.
aha jeżeli chodzi o id to nie odzwierciedla ono samochodu tylko jest czymś w rodzaju klucza w tabeli bazy. Myślałem o zrobieniu osobnej tabeli dla każdego pojazdu (jest ich aż 3 :) więc nie będzie to problem)
bardzo dziękuje za pomoc

0

Polecam zrobić tabelkę (, ) i dla daty 01.02.2009 09:00 będzie to zapytanie MKTIME takie o:

$s_start = mktime(9, 0, 0, 1, 2, 2009); //Od godziny 9:00
$s_stop = mktime(9, 29, 0, 1, 2, 2009); //Do godziny 9:29 sprawdzamy

Mamy już liczbę sekund rozpoczęcia. Teraz musimy w naszej pętli coś takiego zrobić:

mysql_query('SELECT * FROM samochody WHERE gstart < '.$s_start.' AND gstop > '.$s_stop);

W ten sposób wybierzemy samochody, które jadą pomiędzy godziną 9.00, a 9:29 (bo do 9:30 mamy przecież już nową kolumnę!). Później tylko pętelka while() i wypisujemy litanię do odpowiedniej komórki w tabelce, przykładowo podczas tworzenia poniedziałku:

<tr>
     <td>Poniedziałek</td>
     <td><? wybierzSamochody(8, 30, 0, 1, 2, 2009); ?></td> <!-- 8:30 -->
     <td><? wybierzSamochody(9, 0, 0, 1, 2, 2009); ?></td> <!-- 9:00 -->
     <td><? wybierzSamochody(9, 30, 0, 1, 2, 2009); ?></td> <!-- 9:30 -->
</tr>

Ja tu sobie oczywiście zadeklarowałem dla pomocy funkcję WYBIERZ SAMOCHODY która przyjmuje takie same parametry jak MKTIME. Mam nadzieję że rozumiesz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1