我有一个脚本,它从holiday_entitlement表中的当前记录中获取员工的休假权利。
然后,对要从数据库中减去的每个假日请求使用此应享待遇数字。
例如:应享权利天数= 27
假期申请日=2 >>>>应享权利日= 25
假日申请日=4个>>>>应享权利日= 21天
假期申请日=1 >>>>应享权利日剩余的20天,依此类推。
在我的脚本中,剩下的权利天数是$remainder
我正在挣扎的一点是,每当请求被批准或在SQL中计算出原始的应享权利数字减去对该雇员的所有请求、该学年以及如果该请求获得批准时,都能够将该$remainder保存到holiday_entitlement表。
<?php
$is_business_result = mysql_query('SELECT * FROM holiday_entitlement WHERE employee = \'' . $username . '\' AND academic_year = \'' . $acyear . '\' ');
if($is_business = mysql_fetch_array($is_business_result)) {
echo'<div style="float:left; width:400px;">';
echo'<table width="100%">
<tr>
<td><strong>Name:</strong></td>
<td>'.$is_business['employee'].'</td>
</tr>
<tr>
<td><strong>Entitlement:</strong></td>
<td>'.$is_business['new_entitlement'].' '.$is_business['units'].'</td>
</tr>
<tr>
<td><strong>Department / Division:</strong></td>
<td>'.$is_business['division'].'</td>
</tr>
<tr>
<td><strong>Line Manager:</strong></td>
<td>'.$is_business['line_manager'].'</td>
</tr>
</table>';
echo'</div>';
echo'<table class="dataTable" id="business_days_table" cellpadding="2" cellspacing="2" width="100%">
<thead>
<th>Start Date</th>
<th>End Date</th>
<th>Days to be taken</th>
<th>Days remaining</th>
</thead>';
echo '<tr>';
echo '<td>-</td>';
echo '<td>-</td>';
echo '<td>-</td>';
echo '<td>'.$is_business['new_entitlement'].'</td>';
echo '</tr>';
$input = $is_business['new_entitlement'];
}
else {echo 'You currently dont have a record for this academic year. ';}
$requests_result = mysql_query('SELECT * FROM requests WHERE employee = \'' . $username . '\' AND approved = 1 AND academic_year = \'' . $acyear . '\' ORDER BY start_date ASC');
$remainder = 0;
while($requests = mysql_fetch_array($requests_result)) {
$start_date = new DateTime($requests['start_date']);
$end_date = new DateTime($requests['end_date']);
$timestamp_start_date = $start_date->getTimestamp();
$timestamp_end_date = $end_date->getTimestamp();
$formatted_start_date = date("d M Y", $timestamp_start_date);
$formatted_end_date = date("d M Y", $timestamp_end_date);
$remainder = ($remainder == 0) ? $input : $remainder;
$out = $remainder - $requests['days'];
if($out < 0){
break;
}
$remainder = $out;
echo'<tr>';
echo'<td>'.$formatted_start_date.'</td>';
echo'<td>'.$formatted_end_date.'</td>';
echo'<td>'.$requests['days'].'</td>';
echo'<td>'.$remainder.'</td>';
echo'</tr>';
}
echo'</table>';
?>发布于 2012-08-16 13:15:10
在SQL中计算出原始的应享权利数字减去对该雇员的所有请求、该学年以及是否获得批准。
应该是这样:
select new_entitlement-(select sum(days) from requests where employee="sashn" and academic_year=2012 and approved=1) from holiday_entitlement where employee="sashn";或更新:
update holiday_entitlement set new_entitlement=27-(select sum(days) from requests where employee="sashn" and academic_year=2012 and approved=1) where employee="sashn" and academic_year=2012;https://stackoverflow.com/questions/11983306
复制相似问题