lectric
10.03.2007, 15:52:30
Witam,
Projektuje teraz baze sql i zastanawiam sie nad jedna rzecza. Mianowicie:
Do bazy beda dopisywani nowi zawodnicy:
tabela_zawodnik:
nazwa
wiek
typ_zawodnika
data_dodania
-----
Internauta bedzie listowal zawodnikow z uwzglednionym kryterium (typ_zawodnika), jesli typ_zawodnika = 1
wtedy na liscie wiersz z jego nazwiskiem zapisany jest pogrubiona czcionka przez okres od daty dodania do + 4 dni. Typ_zawodnika = 2 wtedy okres pogrubienia od daty dodania + 10 dni.
Teraz nie wiem czy dodac jeszcze jedno pole data_zakonczenia (zakonczenia pogtrubienia) w tabeli_zawodnik i wyswietlac pozniej przy listowaniu wykorzystujac between czy nie dodawac tego pola
i podczas listowania stworzyc funkcje ktora bedzie liczyla na bierzaca daty kazdego zawodnika .
Ktore rozwiazanie jest mnie obciazajace sprzet i lepsze waszym zdaniem ?
Dodam iz ilosc listowanych zawodnikow moze liczyc do 1000 pozycji.
dr_bonzo
10.03.2007, 16:10:57
Nie rob jednoczesnie typu zawodnika i dwoch dat, bo bedziesz mial powielane dane:
data zakonczenia = data rozpoczecia + ilosc_dni[ typ_zawodnilka]
jak widzisz date zakonczenia mozna wyliczyc. Tak samo date rozpoczecia.
Wlasciwie wystarczy ci tylko zapisywac date zakonczenia, bo:
* nikt nie jest w stanie listowac zawodnika przed data jego dodania
* a typ zawodnika do niczego innego sie nie przydaje niz do okreslenie daty_zakonczenia
wiec przed zapisem wyznaczasz date zakonczenia, zapisujesz ja i przy wyswietlaniu nie musisz jej wyliczac (jakis maly zysk wydajnosci, jak zmierzysz bedziesz wiedzial jaki: przy dacie + typie pobierasz wiecej danych + dokonujesz obliczenia daty_zakonaczenia + Porownania; a takto tylko pobierasz mniej danych + porownania)
no chyba ze nie umiesciles calego opisu znaczenia wymienionych parametrow (np. mozna wielokrotnie zglaszac zawodnika do 'pogrubiania', typ_zawodnika znaczy cos wiecej, itp).
lectric
10.03.2007, 18:17:14
dzieki, bardzo dobre rozwiazanie !
aha bede teraz przerzucal dane ze starej bazy do nowej. W starej bazie data_dodania zawodnika jest typu text

(ktos spiepszyl) a w nowej bazie oczywiscie data_dodania to typ date.
Czy jesli pobiore date ze starej bazy i przypisze ja do np. $data a nastepnie wrzuce do nowej bazy to bedzie wszystko ok ? Dane zostana automatyczne skonwertowane z typu text na date ?
dr_bonzo
10.03.2007, 18:30:12
Jesli robisz to w php to pole typu DATA jak i TEXT sa reprezentowane w php w postaci stringa, wiec: TAK, zostanie wszystko prawidlowo skonwertowane (bo przy insercie z php date podajesz jako string).
lectric
11.03.2007, 16:08:41
w starej bazie format daty to DD-MM-RRRR natomiast w nowej bazie poprawne pole z data typy date ma format RRRR-MM-DD, kiedy przenosze z jednej do drugiej bazy date otrzymuje zapis 0000-00-00.
Nie tak latwo jednak.
Tak sie zastanawiam czy moze da sie zmienic format zapisu daty w nowej bazie z obecnego na DD-MM-RRRR ?
dr_bonzo
11.03.2007, 16:17:07
MAsz funkcje w php do konwersji dany, strtotime() + date(), ew jakies inne
lectric
11.03.2007, 16:24:39
tak ale jest to typ string czyli bede zmuszony najpierw porozdzielac zmienna z "-" pomiedzy cyframi w dacie ?
ok juz jest super, podam rozwiazanie moze sie komus przyda

$nowa_data = explode('-',$stara_data);
$dzien = $nowa_data[0];
$miesiac = $nowa_data[1];
$rok = $nowa_data[2];
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.