Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Jak zrobić dodawanie punktów po zalogowaniu dla zalogowanego
Forum PHP.pl > Forum > Przedszkole
kondziu9516
Tak więc mój poprzedni temat dotyczył pobrania rekordu dla zalogowanego użytkownika o ilości punktów oceny.
Można przejrzeć tu: Temat: MySQLPHPPobranie rekordu dla zalogowanego usera

Kolejne moje pytanie dotyczy jak wstawić automatyczne dodanie np. 5 punktów po zalogowaniu danego uzytkownika aby dodało do bazy dany do pola ocena przy loginie zalogowanego?
I czy jest możliwość aby to dodawało raz na 24 h??

Poniżej dorzucam screen tabeli w bazie danych z tym że data to jest data rejestracji a nie ostatniej wizyty:



A oto panel zalogowanego i pobieranie oceny z bazy:

  1. <?php
  2. mysql_connect ("xxx", "xxx", "xxx"); //Łączysz Się z Bazą
  3. mysql_query ("SET NAMES 'utf8' COLLATE 'utf8_polish_ci'"); //Wybierasz Bazę
  4. /* zapytanie do konkretnej tabeli */
  5.  
  6. $nick = $_SESSION['login'];
  7. $wynik = mysql_query("SELECT login, ocena FROM uzytkownik WHERE login='$nick'") or die('Błąd zapytania');
  8.  
  9. if(mysql_num_rows($wynik) > 0) {
  10. echo ' <div class="subdiv2">
  11. <p class="top">&nbsp;</p>
  12. <h2 >Strefa Klienta</h2>';
  13.  
  14. if($r = mysql_fetch_assoc($wynik)) {
  15.  
  16. echo '<p align="right"><font size="3" color="red"><center>Zalogowany jako:<font size="3" color="black"> '.$nick.'</font> </font></b><br><br></p align></center>
  17. <font size="2" color="black" style="margin-left:30px;"><b>Ocena konta:</b><font size="2" color="green"><b> '.$r['ocena'].' %</b> <img src="images/pyt.png" title="Ocena rejestracji i zamówień przez ekipe.
  18. 10% uzyskuje się zaraz po prawidłowej rejestracji.
  19. Reszta % zostaje przyznana z upływem czasu."></font> </font></b><br><br>
  20. <center></u> <a href="user/logowanie.php?wylogowanie=tak"><font size="3" color="black"><b>Wyloguj</b></font></a><br><br>
  21. <a href="index.php?s=zmiana"><font size="2" color="blue"><b>Zmień dane</font></a><br><br>
  22. <a href="user/status/"><font size="2" color="orange"><b>Sprawdź status zlecenia</font></a><br></center>
  23. <p class="bot"></p>
  24.  
  25. </div>';
  26. }
  27. }
  28.  
  29.  
  30. ?>


Jak takie coś zrobić?
Jaki skrypt?
UWAGA ! Za pomoc nagradzam !
17misiek09
stwórz komórkę w tabeli ostatnia wizyta,przy logowaniu dodaj do bazy datę i godzinę ostatniej wizyty.

przy logowaniu przed dodaniem ostatniej wizyty sprawdzaj czy minęło 24 godziny.

jeśli tak, to dodaj kolejne punkty i zaloguj ,jeśli nie to zwykle zaloguj.

bez kompa to tylko słowami mogłem opisać hehe ;-)
Lombi
Nie wiem czy to najlepsze rozwiązanie, ale nie ma czasu się nad tym zastanawiać.
Dodaj w bazie po kolumnie ocena jeszcze jedną np data_upgradu_oceny, żarcik oczywiście, jakąś lepszą wymyśl smile.gif Ja pozostanę na tej. I dalej:
  1. $wynik = mysql_query("SELECT login, ocena, data_upgradu_oceny FROM uzytkownik WHERE login='$nick'") or die('Błąd zapytania');
  2. if(mysql_num_rows($wynik)>0)
  3. {
  4. echo '<div class="subdiv2">
  5. <p class="top"> </p>
  6. <h2 >Strefa Klienta</h2>';
  7. if($r=mysql_fetch_assoc($wynik))
  8. {
  9. $data=date('Ymd');
  10. if($r['data_upgradu_oceny']<$date)
  11. {
  12. $ocena=$r['ocena']+5;
  13. mysql_query("UPDATE uzytkownik SET ocena='$ocena', data_upgradu_oceny='$date' WHERE login='$nick'");
  14. // itd...


Ogólny zarys działania. Można dokładnie pobierać czas ostatniego update oceny i sprawdzać czy minęły od tamtej chwili 24 godziny. W zależności czy to ma być raz na 24h czy co 24h.

//EDIT: misiek podszedł do tematu podobnie smile.gif
kondziu9516
Zrobiłem to tak i nie wiem czy dobrze.
  1. <?php
  2. mysql_connect ("xxx", "xxx", "xxx"); //Łączysz Się z Bazą
  3. mysql_query ("SET NAMES 'utf8' COLLATE 'utf8_polish_ci'"); //Wybierasz Bazę
  4. /* zapytanie do konkretnej tabeli */
  5.  
  6. $nick = $_SESSION['login'];
  7. $wynik = mysql_query("SELECT login, ocena, ostatnielogowanie FROM uzytkownik WHERE login='$nick'") or die('Błąd zapytania');
  8. if(mysql_num_rows($wynik)>0)
  9. {
  10. echo '<div class="subdiv2">
  11. <p class="top"> </p>
  12. <h2 >Strefa Klienta</h2>';
  13. if($r=mysql_fetch_assoc($wynik))
  14. {
  15. $data=date('Ymd');
  16. if($r['ostatnielogowanie']>$date)
  17. {
  18. $ocena=$r['ocena']+10;
  19. mysql_query("UPDATE uzytkownik SET ocena='$ocena' AND ostatnielogowanie='$date' WHERE login='$nick'"); {
  20.  
  21. echo '<p align="right"><font size="3" color="red"><center>Zalogowany jako:<font size="3" color="black"> '.$nick.'</font> </font></b><br><br></p align></center>
  22. <font size="2" color="black" style="margin-left:30px;"><b>Ocena konta:</b><font size="2" color="green"><b> '.$r['ocena'].' %</b> <img src="images/pyt.png" title="Ocena rejestracji i zamówień przez ekipe.
  23. 10% uzyskuje się zaraz po prawidłowej rejestracji.
  24. Reszta % zostaje przyznana z upływem czasu."></font> </font></b><br><br>
  25. <center></u> <a href="user/logowanie.php?wylogowanie=tak"><font size="3" color="black"><b>Wyloguj</b></font></a><br><br>
  26. <a href="index.php?s=zmiana"><font size="2" color="blue"><b>Zmień dane</font></a><br><br>
  27. <a href="user/status/"><font size="2" color="orange"><b>Sprawdź status zlecenia</font></a><br></center>
  28. <p class="bot"></p>
  29.  
  30. </div>';
  31. }
  32. }
  33. }
  34. }
  35.  
  36.  
  37.  
  38. ?>


A jak zapisać datę do pola ostatnielogowanie?
I coś chyba nie działa poprawnie bo jak miałem w bazie np. 100 pkt to po tym zmienia mi na 1

AHA oczywiście utworzyłem w bazie danych zaraz po ocena pole ostatnie logowanie.
Tak dla rozwikłania wątpliwości. !
Lombi
Wtedy będzie sprawdzał czy od ostatniego logowania minęło 24h, a Ty chyba chcesz od ostatniej zmiany oceny. Jeśli zaloguje się teraz, a potem przez miesiąc w odstępach 10 godzinnych to czy doda do oceny punkty? Warunek że minęło 24h (jeśli sprawdzamy czy co 24h) od ostatniego logowania zostanie spełniony?

Tak na marginesie poczytaj podstaw, potem spójrz na swój kod i zobaczysz że troszkę nie tak to jest napisane.
Dojdź do tego co i jak ma być poukładane to na pewno pomożemy dalej. W tym momencie chcesz gotowca.
kondziu9516
dokładnie chodzi mi o to od daty ostatniej zmiany punktów czy minęło 24h
Croos22
Musisz dodać datę ostatniego logowania do bazy i wtedy za pomoca instrukcji warunkowych sprawdzasz czy minął czas.
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.