Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Czy tworzyc dodatkowe pole w bazie ?
Forum PHP.pl > Forum > Bazy danych > MySQL
lectric
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
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
dzieki, bardzo dobre rozwiazanie !

aha bede teraz przerzucal dane ze starej bazy do nowej. W starej bazie data_dodania zawodnika jest typu text smile.gif (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
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
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
MAsz funkcje w php do konwersji dany, strtotime() + date(), ew jakies inne
lectric
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 smile.gif

$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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.