我有一个简单的 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);
?>
极好的!!谢谢回复!!我不明白你的解决方案是什么。但第一个它有效!在小型测试环境中试了一下!它有效。
第二,我有一些新的东西要学,你的解决方案给了我进一步学习的良好开端。太感谢了!!