Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Odliczanie czasu do wygaśnięcia Premium.
Dimond
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 12.07.2008

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


Witam! Na mojej stronie która niedługo się pojawi zrobiłem system kont Premium. Jest możliwość wykupienia ich przez wysłanie SMSa. W skrypcie jeżeli wpisze poprawny kod sms dodaje mu warunek 1 do pola w MySQL (premium). Na stronie zrobiłem skrypt który pokazuje ile dni pozostało do wygaśnięcia premium (tak że premium jest na ileś tam dni) załóżmy że 30.

Taki oto skrypt:
  1. <?php
  2. $miesiac = $_SESSION['miesiac']; $dzien = $_SESSION['dzien']; $rok = $_SESSION['rok'];
  3. $szkola = mktime(0,0,0,$miesiac,$dzien,$rok) -mktime(date(&#092;"H\"),
  4. date(&#092;"i\"), date(\"s\"), date(\"m\"), date(\"d\"), date(\"Y\"));
  5. ?>


Te $miesiac itp to sa pola w MySQL.
Skrypt który wyświetla podaną ilość czasu do wygaśnięcia:

  1. <?php
  2. echo floor($szkola/(60*60*24))
  3. ?>


No i tak za każdym kupieniem Premium musiał bym ręcznie ustawiać date w MySQL i ręcznie dodawać 30 dni doliczając date itp. Chciałbym zrobić tak aby za każdym wysłaniem smsa i wpisaniem odpowiedniego kodu nie tylko dodawało Premium w MySQL ale i dodawało do tych 3 pól miesiąc itp. 30 dni lecz jeśli to będzie np. 29.02.2008 i jaki tu mam napisać skrypt aby dodało to 30 dni i zmieniło miesiąc 02 na 03 itp.

Również jaka funkcja by była jeżeli ta data by już wystąpiła, aby po upłynięciu tych dni usunęło premium z bazy danych mysql.

Męcze się z tym już tydzień mam nadzieje że ktoś mi pomoże.

Ten post edytował Dimond 12.07.2008, 19:07:53
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
nrm
post
Post #2





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

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


oj kolego, ty to od tzw."od dupy strony robisz". co to za chore kombinacje (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

robisz pole premium [int(11)] gdzie dajesz timestampa. User wysyła SMS to zapisujesz mu timestamp+wykupiony czas. I koniec filozofi, kombinowania, dodawania.
Go to the top of the page
+Quote Post
Dimond
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 12.07.2008

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


No a jak dać mu tego timestampa+ czas? Potem jak zrobić aby ten czas odliczało i wyświetlało na stronie.
Go to the top of the page
+Quote Post
phpion
post
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(Dimond @ 12.07.2008, 20:05:00 ) *
jaki tu mam napisać skrypt aby dodało to 30 dni i zmieniło miesiąc 02 na 03 itp.

Skorzystaj z strtotime" title="Zobacz w manualu PHP" target="_manual.
Go to the top of the page
+Quote Post
nrm
post
Post #5





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

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


no podstawy, podstawy... no dobra, widzę, że zagubiłem się w dziale przedszkole..moja wina...

  1. <?php
  2. $jaki_czas_premium = 7 * 24 * 60 * 60 // 7 dni
  3. $do_kiedy_premium = time() + $jaki_czas_premium
  4.  
  5. //do kiedy luser ma premium?
  6. $do_kiedy = date('d-m-Y h:i', $do_kiedy_preimum);
  7. echo $do_kiedy;
  8. ?>

finito...
Go to the top of the page
+Quote Post
Dimond
post
Post #6





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 12.07.2008

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


Dzięki wielkie normanos prawie problem rozwiązany tylko jeszcze potrzebuje do tego dodać funkcje już kiedy 7 dni minie, aby odebrało to premium userowi.
Go to the top of the page
+Quote Post
kwiateusz
post
Post #7


Admin Techniczny


Grupa: Administratorzy
Postów: 2 072
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




a po co usuwanie? w miejscach gdzie potrzebne premium sprawdzasz czy miesci sie w czasie tego premium i jesli nie badz pole jest puste to znaczy ze juz go nie ma (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nrm
post
Post #8





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

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


jak napisał kwiateusz wyżej: o ile nie masz powodów to nie ma czego usuwać (np. do statsów się mogą dane przydać) bo po co. sprawdzasz banalnie prosto:

1. wyciągasz $do_kiedy_premium dla danego usera
2. porównujesz obecną datę if($teraz > $do_kiedy_premium) => sorry, na drzewo
Go to the top of the page
+Quote Post
Dimond
post
Post #9





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 12.07.2008

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


Cytat(normanos @ 12.07.2008, 20:43:49 ) *
no podstawy, podstawy... no dobra, widzę, że zagubiłem się w dziale przedszkole..moja wina...

  1. <?php
  2. $jaki_czas_premium = 7 * 24 * 60 * 60 // 7 dni
  3. $do_kiedy_premium = time() + $jaki_czas_premium
  4.  
  5. //do kiedy luser ma premium?
  6. $do_kiedy = date('d-m-Y h:i', $do_kiedy_preimum);
  7. echo $do_kiedy;
  8. ?>

finito...

No zrobiłem tak i pokazuje mi taką date: 01-01-1970 01:00 ;/ a powinno dodać te 7 dni do daty aktualnej.
Go to the top of the page
+Quote Post
b4x
post
Post #10





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

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


  1. <?php
  2.  
  3. $czas = time() + (* 24 * 60 * 60); // 7dni (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
  4.  
  5. $do_kiedy = date('d-m-Y h:i', $czas);
  6.  
  7. echo $do_kiedy;
  8.  
  9. ?>


Ten post edytował b4x 13.07.2008, 11:34:54
Go to the top of the page
+Quote Post
sebekzosw
post
Post #11





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


Diamond, zrób to tak:

  1. <?php
  2. $jaki_czas_premium = 7*24*60*60; // 7dni
  3. $do_kiedy_premium = time() + $jaki_czas_premium;
  4.  
  5. echo strftime("%d-%m-%Y %H:%M:%S", $do_kiedy_premium);
  6. ?>


P.S.: To jest do AccMaker-a? Bo jeżeli tak, to mam lepszy skrypt dodawania premium ;-)

Ten post edytował sebekzosw 13.07.2008, 11:32:31
Go to the top of the page
+Quote Post
Dimond
post
Post #12





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 12.07.2008

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


Nie to jest nie do accmarkera ale coś w tym stylu. Chodzi oto że wykupuje premium przez SMS i dodaje mu 30 dni np. do tego premium i wyświetla mu się ile dni zostało albo date wygaśnięcia. Możesz pokazac ten swój skrypt?
Go to the top of the page
+Quote Post
b4x
post
Post #13





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

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


Coś na szybko napisałem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) )


Kod
CREATE TABLE `premium` (
  `id` int(11) NOT NULL auto_increment,
  `user` int(11) NOT NULL,
  `data_zakupu` datetime NOT NULL,
  `okres` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `user` (`user`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin2 AUTO_INCREMENT=1;




  1. <?php
  2. function sprawdz_premium($user) {
  3.  
  4. $dane = mysql_fetch_array(mysql_query('SELECT * FROM `premium` WHERE `user` = "'.$user.'"'));
  5.  
  6. $do_kiedy = time() + ($dane['okres'] * 24 * 60 * 60);
  7.  
  8. $do_kiedy = date('d-m-Y h:i', $do_kiedy);
  9.  
  10.  
  11. if($czas < date('d-m-Y h:i')) {
  12.  
  13. $dostep = false;
  14. } else {
  15.  
  16.  
  17. $dostep = true;
  18. }
  19.  
  20. return $dostep;
  21.  
  22. }
  23. ?>




  1. <?php
  2. $uzytkownik = 1; // czyli jakiego usera chcesz sprawdzić
  3. if(sprawdz_premium($uzytkownik) == TRUE) {
  4.  
  5. echo 'masz dostep'; // dostęp tylko dla osób mających aktywne - ważne PREMIUM.
  6.  
  7. } else {
  8.  
  9. echo 'nie masz'; // dla tych co mają 'przestarzałe' ;)
  10. }
  11. ?>


Ten post edytował b4x 13.07.2008, 12:06:49
Go to the top of the page
+Quote Post
sebekzosw
post
Post #14





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


Ja najpierw sprawdzam, czy premium nie jest czasem aktywne poprzez if(time() > $premium) - jeżeli premium już jest, to dodaje dodatkowe dni, a jeżeli premium się skończyło to do time() dodaje x dni premium

  1. <?php
  2. $premium_uzytkownika = "121415431";
  3. $dlugosc_premium = 7;
  4.  
  5. if(time() > $premium_uzytkownika) {
  6. $koniec_premium = date("d-m-Y H:i", strtotime(date("d-m-Y H:i"))+60*60*24*$dlugosc_premium);
  7. } else {
  8. $koniec_premium = date("d-m-Y H:i", $premium_uzytkownika+60*60*24*$dlugosc_premium);
  9. }
  10.  
  11. //aktualizowanie pola 'premium' tym wynikiem: $koniec_premium
  12. ?>


I aktualizujesz miejsce, gdzie masz datę premium dodając wynik -> $koniec_premium, a $premium_uzytkownika pobierasz z bazy

Ten post edytował sebekzosw 13.07.2008, 12:00:03
Go to the top of the page
+Quote Post
Dimond
post
Post #15





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 12.07.2008

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


W bazie danych mam dwa pola. Jedno mam zwykłe (Donaterank) int(11) i w nim muszą być pojedyńcze cyfry.

0 - Brak Premium.
1 - Premium Medium.
2 - Premium Silver.
3 - Premium Gold.

I własnie w skrypcie muszę mieć tak aby przy wygaśnięciu premium czyli już np. 30 dni mineło to musi UPdate robić na pole Donaterank na 0 czyli brak premium. Również w tym aby ustawiło 0 dni w innym polu.
Go to the top of the page
+Quote Post
sebekzosw
post
Post #16





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


poczytaj o cron
Go to the top of the page
+Quote Post

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: 25.09.2025 - 22:09