как указано в названии, я хотел бы сделать переменную из "2011-11-2", "2011-11-05", которые являются датой начала и конца даты
<?php echo getWorkingDays("2011-11-2","2011-11-05",$holidays); ?>;
Какизменить фиксированное значение дней между двумя датами в переменную из функции PHP расчета рабочего дня и использования обработчика событий javascript для отображения выходных данных?
Когда пользователь выбирает дату из средства выбора даты в обоих текстовых полях «DateFrom» иЗатем «DateTo» пользователь должен нажать кнопку «Проверить день (ы)», чтобы вычислить число двух дат между указанными.
Ниже приведены функции PHP для получения рабочего дня между двумя датами.:
<?php
function getWorkingDays($startDate,$endDate,$holidays){
$days = (strtotime($endDate) - strtotime($startDate)) / 86400 + 1;
$no_full_weeks = floor($days / 7);
$no_remaining_days = fmod($days, 7);
$the_first_day_of_week = date("N", strtotime($startDate));
$the_last_day_of_week = date("N", strtotime($endDate));
if ($the_first_day_of_week <= $the_last_day_of_week) {
if ($the_first_day_of_week <= 6 && 6 <= $the_last_day_of_week) $no_remaining_days--;
if ($the_first_day_of_week <= 7 && 7 <= $the_last_day_of_week) $no_remaining_days--;
}
else {
if ($the_first_day_of_week == 7) {
$no_remaining_days--;
if ($the_last_day_of_week == 6) {
$no_remaining_days--;
}
}
else {
$no_remaining_days -= 2;
}
}
$workingDays = $no_full_weeks * 5;
if ($no_remaining_days > 0 )
{
$workingDays += $no_remaining_days;
}
foreach($holidays as $holiday){
$time_stamp=strtotime($holiday);
if (strtotime($startDate) <= $time_stamp && $time_stamp <= strtotime($endDate) && date("N",$time_stamp) != 6 && date("N",$time_stamp) != 7)
$workingDays--;
}
return $workingDays;
}
$holidays=array("");
?>
Когда я повторяю фиксированное значение даты, оно отлично работает
<?php echo getWorkingDays("2011-11-2","2011-11-05",$holidays); ?>;
Далее следуют javascript и форма:
<link rel="stylesheet" type="text/css" href="tcal.css" />
<script type="text/javascript" src="tcal.js">
</script>
<form name=fname method='post'>
<tr valign="baseline">
<td nowrap="nowrap" align="right"> </td>
<td nowrap="nowrap" align="right"><div align="left">Date From:</div></td>
<td><div>
<input id="dateFrom" type="text" name="DateFrom" class="tcal" value='' autocomplete="off" />
</div></td>
</tr>
<tr valign="baseline">
<td nowrap="nowrap" align="right"> </td>
<td nowrap="nowrap" align="right"><div align="left">Date To:</div></td>
<td><div>
<input id="dateTo" type="text" name="DateTo" class="tcal" value="" autocomplete="off"/>
</div></td>
</tr>
<p>
<input id="leavetakens" name="leavetakens" type="text" value="" readonly="readonly">
<input type="button" value="Check Day(s)" name="btnCalculate" onClick="abc()"></p>
</form>
<script type="text/javascript">
function abc()
{
var jsvar = <?php echo getWorkingDays("2011-11-2","2011-11-05",$holidays); ?>;
var dateFrom = document.getElementById("dateFrom").value;
var dateTo = document.getElementById("dateTo").value;
document.fname.leavetakens.value=jsvar
}
</script>
В этот момент ятолько может показать значение из двух фиксированных указанных дат, но как сделать его переменным?Заранее спасибо =)
P / S: Извините за мой плохой английский