对于PHP不增加

时间:2018-03-15 09:31:43

标签: php

我在数据库中有一个用户表,其中包含以下字段:

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'");
}

它没有做我想要的事情。

1 个答案:

答案 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'");

现在又是一个大问题

请勿使用mysql_ 功能。他们被弃用了!而是使用mysqli_ 函数或PDO并阅读有关预准备语句的内容。