Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Postów na dzień!
Forum PHP.pl > Forum > PHP
kicaj
Jak obliczyć ile postów na dzien wysyla dany user?

Wynik jak w PHPBB: postów 0.7 dziennie!
FiDO
W najprostszej postaci to wystarczy podzielic liczbe wszystkich postow przez ilosc dni ile dany klient jest zarejestrowany.

Nie jest to idealne, bo nie uwzglednia wakacji userow i takich tam winksmiley.jpg
Troche lepiej bylo by dzielic tylko przez liczbe dni, w ktorych cos pisal.
kicaj
hmm? to jak policzyc liczbe dni? Mam pole w mysqlu 'datetime' ;/
zalew
Cytat
W najprostszej postaci to wystarczy podzielic liczbe wszystkich postow przez ilosc dni ile dany klient jest zarejestrowany.
Nie jest to idealne, bo nie uwzglednia wakacji userow i takich tam winksmiley.jpg
Troche lepiej bylo by dzielic tylko przez liczbe dni, w ktorych cos pisal.

przeciez uczestnikiem forum sie jest czaly czas, nawet tylko czytajac... czyli jesli ktos by byl rok i codziennie 1 post to by mu wyszla srednia 1 dziennie, a jesli ktos bylby rok i tylko raz cos napisal to tez 1 dziennie smile.gif bez sensu

kicaj mktime() dat i obliczaj roznice...
kicaj
[php:1:9e8b921b97]<?php

$ostatni1 = mktime(0,0,0,9,2,2003);
$dzien1 = strftime("%d . %m . %Y", $ostatni1);
echo $dzien1;

echo "<br>";

$ostatni2 = mktime(0,0,0,8,2,2003);
$dzien2 = strftime("%d . %m . %Y", $ostatni2);
echo $dzien2;

echo "<br>";

$roznica = $dzien1 - $dzien2;

echo $roznica;
?>[/php:1:9e8b921b97]i nic sad.gif nie wiem czy dobrze robie?
jono
[php:1:50f02e1830]<?php

$ostatni1 = mktime(0,0,0,9,2,2003);
echo $dzien1;

echo "<br>";

$ostatni2 = mktime(0,0,0,8,2,2003);
echo $dzien2;

echo "<br>";

$roznica = $ostatni1 - $ostatni2;

echo ($roznica/86400);

?>[/php:1:50f02e1830]
FiDO
Cytat
przeciez uczestnikiem forum sie jest czaly czas, nawet tylko czytajac...  czyli jesli ktos by byl rok i codziennie 1 post to by mu wyszla srednia 1 dziennie, a jesli ktos bylby rok i tylko raz cos napisal to tez 1 dziennie smile.gif bez sensu

No w sumie smile.gif przy takim zalozeniu srednia nigdy nie bylaby nizsza niz 1, wiec lepiej to pierwsze (prostsze) rozwiazanie.

Liczbe dni mozna wyciagnac jedym zapytaniem z mysql'a:
[sql:1:98b38ccba5]
SELECT
FLOOR((UNIX_TIMESTAMP() - UNIX_TIMESTAMP(pole_z_data)) / 86400) dni
FROM tabela_z_data;
[/sql:1:98b38ccba5]

W zasadzie cala srednia mozesz wyciagnac odrazu z MySQL'a bez zbednych obliczen w php, ale nie bede Ci psul przyjemnosci z dojscia do tego jak smile.gif (niewielkie rozszerzenie powyzszego zapytania).
kicaj
[php:1:7338c4e43e]<?php

$ostatni1 = mktime(0,0,0,9,2,2003);
$ostatni2 = mktime(0,0,0,3,2,2003);

$roznica = $ostatni1 - $ostatni2;

echo ($roznica/86400);

?>[/php:1:7338c4e43e]

Prosze zobaczyc jaki wynik!!!
Wyszła mi jakas liczba z przecinkiem itp!? :/

A drugi moj problem jak zamienic date, przechowuje w MySQLu jako DATETIME w postaci 0000-00-00 00:00:00 ?
?>[/php]
FiDO
Cytat
Prosze zobaczyc jaki wynik!!!
Wyszła mi jakas liczba z przecinkiem itp!? :/

No to co ze z przecinkiem... srednie raczej zawsze sa z przecinkiem, taka ich natura... zaokraglij sobie to do jednego czy dwoch miejsc po przecinku i bedziesz mial ladna srednia smile.gif

Cytat
A drugi moj problem jak zamienic date, przechowuje w MySQLu jako DATETIME w postaci 0000-00-00 00:00:00 ?

Zamienic na co? Zadales pytanie bez sensu...
adwol
Cytat
Prosze zobaczyc jaki wynik!!!
Wyszła mi jakas liczba z przecinkiem itp!? :/

I co się tak tej liczby boisz? Taka sama jak każda inna. :wink:
To całkiem prawdopodobne że średnia jest niecałkowita (w końcu to iloraz).
Cytat
A drugi moj problem jak zamienic date, przechowuje w MySQLu jako DATETIME w postaci 0000-00-00 00:00:00 ?

Zamienić na co? Na time_t (czas uniksowy)?
[sql:1:6dcd0c7754]select unix_timestamp(data)[/sql:1:6dcd0c7754]
kicaj
zamienic czas z DATETIME na taki w mktime()
uboottd
Ale jak wynik z mktime() masz na mysli ? To wtedy jak Ci juz adwol napisal, a jesli masz na mysli tak jak argumenty do mktime to (szkic rozwiazania):

[php:1:3cfb3bd53b]
$res = mysql_query("select date_format(pole_z_data, '%Y:%c:%e:%k:%i:%s') as cos from tabela where cos_tam");
$ob = mysql_fetch_object($res);
list($rok,$miesiac,$dzien,$godzina,$minuta,$sekundy) = explode(":",$ob->cos);
[/php:1:3cfb3bd53b]
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.