Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Dodawanie pkt 1x na 24h
marcinrm5
post 19.07.2011, 09:23:50
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 3.07.2010

Ostrzeżenie: (10%)
X----


Więc mam
  1. $time = $_SESSION['time'];

Ma pokazać datę ostatniego logowania z przyznaniem pkt.
  1. $now = date("Y-m-d");


I jeśli $time = $now to by nie dodawało nic tylko komunikat Nie minełyu jeszcze 24h!
Jeśli $time < $now to wtedy by był ten kod:
  1. $suma = $user['punkty'] + $log;
  2. mysql_query("UPDATE `themostp_prezent`.`uzytkownicy` SET `punkty` = '$suma',`time` = '$now' WHERE `uzytkownicy`.`id` =".$user['id']."");
  3. echo "Dodano 10 denarów za poprawne logowanie dzisiaj! Następne pkt za logowanie możesz zdobyć za 24h!";


A to nie działa :/
  1. if ( $time = $now ) {
  2. echo "Nie mineły jeszcze 24h więc nie będzie pkt ^^";
  3. }
  4. else {
  5. $suma = $user['punkty'] + $log;
  6. mysql_query("UPDATE `themostp_prezent`.`uzytkownicy` SET `punkty` = '$suma',`time` = '$now' WHERE `uzytkownicy`.`id` =".$user['id']."");
  7. echo "Dodano 10 denarów za poprawne logowanie dzisiaj! Następne pkt za logowanie możesz zdobyć za 24h!";
  8.  
  9. }


Tabelka w mysql:
  1. CREATE TABLE `uzytkownicy` (
  2. `id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
  3. `nick` VARCHAR( 32 ) NOT NULL ,
  4. `haslo` VARCHAR( 40 ) NOT NULL ,
  5. `email` VARCHAR( 40 ) NOT NULL ,
  6. `ip` VARCHAR( 20 ) NOT NULL ,
  7. `time` DATE NOT NULL ,
  8. `data` DATE NOT NULL ,
  9. `konto` VARCHAR( 30 ) NOT NULL ,
  10. PRIMARY KEY ( `id` )
  11. );


Ten post edytował marcinrm5 19.07.2011, 09:24:43
Go to the top of the page
+Quote Post
erix
post 19.07.2011, 09:34:05
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
$time = $_SESSION['time'];

Strzelam, że masz w sesji timestampa, którego porównujesz z datą.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
marcinrm5
post 19.07.2011, 09:46:04
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 3.07.2010

Ostrzeżenie: (10%)
X----


Miałem zwykłe date ale zmieniłem na timestamp i dalej to samo :/
Nie działa date i timestamp, nie wiem czemu ;/

Ten post edytował marcinrm5 19.07.2011, 09:47:05
Go to the top of the page
+Quote Post
phpion
post 19.07.2011, 09:50:11
Post #4





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




Nie wnikałem w kod, ale od razu rzuciło mi się w oczy:
  1. if ( $time = $now ) {

Nie = tylko ==. Pierwsze to operator przypisania, a nie porównania.
Go to the top of the page
+Quote Post
marcinrm5
post 19.07.2011, 09:55:43
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 3.07.2010

Ostrzeżenie: (10%)
X----


Teraz dodaje cały czas 10pkt bez limitu :/
Go to the top of the page
+Quote Post
phpion
post 19.07.2011, 09:59:15
Post #6





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




A czy po dodaniu punktów aktualizujesz $_SESSION['time'] aktualnym czasem? Wydaje mi się, że nie bo przynajmniej w kodzie tego nie ma. Dlatego zawsze masz tam "starą" datę i dodawanie punktów odbywa się non stop.
Go to the top of the page
+Quote Post
marcinrm5
post 19.07.2011, 10:02:28
Post #7





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 3.07.2010

Ostrzeżenie: (10%)
X----


Aktualizuje tym kodem
  1. mysql_query("UPDATE `themostp_prezent`.`uzytkownicy` SET `punkty` = '$suma',`time` = '$now' WHERE `uzytkownicy`.`id` =".$user['id']."");
Go to the top of the page
+Quote Post
phpion
post 19.07.2011, 10:11:11
Post #8





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




Ale nie aktualizujesz wartości w sesji. Po tym co wkleiłeś daj:
  1. $_SESSION['time'] = date('Y-m-d');
Go to the top of the page
+Quote Post
marcinrm5
post 19.07.2011, 10:15:36
Post #9





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 3.07.2010

Ostrzeżenie: (10%)
X----


Działa, dzięki wielkie biggrin.gif Oczywiście daje pomógł smile.gif
Ale odkryłem jeden problem. Za każdym następnym logowaniem pkt na nowo się dodaje :/

Ten post edytował marcinrm5 19.07.2011, 10:17:11
Go to the top of the page
+Quote Post
phpion
post 19.07.2011, 10:19:20
Post #10





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




A czy po zalogowaniu ustawiasz $_SESSION['time'] na podstawie wartości z bazy danych? Pewnie nie.
Go to the top of the page
+Quote Post
marcinrm5
post 19.07.2011, 11:02:51
Post #11





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 3.07.2010

Ostrzeżenie: (10%)
X----


Cytat(phpion @ 19.07.2011, 11:19:20 ) *
A czy po zalogowaniu ustawiasz $_SESSION['time'] na podstawie wartości z bazy danych? Pewnie nie.



Jak mam to ustawić? Na podstawie aktualnej daty?
Jak przyznaje pkt to tam jest
  1. `time` = '$now'


Ten post edytował marcinrm5 19.07.2011, 11:03:35
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.08.2025 - 11:46