Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Dodawanie pkt 1x na 24h
Forum PHP.pl > Forum > Przedszkole
marcinrm5
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. );
erix
Cytat
$time = $_SESSION['time'];

Strzelam, że masz w sesji timestampa, którego porównujesz z datą.
marcinrm5
Miałem zwykłe date ale zmieniłem na timestamp i dalej to samo :/
Nie działa date i timestamp, nie wiem czemu ;/
phpion
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.
marcinrm5
Teraz dodaje cały czas 10pkt bez limitu :/
phpion
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.
marcinrm5
Aktualizuje tym kodem
  1. mysql_query("UPDATE `themostp_prezent`.`uzytkownicy` SET `punkty` = '$suma',`time` = '$now' WHERE `uzytkownicy`.`id` =".$user['id']."");
phpion
Ale nie aktualizujesz wartości w sesji. Po tym co wkleiłeś daj:
  1. $_SESSION['time'] = date('Y-m-d');
marcinrm5
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 :/
phpion
A czy po zalogowaniu ustawiasz $_SESSION['time'] na podstawie wartości z bazy danych? Pewnie nie.
marcinrm5
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'
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.