Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Kiedy wygaśnie
kayy
post 5.12.2008, 12:35:47
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!


--------------------

Dziękuję wszystkim za pomoc w PHP :)
Go to the top of the page
+Quote Post
ddiceman
post 5.12.2008, 13:07:59
Post #2





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

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


a )
  1. INSERT INTO `time` (id, username, time, timeto) VALUES (NULL, "'.$user.'", DATE_FORMAT(CURRENT_DATE(), '%d%m%Y'), DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL 60 DAY), '%d%m%Y'));


b ) albo cron albo panel sterowania >> zaplanowane zadania
c ) co chcesz sprawdzac? zawsze lepiej sprawdzac po wartosci zaindeksowanej (zapewne tu ID), ale jesli chodzi o kasowanie, to wystaczy codziennie o polnocy odpalasz zapytanie
  1. DELETE FROM `time` WHERE STR_TO_DATE(timeto, '%d%m%Y) < CURRENT_DATE();


Ten post edytował ddiceman 5.12.2008, 13:14:32
Go to the top of the page
+Quote Post
kayy
post 5.12.2008, 13:14:23
Post #3





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

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


Cytat(ddiceman @ 5.12.2008, 13:07:59 ) *
a )
  1. INSERT INTO `time` (id, username, time, timeto) VALUES (NULL, "'.$user.'", DATE_FORMAT(CURRENT_DATE(), '%d%m%Y'), DATE_FORMAT(DATE_ADD(CURRENT_DATE(), INTERVAL 60 DAY), '%d%m%Y'));


b ) albo cron albo panel sterowania >> zaplanowane zadania
c ) co chcesz sprawdzac? zawsze lepiej sprawdzac po wartosci zaindeksowanej (zapewne tu ID), ale jesli chodzi o kasowanie, to wystaczy codziennie o polnocy odpalasz zapytanie
  1. DELETE FROM `time` WHERE STR_TO_DATE(timeto, '%d%m%Y) > CURRENT_DATE();

a)śmiga, dzięki! (w prawdzie bez zer uzupełniających, ale w c) dałes mi jak usunąc to bez zer i nie bedą mi one już potrzebne)
cool.gif
Mam konto na; http://www.unl.pl/index.php?menu=terms, jak tam zainstalować/zrobić jakoś corna?

Ten post edytował kayy 5.12.2008, 13:23:22


--------------------

Dziękuję wszystkim za pomoc w PHP :)
Go to the top of the page
+Quote Post
ddiceman
post 5.12.2008, 13:20:45
Post #4





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

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


rozprostuj sobie zapytanie, a bedzie Ci latwiej je zrozumiec:
Kod
INSERT INTO `time` (
    id,
    username,
    time,
    timeto
) VALUES (
    NULL,
    "'.$user.'",
    DATE_FORMAT(
        CURRENT_DATE(),
        '%d%m%Y'
    ),
    DATE_FORMAT(
        DATE_ADD(
            CURRENT_DATE(),
            INTERVAL 60 DAY
        ),
       '%d%m%Y'
    )
);

= wstaw domyslne ID, nazwe usera ($user), aktualna date w formacie %d%m%Y (ddmmyyyy), aktualna date powiekszona o 60 dni (interval 60 day) w formacie %d%m%Y (ddmmyyyy)

Ten post edytował ddiceman 5.12.2008, 13:21:16
Go to the top of the page
+Quote Post
kayy
post 5.12.2008, 13:24:44
Post #5





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

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


Ok, to już śmiga, ale teraz jak zainstalować/zrobić jakoś zaplanowane zadania/ coś innego Corna. Mam hosting na http://www.unl.pl/index.php.


--------------------

Dziękuję wszystkim za pomoc w PHP :)
Go to the top of the page
+Quote Post
ddiceman
post 5.12.2008, 13:29:52
Post #6





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 5.12.2008, 14:06:47
Post #7





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. // // haha.gif
  18. $zapy = "UPDATE `aktualizacja` SET `data` = '$teraz'";
  19. $og = mysql_query($zapy);
  20.  
  21. }
  22.  
  23.  
  24. }
  25. ?>


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 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


--------------------

Dziękuję wszystkim za pomoc w PHP :)
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.06.2025 - 10:11