我的条目名称和状态都有日期和说明。
该表与此类似:
name,
date_cancelation,
date_success,
date_meeting,
date_setup,
note_cancelation,
note_success,
note_meeting,
note_setup
在我的foreach循环中,我确定了这4个日期中的哪一个是最新的,所以我在我的列表中显示如下:
1) John Doe - last status at 11.12.2016 - canceled
2) Mary Jane - last status at 02.01.2017 - meeting
3) Peter Meyer - last status at 10.12.2016 - canceled
对于日期我在sql中有4列
现在我想知道如何在最新日期之前对此列表进行排序,而日期不是唯一的列。
我通过搜索解决方案来理解我应该首先按日期对SQL进行排序,但由于日期在4列中,我已经失去了如何使用它:)
任何人都可以给我一个提示吗?
谢谢!
编辑:
这是我的代码,它为我提供了一个最近状态的人员列表:
$query = "SELECT abc__form_jobstate.id ,
`jobstate_applicant` , `jobstate_jobstate` ,
`applicant__personid` , `applicant_name` , `status_success_date` , `status_cancel_date` , `status_meeting_date` , `status_application_date`,
`success_note` , `cancel_note` , `meeting_note` , `application_note`
FROM `abc__form_jobstate`
LEFT JOIN abc__form_applicant ON ( applicant__personid = abc__form_applicant.id )
WHERE `applicant_jobangebot` =" . $di . „;
$db->setQuery($query);
$output = $db->loadObjectList();
foreach ($output as $outputs) {
// set variables for dates
$vm_date = $outputs->status_success_date;
$ab_date = $outputs->status_cancel_date;
$pa_date = $outputs->status_meeting_date;
$ll_date = $outputs->status_application_date;
// set variables for notes
$vm_note = $outputs->success_note;
$ab_note = $outputs->cancel_note;
$pa_note = $outputs->meeting_note;
$ll_note = $outputs->application_note;
// put the dates into an array
$statusdates = [
„Success“ => $vm_date,
„Cancel“ => $ab_date,
„Work“ => $pa_date,
„Application“ => $ll_date
];
// See what date is the most recent inside the record
$max = max(array_map('strtotime', $statusdates));
$recent_status = date('d.m.Y', $max);
$recent_statustype = array_search(max($statusdates),$statusdates);
if ($recent_statustype== „Success“) {
$statusnote = $vm_note;
};
if ($recent_statustype== „Cancel“) {
$statusnote = $ab_note;
};
if ($recent_statustype== „Work“) {
$statusnote = $pa_note;
};
if ($recent_statustype == „Application“) {
$statusnote = $ll_note;
};
echo '<div class="col-lg-5“><strong>' . $recent_statustype . '</strong> at ' . $recent_status . '<br>' . $statusnote . '</div>';
}
?>
就像上面的列表
现在我需要按日期对列表本身进行排序(在这种情况下,Mary Jane会位于顶部) - 但日期来自不同的列。
希望我能更好地解释我所挣扎的东西。谢谢大家!!!
答案 0 :(得分:4)
创建名为date
的列,并将其类型设置为date
和CURRENT_TIMESTAMP
,然后将数据添加到此table
。通过应用查询ORDER BY date
desc / asc。
答案 1 :(得分:0)
您可以使用uasort http://php.net/manual/en/function.uasort.php
uasort($array, function($a , $b){
$aLatestTimeStamp = $a->getLatestTimeStamp();
$bLatestTimeStampt = $b->getLatestTimeStamp();
if ($aLatestTimeStamp == $bLatestTimeStampt) {
return 0;
}
if ($aLatestTimeStamp < $bLatestTimeStampt) {
return -1;
} else {
return 1;
}
});