我在PHP中有一个简单的行李提取和返回管理工具。 它会为所有到达的行李以及何时接收行李生成一个列表。
我所做的是运行数据库以加载特定日期的所有预订。
示例
$query = mysql_query("SELECT * FROM `luggage_requests` WHERE
`request_start`='".date("Y-m-d")."'
OR
`request_end`='".date("Y-m-d")."'");
然后我将这个结果中的所有预订加载到一个数组中。
示例
$requests[] = $row["request_id"];
而且我还会加载客户下车或领取行李的时间。
示例
///######## DETERMINE THE IN OUT STATE
if($row["request_start" == date("Y-m-d")){
///######## ASSIGN THE CORRECT TIME
$request_times[] = (int)str_replace(":", "", $row["request_time1"]);
}
///########
elseif($row["request_eind"] == date("Y-m-d" ){
///######## ASSIGN THE CORRECT TIME
$request_times[] = (int)str_replace(":", "", $row["request_time2"]);
}
此列表按客户下车或领取行李的时间排序,我使用* array_multisort *。
一般情况下,行李将在两三天后被取走。
然而,在某些情况下,它会在稍后的同一天再次被拍摄。 我的代码构造的问题是系统将只显示相同的预订一次。
如果客户在同一天返回。它只会显示客户放下行李的那一刻。但不是他或她来接它的时间。
我绝对不知道如何以任何干净利落的方式解决这个问题。
因为我无法加载两次相同的变量然后进行逻辑排序。 但我更加遇到这个问题。
有人知道如何解决这个问题吗?
非常感谢提前。
完整代码下方:
<?php
///######## QUERY TO PLACE ALL ITEMS INTO AN ARRAY
$inout_parse_query = mysql_query("SELECT * FROM `luggage_requests` WHERE `request_start`='".date("Y-m-d")."' OR `request_end`='".date("Y-m-d")."'") or die(mysql_error());
while ($row = mysql_fetch_array($inout_parse_query)) {
///######## IF THE REQUEST HAS NOT BEEN SAVED ALREADY
if(!in_array($row["request_id"], $requests)){
///######## SAVING ALL IDS INTO AN ARRAY
$requests[] = $row["request_id"];
///######## DETERMINE THE IN OUT STATE
if($row["request_start" == date("Y-m-d")){
///######## ASSIGN THE CORRECT TIME
$request_times[] = (int)str_replace(":", "", $row["request_time1"]);
}
///########
elseif($row["request_eind"] == date("Y-m-d" ){
///######## ASSIGN THE CORRECT TIME
$request_times[] = (int)str_replace(":", "", $row["request_time2"]);
}
}
}
///######## SORT THE ARRAYS AT THE HAND OF THE TIME
array_multisort($request_times, $requests);
?>
超级!!谢谢回复!!我不明白你的解决方案是什么。但是第一次它有效!在一个小的测试环境中试过它!它有效。
第二,我有一些新的东西需要学习,你的解决方案让我有了一个良好的开端,可以进一步学习。万分感谢!!
答案 0 :(得分:1)
if(!in_array($row["request_id"], $requests))
这条线是不是弄乱了你。有些情况下,您需要保存两次请求 - 一次用于下载,一次用于拾取。
$resultSet = array();
while ($row = mysql_fetch_array($inout_parse_query))
{
if ( $row["request_start"] == date('Y-m-d') )
{
$row["sortby"] = $row["request_time1"];
$resultSet[] = $row;
}
if ( $row["request_eind"] == date('Y-m-d') )
{
$row["sortby"] = $row["request_time2"];
$resultSet[] = $row;
}
}
usort($resultSet,'sortluggage');
function sortluggage($a, $b)
{
if ($a["sortby"] == $b["sortby"]) { return 0; }
return ($a["sortby"] < $b["sortby"]) ? -1 : 1;
}