PHP的重复任务

时间:2016-04-19 18:43:15

标签: php mysql task recurring

我需要一个关于其日期重复任务的解决方案。

我有关于数据库的提醒表。有这些结构;

ID,contract_ID,remindtask,remind_startdate,remind_enddate,remind_repeat,remind_repeatunit,remind_responsible [注意: remind_repeat remind_repeatunit 列以供日期使用(" dmY& #34;,strtotime(日期+ 1 ))]

我想在http://bootsnipp.com/snippets/featured/agenda除了时间栏之外制定议程。我想使用第一个带有复选框的提示,但其他日期(" d.m.Y",strtotime($ calendar_date + $ repeat $ repeatunit))显示将在表单中。

我写了一些代码,然后我找到了我想要的东西。

$conn_reminder_min_startdate = mysql_query("SELECT * FROM reminder ORDER BY remind_startdate ASC");
$get_reminder_min_startdate = mysql_fetch_array($conn_reminder_min_startdate);

$remind_min_startdate = $get_reminder_min_startdate['remind_startdate'];

$conn_reminder_max_enddate = mysql_query("SELECT * FROM reminder ORDER BY remind_enddate DESC");
$get_reminder_max_enddate = mysql_fetch_array($conn_reminder_max_enddate);

$remind_max_enddate = $get_reminder_max_enddate['remind_enddate'];

$calendar_firstday = $remind_min_startdate;
$calendar_lastday = $remind_max_enddate;

echo 'Calendar first day: ' . $calendar_firstday . ' | Calendar Last Day: ' . $calendar_lastday;


for ($i = 1; $i<60; $i++){ // I could not find a loop between the dates to be set up, I was forced to run the loop numerically.

echo "<h4>" . date("d.m.Y", strtotime($calendar_firstday)) . '</h4>';

$conn_reminder_list = mysql_query("SELECT * FROM reminder ORDER BY remind_startdate ASC");
while($get_reminder_list = mysql_fetch_array($conn_reminder_list)){
$contract_ID = $get_reminder_list['contract_ID'];
$contract_remindtask = $get_reminder_list['contract_remindtask'];
$remind_startdate = $get_reminder_list['remind_startdate'];
$remind_repeat = $get_reminder_list['remind_repeat'];
$remind_repeat_unit = $get_reminder_list['remind_repeat_unit'];

if($remind_startdate == $calendar_firstday) {
echo '<input type="checkbox"/> ' . $contract_ID . ' | ' . $contract_remindtask . '<br/>';
} else {
switch ($remind_repeat_unit) {
case "1":
$new_startdate = date("d.m.Y", strtotime($remind_startdate . '+' . $remind_repeat . ' day'));
break;

case "2";
$new_startdate = date("d.m.Y", strtotime($remind_startdate . '+' . $remind_repeat . ' week'));
break;

case "3";
$new_startdate = date("d.m.Y", strtotime($remind_startdate . '+' . $remind_repeat . ' month'));
break;

case "4";
$new_startdate = date("d.m.Y", strtotime($remind_startdate . '+' . $remind_repeat . ' year'));
break;
}

if($new_startdate == $calendar_firstday) {
echo $contract_ID . ' | ' . $contract_remindtask . '<br/>';
}
}
}
$calendar_firstday = date("d.m.Y", strtotime($calendar_firstday . '+1 day'));
            echo '<br/>';
}

我会得到这个结果;

日历第一天:2016-03-01 |日历最后一天:2016-07-15

### 01.03.2016 ###
4 | test3 with checkbox
4 | test4 with checkbox
### 02.03.2016###
### 03.03.2016###
4 | test3 **without checkbox**
4 | test4 **without checkbox**
### 04.03.2016###
### 05.03.2016###
4 | test 5 **without checkbox**
### 06.03.2016###
### 07.03.2016###
### 08.03.2016###
### 09.03.2016###
### 10.03.2016###
### 11.03.2016###
### 12.03.2016###
### 13.03.2016###
### 14.03.2016###
### 15.03.2016###
### 16.03.2016###
### 17.03.2016###
### 18.03.2016###
### 19.03.2016###
### 20.03.2016###
### 21.03.2016###
### 22.03.2016###
### 23.03.2016###
### 24.03.2016###
### 25.03.2016###
### 26.03.2016###
### 27.03.2016###
### 28.03.2016###
### 29.03.2016###
### 30.03.2016###
### 31.03.2016###
### 01.04.2016###
### 02.04.2016###
###03.04.2016###
###04.04.2016###
### 05.04.2016###
### 06.04.2016###
### 07.04.2016###
### 08.04.2016###
### 09.04.2016###
### 10.04.2016###
### 11.04.2016###
### 12.04.2016###
### 13.04.2016###
### 14.04.2016###
### 15.04.2016###
### 16.04.2016###
### 17.04.2016###
### 18.04.2016###
### 19.04.2016###
### 20.04.2016###
4 | test1 **without checkbox**
### 21.04.2016###
4 | test2 **without checkbox**
### 22.04.2016###
### 23.04.2016###
### 24.04.2016###
### 25.04.2016###
### 26.04.2016###
### 27.04.2016###
### 28.04.2016###

测试3&amp;测试4次视图是正常的,但test5,test1和test2不是。

注意: test1 remind_startdate是2016-04-18,必须在那天带复选框。 test5 remind_startdate是2016-03-03,必须在那天带复选框。 test2 remind_startdate是2016-04-19,必须在那天带复选框。 但没有复选框视图是可以的。

你所有的帮助都会让我开心。提前致谢。

0 个答案:

没有答案