Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]punkty
Forum PHP.pl > Forum > Przedszkole
krystian23000
Witam ! baaasmiley.gif

Od paru tygodni robię stronkę www;)
Poradziłem sobie z rejestracjami , logowaniem itd...
Zrobiłem na stronie takie zakładki jak ''zadania'' i ''ankiety''
Chciałbym aby po np udzieleniu dobrej odp przez uzytkownika dodawalo mu 20pkt....
I np tez za zalogowanie sie raz na 24h 10pkt..
Chyba wiecie o co mi chodzi..
Męcze sie z tym ..bawiłem sie tym alphauserpoints ale nie wychodzi ohno-smiley.gif
Można pisac na gg:8511388
Licze na pomoc!
kaktus283
Nie wiem w czym problem, chcesz po prostu dodawać użytkownikom punkty (?).
W takim razie stwórz sobie w bazie danych (user) pole `points` i zapisuj wszystkie punkty użytkownika, również możesz operować tam na nich czyli jeżeli ktoś się zaloguje no to doda mu te 10 punktów do aktualnej liczby ...

Jeżeli nie chodziło Ci o to, to rozwiń swoją wypowiedź : )
Croos22
A co w tym trudnego?

Przy poprawnym wypełnieniu zadań zrób update i dodaj punkty, a co do rozdawania punktów co 24h możesz sprawdzać przy logowaniu instrukcją warunkową czy minął już czas i też robisz update.

http://webmade.org/kursy-online/aktualizac...-kurs-mysql.php
http://pl.wikibooks.org/wiki/PHP/Instrukcja_if
krystian23000
Chodzi o to zeby automatycznie odrazu dodawało punkty np za logowanie...
i w zakladce profil bylo napisane np:


,,
Zalogowany jako xxxxx
Punktów : xxx ''
i zeby samo sie zmieniało wink.gif


Ps.Jestem niekumatym człowiekiem:P
Hpsi
Cytat
Ps.Jestem niekumatym człowiekiem:P

To przestań programować.
Nie dostaniesz (Raczej) gotowego rozwiązania.


W tabeli użytkownicy tworzysz sobie dodatkową kolumnę np nazwa "logowanie", zapiszujesz w niej czas logowania
kolumne tą edytujesz tylko i wylacznie na czas aktualny w przypadku gdy czas który tam podasz rozni się od aktualnego o więcej niż 24h, w tym momencie także dodajesz użytkownikowi punkt.

W sumie powtorzlem tylko i wylacznie to co poprzednicy napisali, ale mam nadzieje , że to Tobie rozjasni co i jak
krystian23000
Ok...
Wiecie jak zrobic aby w profilu bylo np:
Zalogowany jako xxxxx
Punktów : xxxx
I zeby sie zmieniały(punkty) zgodnie z bazą ..automatycznie
Hpsi
http://pl2.php.net/manual/pl/book.session.php ?
krystian23000
Tą strone juz dzisiaj 10 razy widziałem.. ohno-smiley.gif
markonix
Po co się zabierasz do czegoś o czym nie masz bladego pojęcia?
W ogóle znasz jakieś podstawy PHP i baz danych (mysql)?
krystian23000
omg tak....
ale na tym sie zaciąłem..
Kazdy jakos zaczyna..
Nie mów ze byles idealny od początku w tym..
markonix
Konto założyłem w 2008, a dopiero rok po tym postanowiłem dzielić się moimi "problemami" na forum więc się do mnie nie przyrównuj.

Jak masz jakieś pojęcie to pokaż co już napisałeś w związku z tymi punktami.
Hpsi
nie chodzi o to, dajemy gotowe informacje, trzeba przeczytac i pomyslec chiwle, tyle
pedro84
Zwykłe pole integer w bazie? Odpowiem: nie, nie znasz podstaw...
krystian23000
Zrobiłem kody i sprawdźcie co źle :
a ) zrobiłem ankiete i za odp napisałem
$punkty_zdobyte = 60 punktów
Kod
mysql_query("UPDATE uzytkownicy SET punkty = punkty +$punkty_zdobyte  WHERE id_user = '$id'")

B ) za logowanie:
Kod
$time = time () //czas bierzący
if (ostanie_logowanie > $time ) {mysql_query("UPDATE uzytkownicy SET ostatnie_logowanie = ".$time." , punkty = punkty + 20 WHERE id_user = '$id'")



c) i zeby wyswietlalo info o uzytkowniku po zalogowaniu to:

Kod
$wynik_pokaz = mysql_query("SELECT * FROM uzytkownicy WHERE id_user='$id'");

echo "Zalogowany jako". $wynik_pokaz['nick'];
echo " Punktów". $wynik_pokaz['punkty'];



W tych trzech przypadkach nie dodaje mi pkt ani nie wyswietla info u userze po zalogowaniu...do bazy..Nie wiem czy dobrze je w ogóle wstawiam..moze wy to ogarnicie.
Prosze o pomoc
kamilos809
oj kolego... takie podstawy to się wiedziało po chwili...
  1. $zapytanie="SELECT * FROM uzytkownicy WHERE id_user='$id'";
  2. $wynik=mysql_query($zapytanie);
  3. while($r = mysql_fetch_array($wynik))
  4. {
  5. echo("Zalogowany jako ".$r['nick']."");
  6. echo(" Punktów ".$r['punkty']."");
  7. }
  8.  

Jak się nie mylę naniesione poprawki powinny pomóc.
CuteOne
kamilos troszkę błędnie ponieważ pobiera tylko jeden wiersz (warunek id_user = '$id' o tym mówi) tak więc:

  1.  
  2. //o sesjach już chyba masz jakieś pojęcie skoro napisałeś logowanie
  3. $id = $_SESSION['user_id'];
  4.  
  5. $query = mysql_query("SELECT * FROM uzytkownicy WHERE id_user='$id'") or die(mysql_error());
  6. $row = mysql_fetch_array($query);
  7.  
  8. echo 'Zalogowano jako '.$row['nick'];
krystian23000
Ok już wszystko dopełniłem ..pięknie gra - dostaje punkty za logowanie i zadania..
Ale najgorsze ze punkty przydziela za kazde logowanie a ja chciałbym raz na 24h..tak samo z zadaniem.
Próbowałem duzo rzeczy ale nie wychodzi..
artekp999
zapisuj do bazy aktualna date podczas logowania i pozniej zrob warunek porownujac date z bazy z aktualna jesli jest inna to wtedy zapisuj pkt


krystian23000
Mam coś takiego do logowania:

  1. if ( $row['last_login'] < (time() - 3600*24) )
  2. {
  3. $punkty = $row['punkty'] + 10;
  4. mysql_query("UPDATE uzytkownicy SET punkty = '$punkty' WHERE id = '$_SESSION['id']' LIMIT 1");
  5. }


A to do zadan:
  1. $qr_zadanie = mysql_fetch_array(mysql_query("SELECT * FROM zadania WHERE id = '$_SESSION['id']' ORDER BY time DESC LIMIT 1"));
  2. if($qr_zadanie['time'] < (time()-3600*24))
  3. {
  4. //Następne zadanie
  5. } else {
  6. //Nie minęły jeszcze 24h!
  7. }



Ale nie pyka
Ulysess
...

a debugować w taki sposób:
  1. echo "UPDATE uzytkownicy SET punkty = '$punkty' WHERE id = '$_SESSION['id']' LIMIT 1";

questionmark.gif nie sądzę.. więcej czasu zajmuje Tobie tutaj napisanie i czekanie na odpowiedzi niż sprawdzenie takich podstaw......
Poprawnie 1 zapytanie powinno wyglądać tak:
  1. "UPDATE uzytkownicy SET punkty = ".$punkty." WHERE id = ".$_SESSION['id']." LIMIT 1"

oczywiście można jeszcze łatwiej napisać:
  1. echo "UPDATE `uzytkownicy` SET `punkty` = `punkty`+10 WHERE `id` = ".$_SESSION['id']." LIMIT 1";


w zadaniu ten sam problem.. używasz na początku " to i w środku używaj..
krystian23000
Ulysess :
Tak czy siak nawet jak poprawiłem to zadanie moge wykonywac dowoli i zalicza punkty..
A mi chodzi o blokade ze raz dziennie..
peter13135
zapisuj datę (najlepiej znacznik unksowy np. time() ) i przed update sprawdzaj wcześniej, czy dzisisaj user już miał dodane punkty, czy nie. Albo w update daj WHERE data<dzisiaj
krystian23000
A tak jaśniej?
Jestem amatorem thumbsdownsmileyanim.gif
CuteOne
Skoro jesteś amatorem to zacznij czytać poradniki... przedmówca dał ci rozwiązanie teraz ty powinieneś poszukać po google o co mu chodzi a nie czekać na kolejnego gotowca

krystian23000
Co tu jest źle?:
  1. $qr_zadanie = mysql_fetch_array(mysql_query("SELECT * FROM zadania_users WHERE user_id = '".$_SESSION['id']."' ORDER BY time DESC LIMIT 1"));
  2. if($qr_zadanie['time'] < (time()-3600*24))
  3. {
  4. if('1456' == $odpowiedz1)
  5. {
  6. $punkty_zdobyte = 30;
  7. echo"<big><big><font color='white'>Dobrze ! Otrzymujesz ".$punkty_zdobyte." punktów ! </font></big></big> ";
  8. $sql = "UPDATE `uzytkownicy` SET `punkty` = `punkty` + '".$punkty_zdobyte."' WHERE id = '".$_SESSION['id']."' ";
  9. mysql_query($sql);
  10. }
  11. } else {
  12. //Nie minęły jeszcze 24h!
  13. }


To jest kod zadania....
za dobre zadanie dodaje punkty ..wszystko git ale nie działa to że mozna robic zadanie co chwile a nie raz dziennie..
Co jest źle? Tabele i pola w bazie zrobione ohno-smiley.gif
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.