2011-07-18 13 views
-1

值范围我使用的计算今天与之间的天数条目时创建一个PHP变量分离:PHP公式来指定天递增点值,由30

DATEDIFF(NOW(), l.created) 

我怎么能写一个PHP公式,其中前30天的这个数值乘以1分,然后是30-60分每个2分,然后60-90每个3分等,直到创建以来的总天数,然后所有的观点总结。

因此,如果只有15天才会产生,那么它会得到15分。但是,如果已经创建了45天,它会得到60分(30 * 1加15 * 2)?

+0

算术,约翰。看到这个问题令人沮丧。 –

回答

2

算法:

$d = <number of days>; 

$m = intval($d/30); // completed months 
$r = intval($d % 30); // remaining days beyond that 

$score = ($m * ($m + 1)/2) * 30 + ($m + 1) * $r; 

//  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^ 
//  accumulated levels  final lvl. 

示例:对于$d = 45,我们有$m = 1$r = 15,得到30 + 2*15 = 60


下面是在SQL中一个独立的配方,但你必须自己一个子查询或把它挂到你的功能的加入或东西:

SELECT TRUNCATE((TRUNCATE(d/30, 0) * (TRUNCATE(d/30, 0) + 1)/2) * 30 + (TRUNCATE(d/30, 0) + 1) * (d % 30), 0) AS score 
FROM (SELECT 45 AS d) AS t; 
+0

谢谢...任何想法如何将其转换为MySQL? – John

+0

另一个令人沮丧的问题。你自己尝试过吗? –

+0

我添加了一个框架SQL查询。 –

1
<? 
$day_num = 90; 
$points = 0; 
for($i=1;i<=$day_num;$i++) 
{ 
    $points += ceil($i/30); 
} 
echo $points; 
?> 
1
for ($i = 0; $i < $number; $i++) $points += ceil($i/30);