【发布时间】:2021-10-05 08:25:06
【问题描述】:
在数据库中,有 project_details 表。我正在从数据库中获取数据,结果如下所示;
重复开始日期在数据库表中,但我没有在数据库中保存结束日期。结束日期取决于用户从字段中的选择(从日期到日期)
{
"projectremindshow":[
{
"project_ID":"8",
"project_title":"abc",
"period_type":"Yearly",
"recurrence_date":"2021-10-28",
"reminder_set_days":"12",
"recur_every":"2",
"start_date":"2021-09-28"
},
{
"project_ID":"10",
"project_title":"xyz",
"period_type":"Yearly",
"recurrence_date":"2021-10-05",
"reminder_set_days":"13",
"recur_every":"4",
"start_date":"2021-09-05"
},
{
"project_ID":"11",
"project_title":"mno",
"period_type":"Monthly",
"recurrence_date":"2021-10-01",
"reminder_set_days":"10",
"recur_every":"8",
"start_date":"2021-09-21"
}
]
}
const inputList = [
{
date: new Date("2021-01-01"),
date2: new Date(todate_recu_view),
daysBefore: reminder_set_days,
period: period_type,
skip: recur_every
}]
const frequencyList = inputList.map((el, index) => {
return getPaymentPlan(el)
})
如何将每个 for 循环值传递给 inputList?
从这些项目列表中,我想找出一个月或一周或一年的提醒日期,例如通过用户选择从和到日期选项来选择日期期间。
基于上面的 JSON,我想显示一个包含所有提醒日期的 HTML 表格。
我有两个字段从和到日期和搜索按钮。单击搜索按钮结果表将显示。
期望输出 example1 是 如果用户选择 from-date= 2021-01-01 和 to_date=2026-01-30 并显示如下结果 Html 表格看起来有两列,如下所示:
project Title reminderdate
abc 2021-09-28 /*show from start_date value from json and recur every 2 years (count upto to_date=2026-01-30) */
abc 2023-09-28 /*recur every 2 years*/
abc 2025-09-28 /*recur every 2 years*/
xyz 2021-09-05 /*recur every 4 years*/
xyz 2025-09-05 /*recur every 4 years*/
mno 2021-09-21 /*recur every 8 months*/
mno 2022-05-21 /*recur every 8 months*/
mno 2023-01-21 /*recur every 8 months*/
mno 2023-09-21 /*recur every 8 months*/
mno 2024-05-21 /*recur every 8 months*/
mno 2025-01-21 /*recur every 8 months*/
mno 2025-09-21 /*recur every 8 months becoz user select to_date=2026-01-30*/
期望输出 example2 是
如果假设用户选择 from-date= 2025-01-01 和 to_date=2026-01-30 并显示如下结果
project Title reminderdate
abc 2025-09-28 /*recur every 2 years*/
xyz 2025-09-05 /*recur every 4 years*/
mno 2025-01-21 /*recur every 8 months*/
mno 2025-09-21 /*recur every 8 months*/
谁能帮我做这个?
我试过的代码:
$('#find_recurrence').click(function(event) {
var getID_comp = $('#getID_comp').val();
var fromdate_recu_view = $('#fromdate_recu_view').val(); //2025-01-01
var todate_recu_view = $('#todate_recu_view').val(); //2026-01-30
$.ajax({
url: base_url + "index.php/welcome/list_all_projects_reminder/",
type: "POST",
data: {
"company_id": getID_comp
},
success: function(data) {
var new_data = JSON.parse(data);
console.log(new_data) //above mentioned JSON result
for (var i = 0; i < new_data.projectremindshow.length; i++) {
var sl = i + 1;
var project_ID = new_data.projectremindshow[i].project_ID;
var project_title = new_data.projectremindshow[i].project_title;
var recur_every = new_data.projectremindshow[i].recur_every;
var period_type = new_data.projectremindshow[i].period_type;
var reminder_set_days = new_data.projectremindshow[i].reminder_set_days;
const getPaymentPlan = ({
date,
date2,
daysBefore,
period,
skip
}) => {
const originalDate = new Date(date.getTime()); // original copy before mutating
const startDate = new Date(date.setDate(date.getDate() - daysBefore))
// date has been mutated. giving it previous value
date = new Date(originalDate.getTime())
const recurObj = {
"recurrenceList": []
}
while (startDate.getTime() <= date2.getTime()) {
recurObj.recurrenceList.push(startDate.toISOString().split('T')[0])
switch (period) {
case 'monthly':
startDate.setMonth(startDate.getMonth() + skip)
break;
case 'yearly':
startDate.setFullYear(startDate.getFullYear() + skip)
break;
default:
recurObj.recurrenceList.push("wrong period type is given")
break;
}
}
return recurObj
}
const inputList = [{
date: new Date("2021-01-01"),
date2: new Date(todate_recu_view),
daysBefore: reminder_set_days,
period: period_type,
skip: recur_every
}]
const frequencyList = inputList.map((el, index) => {
return getPaymentPlan(el)
})
console.log(frequencyList)
}
}
});
});
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: javascript php jquery recurrence