Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Liczba klikniec uzytkownikow w kolejnych dniach
Forum PHP.pl > Forum > Przedszkole
marcinw77
Witam

Potrzebuje na mojej stronie wstawic wykres z FusionCharts(ale to nie to jest problemem) ktory bedzie przedstawial ilosc klikniec w linki uzytkownikow przez ostatnie 15 dni.

Moi uzytkownicy(nie mam ich jeszcze, co ulatwia sprawe) klikaja codziennie w platne linki. W kazdy link moga kliknac tylko 1 raz dziennie - o konkretnej porze sa resetowane i mozna klikac znowu.

CODE
$mbs = date("h:i A",$set['next_clearup']);


Jest to strona Paid-To-Click (popularny bux) moze ktos wie z doswiadczenia jak to dziala

Oczywiscie kazdy uzytkownik w bazie ma pola username, ... itp  I jest tez total clicks (wszystkie klikniecia od samej rejestracji).

Domyslam sie ze potrzebuje dodac 15 pol. Problemem jest to jak wprowadzac do bazy ilosc klikniec (przy kazdym kliknieciu sa dodawane do uzytkownika) tak aby w kazdym z tych dni(zgodnie z czasem resetu) byl dodawany do oddzielnego pola.  Drugim problemem jest to, jak zastepowac pozniej te dane kiedy liczba dni przekroczy te 15.



Bylbym bardzo wdzieczny, gdyby ktos pomogl mi w jakis sposob. Nie wiem czy to jakos jasno napisalem i wytlumaczylem.

Pozdrawiam i dziekuje z gory za jakas pomoc.
Eagle
Nie wiem czy dobrze zrozumiałem
Masz w tabeli dane użytkownika + 15 pól. W każdym z tych dodatkowych(15) pól trzymasz ilość kliknięć (dzień pierwszy 5 kliknięć w 1 polu; dzień drugi 15 kliknięć w 2 polu)?
Jeżeli tak to proponuje zrobić zamiast użytkownika z X+15 polami osobną tabelę o strukturze
Kod
ID Użytkownika | ID Linku | Ilość kliknięć |

Gdzieś będziesz przechowywał aktualny ID linku (lub nazwę pola która by się znajdowała w tabeli z użytkownikami).
Przykłądowo
Kod
1 | 5 | 10 |
1 | 4 | 3  |
2 | 5 | 4  |

Co będzie przedstawiało że użytkownik o ID 1 wlazł w linka o id 5 - 10razy a w linka o id 4 - 3razy, użytkownik o ID w linka o ID 5 - 4 razy.
A update będzie zrobić prosto ...
  1. UPDATE `kliknięcia` [...] WHERE `ilosc_klikniec` > 15


Edit:
Zamiast ID Linku powinien być numer dnia winksmiley.jpg
Mam nadzieje że rozumiesz ?
marcinw77
Tak, rozumiem Twoj sposob i wydaje mi sie dosc dobrym rozwiazaniem. Tylko ze codziennie te dni beda mi sie dodawaly i baza bedzie ciagle rosla. Raczej potrzebowalbym zeby tylko te 15 dni bylo ciagle (tymbardziej ze tak mialbym w wykresach ustawione). Jest wogole jakis taki sposob, aby przechowywac tylko wartosci z 15 ostatnich dni (i jakos podmieniac, kasowac itp) ?

Drugi problem to jak to zrobic zeby mi skrypt automatycznie rozdzielal na dni
Eagle
Jeżeli nie będziesz kasował starych rekordów to baza faktycznie będzie rosła.
Przykładowo jeżeli masz 16 dzień to odejmujesz od niego 15, wychodzi 1. Kasujesz rekordy o dniu 1. Jeżeli X dzień - 15 jest <= 0 to nic nie kasujesz. Zapisujesz wtedy pod "aktualny dzień".

Przykład smile.gif
Dzień 5:
  1. <?php
  2. $dzien = 5;
  3. $numer_dnia = $dzien-15;
  4.  
  5. if($numer_dnia <= 0)
  6. {
  7.   // Bez kasowania rekordów w bazie (pierwsze 15dni)
  8. }
  9. else
  10. {
  11.   // Kasowanie rekordów
  12.   $query = ' DELETE [...] WHERE `ID_Dnia` = '.$numer_dnia;
  13.   [...]
  14. }
  15. ?>


W ten sposób możesz przechowywać w bazie zawsze tylko 15dni.

Rozdzielanie dni możesz zrobić np. używając crona.
Każdego dnia o 00:00:01 zwiększasz numer dnia.
marcinw77
Ok dzieki bardzo. Rozwiazalem to moze nie tak samo jak Ty pisales, ale pomogles mi bardzo.

Mam jeszcze pytanie:

Mam zrobione tak, ze u kazdego usera sa pola day1,day2, .., day15. I robie w ustawieniach skryptu (dziala tak jak cron) tak, zeby codziennie kiedy "czas sie resetuje" przepisywalo mi z day2 do day1 wartosci, z day3 do day2 itd i day15 ustawialo wartosc 0 =)

Po prostu nie znam za dobrze tych polecen z mysql i tu potrzebna mi jest mala pomoc:

CODE
mysql_query ('UPDATE users SET day1=\'day2\' ');

mysql_query ('UPDATE users SET day2=\'day3\' ');

...

mysql_query ('UPDATE users SET day15=\'0\' ');


tylko ze jesli dobrze mysle to tutaj przykladowo do day1 zamiast przypisac mi wartosc pola day to wpisze po prostu do rekordu slowo 'day2' tak?  Jak to zrobic, aby przypisywalo wartosc tych pol.
Eagle
  1. UPDATE `users` SET `dzien1` = `dzien2`
smile.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.