Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] korzystanie w typu DATE
Forum PHP.pl > Forum > Przedszkole
InosU31
Witam

Utworzylem sobie w bazie mysql tabelke z kolumna "data" ktora bedzie typu DATE i druga "napis" typu VARCHAR. Ogolnie chce zrobic tak ze jezeli w rekordzie "data" bedzie dzisiejsza data to w rekordzie "napis" ma sie pojawic jakis napis a najlepiej jakby sie zmienial np: z Aktywny na Nieaktywny. Pytanie moje jest takie czy da sie wogle to zrobic w mysql'u questionmark.gif A jesli sie da to moze jakies podpowiedzi? Zrobilbym to w php ale strona sama sie nie przeladuje a to chodzi o to by o 24:00 dnia dzisiejszego zmienil sie ten napis ale sam.



z gory dzieki za podpowiedzi;-)



Pozdrawiam

Andaramuxo
Cyklicznie? CRON?
jmail
zamień tą kolumnę date na TimeStamp i aktualizując użyj funkcji now()

teraz jeżeli wykonujesz jakiś update zrób

  1.  
  2. UPDATE
  3. tabela
  4. SET
  5. napis = 'aktywny';
  6.  
  7. UPDATE
  8. tabela
  9. SET
  10. napis = 'nieaktywny'
  11. WHERE
  12. DATE_FORMAT(DATA, '%Y-%m-%d') <> DATE_FORMAT(now(), '%Y-%m-%d');
  13.  



//edycja

adaramuxo - a poco CRON? nie wystarczy tutaj triger onUpdate albo onInsert?
InosU31
Dzieki za odpowiedzi:-) No cron raczej odpada - przynajmiej narazie  - za duzo tego wszystkiego :php, mysql, css, pozniej javascrpt dojdzie,



Wszystko fajnie tylko mi chodzi o to by to sie automatycznie robilo;-)



A nie mozna zrobic czegos takiego w mysql'u :

1kolumna : jakas_data

2kolumna: napis

3.kolumna: aktualna data



jezeli kolumna1 = kolumna3

wyswietl napis



jezeli daloby sie ustawic 3 kolumne tak aby pokazywala aktualna date to w rekordzie gdzie jest napis moze daloby sie zrobic jakas formulke na styl exela. kiedys zrobilem cos takiego ze mi dodawalo dwa rekordy do siebie i w trzecim dawalo wynik a w exelu tak samo tylko ze do tego w kolejnym rekordzie pisalo minus lub plus w zaleznosci czy wynik byl minusowy czy dodatni.

hmm teraz tak sobie mysle ze rekord zawierajacy akualna date musialby sie automatycznie aukualizowac... jest to wogule mozliwe?? tzn. bez wykonywania jakich kolwiek operacji w bazie? czy trzabyloby updatowac ten rekord z aktualna data?



pozdrawiam

Andaramuxo
w ogóle*
Żeby aktualizować aktualną datę, trzeba wykonać skrypt, automatycznie się nie da.
CyberDuck_
Da sie, ale tak jak kolega podpowiedzial musialbys miec
dostep do shela i z cron moglbys odpalac skrypt php, ktory
te czynnosci wykona. Niestety mamlo ktory admin pozwala
na dostep do shell'a .

Wykonaj ten skrypt, ktory Ci bedzie zmieniac wpisy zawsze
na samym poczatku strony w jakims stale ladowanym
elemncie o ile wogole masz zrobiony podzial strony na moduly.

Zapisuj sobie daty w postaci znacznikow czasu.
To jest bardzo wygodne i zwykle wymaga mniej obliczen.
  1. $timestamp = time();

Znaczniki czasu mozesz w wygodny sposob sobie przeksztalcac
w dowolna strone np na date i czas :
  1. echo date("d.m.Y H:i", $timestamp);


Zeby sie dowiedziec czy juz minelo od zapamietanej daty 24
godziny to nic prostszego ...
  1. if ($zapamietanadata < (time() - 86400)) { // 86400 sek - 24 godziny
  2.  
  3. }


No i tego typu dane zapisuj w polach typu INT. W przyszlosci
to ulatwi np sortowanie. Wykonanie takiego skryptu o ktorym
piszesz po takich zmianach bedzie drobnostka.
dadexix
cPanel, DA udostepnia corn, a takze sa darmowe corny[na innych serwerach;)
InosU31
dzieki cos pokombinuje;-)



pozdrawiam:-)



Andaramuxo - nie musisz mnie poprawiac jak zauwazyles nie pisze polskich znakow (ogonkow) i w ogole to czesto robie literowki wiec Twoje poprawki sa zbedne;-) A to nie jest forum gramatyczne/ortograficzne tylko informatyczne ;-)

jmail
da się biggrin.gif w SQL'u

musisz utworzyć widok, który Ci te dane sparsuje jak chcesz winksmiley.jpg

  1. CREATE VIEW
  2. tabela_view
  3. AS
  4. SELECT
  5. DATA
  6. ,case when
  7. DATE_FORMAT(DATA, '%Y-%m-%d') <> DATE_FORMAT(CURRENT_TIMESTAMP, '%Y-%m-%d') then
  8. 'niekatywny'
  9. else
  10. 'aktywny'
  11. end AS napis
  12. FROM
  13. tabela;


i w kodzie wsytąpienia tabela zamienić na tabel_view i masz to co chcesz. winksmiley.jpg

oczywiscie przy tworzeniu widoku, trzeba pamiętać, żeby resztę kolumn z tabeli przepisać
InosU31
dzieki jmail:-)
jmail
aha i widoki możesz updateować a dane trafią do tabeli pod widokiem jeżeli jedt index winksmiley.jpg więc niczym się nie przejmuj tylko rób widok smile.gif i operuj nim jak normalną tabelą
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.