我在数据库中有一个用户表,其中包含以下字段:
id_usuario
login
passwd
dias_disponibles (Fixed users have 24 days available)
fecha_ingreso (Date entry in company)
tipo_usuario (Fixed or Temporary)
每位用户都可以提出休假申请。用户admin负责添加新用户。我的问题是临时用户。临时用户将根据工作长达一年的月份获得可用天数。对于每个工作月,dias_disponible增加2.例如,如果user1加入公司后,它已经工作了2个月,现在它将有4个dias_disponibles,依此类推,直到需要12个月,然后从那里,它将永远是24 dias_disponible。我有这个函数来计算自从我加入公司直到今天的月份差异:
function difmeses($fechaingreso){
$fechainicial = new DateTime($fechaingreso);
$fechaactual = (new DateTime)->format('Y-m-d H:i');
$fechafinal = new DateTime($fechaactual);
$diferencia = $fechainicial->diff($fechafinal);
$meses = ( $diferencia->y * 12 ) + $diferencia->m;
return $meses;
}
我的问题是如何使用,以便在公司中增加到12个月,如果需要12个月,则停止。我已经创建了这个,但我不知道如何继续,以便在2天内增加:
$mes = difmeses("2018-03-15 00:00");
for($i = 1; $mes <= 12; $i++){
mysql_query("update sec_users set dias_disponibles = dias_disponibles + 2 where login = 'user1'");
}
它没有做我想要的事情。
答案 0 :(得分:1)
首先是你的逻辑问题
您遇到的问题出在代码的最后一部分
$mes = difmeses("2018-03-15 00:00");
for($i = 1; $mes <= 12; $i++){
mysql_query("update sec_users set dias_disponibles = dias_disponibles + 2 where login = 'user1'");
}
首先,这里根本不需要使用for
循环。您将覆盖先前循环运行的更新命令,因此最后只有最后一个将在表中。因此,您可以在没有循环的情况下使用最后一个。
Sencond你在这里得到一个非常简单的公式:自由日=(月工作* 2)最大24。只需将其写为代码:
$mes = difmeses("2018-03-15 00:00");
$dias = max($mes * 2, 24);
mysql_query("UPDATE sec_users SET dias_disponibles = $dias where login = 'user1'");
现在又是一个大问题