Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Kiedy wygaśnie
kayy
post
Post #1





Grupa: Zarejestrowani
Postów: 112
Pomógł: 1
Dołączył: 3.08.2008

Ostrzeżenie: (0%)
-----


Witam,

chciałbym napisać taki skrypt:



Mam tabele MYSQL `time`, mam w niej 4 pola; id, username, time, timeto. Chciałbym abym przy rejestracji dodał do niej coś w tym stylu;

'',zdzisiek,$czas,$czas2

Przy tym $czas = data teraz bez kropek, czyli np. 05112008 a $czas2 = $czas + 60 dni... I potem codziennie o jakiejś godzinie (najlepiej o północy, bo jest mało serwer obciążony) sprawdzał komu się skończył czas i go wyrzucał z tej tabeli...

Narazie mnie to przerasta i nie wiem jak zrobić ;

a)dodanie do daty 60 dni (z uwzględnieniem miesięcy 31,30 lub lutego),

b)codzinne sprawdzanie tabeli,

c) nie wiem czy lepiej sprawdzac po username czy po ID usera (mam id w innej tabeli)



Jeżeli ktoś by był tak miły i pomógł był bym bardzo wdzięczny!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ddiceman
post
Post #2





Grupa: Zarejestrowani
Postów: 326
Pomógł: 121
Dołączył: 23.07.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


wg tego zablokowano Ci tam crona.
w takim przypadku pozostaje Ci zapisanie gdzies (baza danych, plik) informacji o dacie przeprowadzenia ostatniej aktualizacji i przy odslonie strony sprawdzanie, czy aktualna data >= data aktualizacji + 24h.
Go to the top of the page
+Quote Post
kayy
post
Post #3





Grupa: Zarejestrowani
Postów: 112
Pomógł: 1
Dołączył: 3.08.2008

Ostrzeżenie: (0%)
-----


Cytat(ddiceman @ 5.12.2008, 13:29:52 ) *
wg tego zablokowano Ci tam crona.
w takim przypadku pozostaje Ci zapisanie gdzies (baza danych, plik) informacji o dacie przeprowadzenia ostatniej aktualizacji i przy odslonie strony sprawdzanie, czy aktualna data >= data aktualizacji + 24h.


Ok, zrobiłem to tak:


mam includa umieszczonego w każdym pliku strony (wlasciwie to w plikach layouta, ktore sa umieszczone w kazdym pliku strony) i za kazdym razem odpala się coś takiego;

  1. <?php
  2. require "baza.php";
  3.  
  4. $teraz = date(Y-m-d);
  5. $terazt = explode("-",$teraz);
  6.  
  7. $x="SELECT * FROM `aktualizacja`";
  8. $c = mysql_query($x);
  9. while ($aktut = mysql_fetch_array($c))
  10. {
  11. $akt = $aktut[1];
  12. $aktu = explode("-",$akt);
  13. if ($terazt[2] > $aktu[2])
  14. {
  15. $zpt = "DELETE FROM `time` WHERE STR_TO_DATE(timeto, '%d%m%Y) < CURRENT_DATE();";
  16. $kn = mysql_query($zpt);
  17. $zapy = "UPDATE `aktualizacja` SET `data` = '$teraz'";
  18. $og = mysql_query($zapy);
  19.  
  20. }
  21.  
  22.  
  23. }
  24. ?>


Tabela aktualizacja ma 2 pola; jedno id drugie data, typu data. Ktore przyjmuje date w formacie yyyy-mm-dd.

Jednak mimo to, że data w aktualizacji już upłyneła, a userowi w tabeli `time` skonczyl sie czas, skrypt nic nie robi... Wtf?

#EDIT
JUŻ NAPRAWIŁEM! Chodziło o to, że przy explode trzeba było dać _ a nie - bo próbowało odjąć od siebie date (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) , ale teraz, ddiceman twoje zapytanie nie działa, ponieważ mam time od 3 grudnia do 4 grudnia i mnie nie wywala z tabeli `time`...
  1. DELETE FROM `time` WHERE STR_TO_DATE(timeto, '%d%m%Y) < CURRENT_DATE();

Chodzi o to zapytanie ;p

Ten post edytował kayy 5.12.2008, 14:45:19
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 13:18