2017-07-11 35 views
0

所以,我想知道是否有人会考虑检查这个任务并纠正它?我很确定我已经把Python弄糊涂了,知道我知道什么小PHP,并且有开放标签。MyBB的PHP自动老化任务

基本上,会有一个字段,讨厌的十进制年龄去($年龄,这将稍后被替换为适当的字段ID)。我们的网站在几个月内为青少年工作,然后在几个月和四季为成年人工作。使用令人讨厌的年龄,我试图计算四舍五入的年龄值,然后将它们存储为一个字符串值,然后将其设置为将显示年龄的字段的值($ displayagefid,稍后将替换为适当的字段ID)。只有特定的用户组会被更新(这个列表非常庞大,所以我把它排除了)。

我也不知道如何使用字符串和另一个变量的值将变量设置为字符串。

请知道我是一个PHP的完整新手。 这是为了在自我托管的MyBB论坛上作为任务运行。 提前谢谢!

<?php 

function task_age($task) 
{ 
global $mybb, $db; 

$increment = 0.04167 
$age = $age + $increment 
floor($age*4) = $seasons 
floor($age) = $years 
floor($age*12) = $months 

if ($year < 1) { 
$display_age = $months, "mnths" 
} 
elseif (! filter_var($year, FILTER_VALIDATE_INT)){ 
$display_age = $year, "yrs" 
} 
else { 
$display age = $display_age = $years, "yrs", $seasons, "s" 
}; 

$query = $db->query(" 
UPDATE mybb_userfields userfields 
for ($usergroup = a || b || d || all that other crap) { 
SET $dispalyagefid = $display_age; 
}; 
"); 

add_task_log($task, "The age characters task successfully ran."); 

回答

0

我在你的代码匆匆一瞥和伸出的是你有你的一些变量赋值后到前的第一件事:

$increment = 0.04167 
$age = $age + $increment 
floor($age*4) = $seasons 
floor($age) = $years 
floor($age*12) = $months 

无论是左侧被设置为任何在右边,所以你的前两个都可以,但最后三个需要转换。

说了这样的话,我觉得你没有正确地接近它。我在你的网站输入我的小数点时间,但你打算如何制定季节?明天可能是我的生日,昨天可能是我的生日。

你最好让用户输入一个出生日期,从中计算出他们的年龄。

$birthday=date_create("2013-03-15"); 
$today=date_create('now'); 
$diff=date_diff($birthday,$today); 

现在在$ diff变量中,您可以检查PHP日期的所有元素。因此,首先检查它们是否18岁以下:

if ($diff->format("%y") < 18) { 
$ageInMonths = ($diff->format("%y") * 12) + $diff->format("%m"); 
$age = "$ageInMonths months"; 
} 

如果他们是18岁以上,你想在岁,然后从剩余月份计算的季节。

else { 
$ageInYears = $diff->format("%y"); 
$ageInSeasons = floor($diff->format("%m")/4); 
if ($ageInSeasons > 0) { 
$age = "$ageInYears years and $ageInSeasons seasons"; 
} else { 
$age = "$ageInYears years"; 
} 
} 
+0

你好!最初,我没有看到适合增加更多细节,但我可以看到缺乏环境会导致混乱。这是一个幻想角色扮演网站,由于“网站时间”比实时快得多,主要在季节录制,因此需要以这种方式计算年龄。对不起,没有解释,并感谢您对此进行调查! – tig