Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php i mysql]Porównanie daty z bazy i teraźniejsze
Forum PHP.pl > Forum > Przedszkole
Gość_srwsio_*
mam tabele w bazie z danymi
i w niej 4 rekordy
ID NAZWA DATA OTWARTE
i teraz dodam np wiersz następujący
1 , pilka , 23-08-2006 15:00 , 0

i teraz chce dodac do skryptu funkcję która w momencie kiedy będzie dzień 23-08-2006 15:00:00 zmieni mi automatycznie rekord OTWARTE z 0 na 1 czyli w bazie będzie wygladac to tak

1 , Srwsio , 23-08-2006 15:00 , 1

Po przeszukaniu tutaj forum niestety nie znalazłem prawie nic co mogłoby mi podsunąc pomysł - jedynie znalazłem takie cos i troszkę wyedytowałem i powstalo mi :

  1. <?php 
  2. zapytanie do bazy, z której wyciągam dane takie jak ponizej
  3.  
  4. $year = 2006; 
  5. $month = 8; 
  6. $day = 23; 
  7. $hour = 15; 
  8. $minute = 00; 
  9.  
  10. /* Tworzenie znacznika */ 
  11. $znacznik = mktime ( $hour, $minute, 0, $month, $day, $year ); 
  12. echo $znacznik.'<br>'; 
  13.  
  14. /* Tworzenie daty */ 
  15. $date= date("d-m-Y, H:i", $znacznik); 
  16. $today=date(d-m-Y, H:i); 
  17. if ($date == $today) { 
  18. zapytanie do bazy które będzie mi zmieniało ten rekord z 0 na 1}
  19.  
  20.  
  21. ?>

czy taki kod zadziała questionmark.gif czy wywoła funkcję automatycznie?? jeśli nie jak to zrobić - może znacie jakiś tutorial
Prosze Was tylko też o to abyście nie pisali ogólnie użyj tego i tego ponieważ jestem na razie bardzo początkujący
z góry dziękuję
dawhol
ten skrypt jest zle sformułowany bo dana $date jest taka sama jak $today =/ wiec zawsze będzie dobra

  1. <?php 
  2. // zapytanie do pobrania danych z bazy i przypisania ich do tablicy
  3.  
  4. $today = date("d-m-Y, H:i");
  5. $data = $tablica['data'];
  6.  
  7. if ($today == $data)
  8. {
  9. // zapytanie zmieniajace w bazie danych co tam chesz
  10. }
  11. else
  12. {
  13. // cos tam innego
  14. };
  15.  
  16. ?>


jezeli format daty jest taki sam jak napisałes to nie różni sie niczym od daty która wywołujesz wiec wystarczy tylko porównac czy jest zgodny jezeli nie to nic sie nie stanie a jezeli format i data zgadza sie z data dzisiejsza to zostanie wprowadzona w bazie danych zmiana.

A co do tego zeby to wszystko wykonywało sie auitomatycznie to musiał być poczytac o AJAX - niewiem bo nei czytałem nic o nim ale slyszałem ze słuzy do takich typu rzeczy.

PS. Najlepiej jak zrezgynował byś z godziny bo tak to nie tylko data musi sie zgadzac ale także i godzina no chyba ze rozbijesz to osobno na date i godzine za pomocą funkcji explode() smile.gif

PS2. Jezeli $znacznik jest niezgodny z obecna data to wstawi ci zamiast niego obecna date co spowoduje ze $today jak juz wczesniej mówiłem zewsze bedzie równe dacie z bazy.
srwsio
zrobiłem to tak używając mktime()
ale jak zrobić aby skrypt włączał się np co 10 min i sprawdzał czy został ten warunek spełniony lub właczył się raz tylko wtedy gdy został spełniony warunek
mam crona więc sobei moge ustawic to w zadaniach ale chciałbym udostępnić skrypt kilku innym osobom a one nie maja takiego czegoś


  1. <?php
  2. function sprawdzdate () {
  3.  global $prefix, $db, $admin_file;
  4.  
  5.  $sprawdz=$db->sql_fetchrow($db->sql_query("SELECT dzien, miesiac, rok, godzina, minuta from " . $prefix . "_typer_kolejki where otwarte=0"));
  6. $dzien=$row['dzien'];
  7. $miesiac=$row['miesiac'];
  8. $rok=$row['rok'];
  9. $godzina=$row['godzina'];
  10. $minuta=$row['minuta'];
  11.  
  12.  /* Tworzenie daty z bazy w formacie unixowym */ 
  13.  $czaszamkniecia= mktime ( $godzina, $minuta, 0, $miesiac, $dzien, $rok );
  14.  /* Tworzenie daty dzisiejszej w formacie unixowym */ 
  15.  $dzisiaj=mktime (date("H"),date("i"),0,date("m"),date("d"),date("Y"));
  16. /* porównanie */ 
  17.  if ($czaszamkniecia == $dzisiaj) 
  18.  { $db->sql_query("UPDATE ".$prefix . "_typer_kolejki SET `otwarte`='1' WHERE otwarte=0");
  19.  }
  20.  Header('Location: admin.php?op=sezon'); 
  21. }
  22. ?>

czy teraz jest to bardziej poprawne??
dawhol
1) W zapytaniu SELECT jak bierzesz wszystko z tabeli to prosciej uzyc * zamiast wszystko wypisywac
2) Po co komplkujesz ta date a pozatym jak masz ja w bazie jako jedna komórka to nei morzesz tego tak od se rozbic na godzine dzien itd. .. musisz to zrobic z pomocą jakiejsc funkcji np explode()
3) Już mówiłem, że jeżeli ma ci to sie robic automatycznie bez otwierania przez ciebie przeglądarki to poczytaj o AJAXie na forum jest na ten temat troche.
srwsio
Cytat(dawhol @ 22.08.2006, 10:56 ) *
1) W zapytaniu SELECT jak bierzesz wszystko z tabeli to prosciej uzyc * zamiast wszystko wypisywac
2) Po co komplkujesz ta date a pozatym jak masz ja w bazie jako jedna komórka to nei morzesz tego tak od se rozbic na godzine dzien itd. .. musisz to zrobic z pomocą jakiejsc funkcji np explode()
3) Już mówiłem, że jeżeli ma ci to sie robic automatycznie bez otwierania przez ciebie przeglądarki to poczytaj o AJAXie na forum jest na ten temat troche.

odp 1
wybieram tylko niektóre dane tj tylko te od daty
odp 2
własnie nie mam jako 1 komórke tylko jako kilka
odp 3
wiem że jest własnie o tym czytałem lecz jeśli chodzi o java script niestetyy nie mam pojęcia o tym w ogóle oprócz kilku najprostszych definicji jak onmauseover itp.
Jeśli moge prosic niech ktos poda linka do jakiegoś tutka , jakiegoś wzoru jak odświerzyc jedną funkcję za pomoca AJAX-a
pozdrawiam
dawhol
Cytat(srwsio @ 22.08.2006, 14:34 ) *
odp 1
wybieram tylko niektóre dane tj tylko te od daty
odp 2
własnie nie mam jako 1 komórke tylko jako kilka


Mój błąd za bardzo sie spieszyłem i nie zwróciłem do konca uwagii =)
Zdarza sie a co do tutka to niestety ja ci nie podam bo nieznam zadnego dobrego co do AJAXa
UNK
Jako iż nospor zablokował tamten temat kiedy w nim pisałem winksmiley.jpg umieszczam to tutaj;)

Było już to opisane window.setTimeout("{funkcja}", {XXX})

Robisz funkcje np
functino func()
{
/* tu treść
a na końcu */
window.setTimeout("func90", 1000);
}

Jeśli korzystasz z biblioteki prototype to: Ajax.PeriodicalUpdater (poczytaj http://blog.elksoft.pl/wp-content/prototyp...ml#Ajax.Updater to).
Nie pamiętam jak się to miało do advAJAX a teraz stronka padła, a przynajmniej u mnie sie nie ładuje.
srwsio
oka - ale jak użyje js to zadziała tylko wtedy gdy ktoś odwiedzi moją stronę, ale ja chcę zrobić właśnie poprzez ajaxa tylko w tym rzecz, że w googlach znalazło tylko 4 wyniki z wyszukiwanym PeriodicalUpdater i żaden nie jest tutkiem
jeśli ktoś mi mógł napisac tak mniej więcej co i jak trzeba zrobić, bo jak pisałem w poprzednim poście na js i ajaxie się znam jak na pieczeniu bułek czyli smile.gif
UNK
Hmm, sam próbowałem użyć PeriodicalUpdater ale coś mi nie wychodziło, prototype dopiero poznaję więc musiał by się ktoś wypowiedzieć na ten temat kto ją zna lepiej.

  1. </head>
  2.  
  3. <body onload='func();'>
  4. function func()
  5. {
  6. /* tutaj treśc ajaxa, to co ma wykonać */
  7. window.setTimeout("func90", 1000);
  8. }


Pisałeś że AJAXa też nie potrafisz.

O tym powinno być coś w dziale Forum: XML AJAX

  1. advAJAX.get({url: url,
  2. onSuccess : function(obj) { document.getElementById('div').innerHTML = obj.responseText; },
  3. onError : function(obj) { document.getElementById('div').innerHTML = 'Błąd wykonania AJAXa'; }
  4. })


gdzie url to jest strona do której ma odnieść się AJAX możesz podać z parametrami, możesz te parametry podać oddzielnie.
Abaddor
Jeśli chcesz aby data była sprawdzana co 10 minut to musisz użyć jakiegoś programu który będzie odpalony na serwerze.
Bo jak wiadomo programy w php i javiescripcie działają tylko wtedy kiedy ktoś wejdzie na stronę.

Musisz więc użyć programu działającego w tle na serwerze. Zapętlić w nieskończoność, i niech co 10 minut robi update w bazie.

Takie jest moje zdanie:D

//nie nabijaj postów odpisując na tematy sprzed kilku lat ! Zamykam.
//Spawnm
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.