gpt4 book ai didi

php - 我如何以传统的 'time' 增量进行 ORDER BY,一个值字符串,ex : "10:00 AM", 来自不是 date() 格式的数据库条目?

转载 作者:行者123 更新时间:2023-11-29 03:21:55 25 4
gpt4 key购买 nike

更多详情:我在带有 PHPMyAdmin 的本地主机 (XAMPP) 上使用 PHP 5.4。我有一个包含两个相关表的数据库,userscustomers

我希望能够在可能的 15 分钟间隔内以适当的时间线订购和显示 users -> customers,即:'10:15 AM ', '10:30 AM'... '12:45 PM', '1:30 PM' 等。我对此进行了研究并尝试了几种不同的方法,但似乎没有得到我正在寻找的结果为了。

有一个users 表,这是一个经过验证的登录用户,可以添加自己的客户。用户的唯一 id 存储在 customers 表的列中。这允许我使用该列从 customers 表中按用户进行订购。

customers 表有一列route_time,这是一个包含常规字符串的varchar。该时间来自从 "7:00 AM" 开始的数组保持时间,并以 15 分钟为间隔持续到 "6:45 PM"。这是通过表单选择选项作为“route_time”发布的。

我正在尝试获取正确的时间格式,但遇到子午线和两位数小时的问题,例如 10、11 和 12。

我已经通过以下操作解决了 meridiem 问题,但我确信有一种更有效的方法,因为我是一名 PHP 编码新手。

$monday="";
$monday1="";
$mon = "
SELECT *
FROM `customers`
WHERE `user_id`='".$uid."'
AND `route_day` = 'Monday'
ORDER BY CAST(`route_time` AS UNSIGNED), `route_time`;
";
$monResults = $cust->db->query($mon);
if($monResults->num_rows){
while($rows = $monResults->fetch_assoc()){
$time=SUBSTR($rows['route_time'],5,3);
if(trim($time) == 'AM'){
$monday .= '<div style="padding-top:5px;" class="row"><a title="Edit this customer." href="?editCust=Y&cid='.$rows['cid'].'">'.$rows['cfname'].' '.$rows['clname'].'</a></div>';
$monday .= '<div class="row" style="color:red;"><small>'.$rows['route_time'].'</small></div>';
$monday .= '<div class="row"><small>'.$rows['cstreet'].'</small></div>';
$monday .= '<div class="row"><small>'.$rows['ccity'].' '.$rows['cstate'].', '.$rows['czip'].'</small></div>';
}elseif(trim($time) == 'PM'){
$monday1 .= '<div style="padding-top:5px;" class="row"><a title="Edit this customer." href="?editCust=Y&cid='.$rows['cid'].'">'.$rows['cfname'].' '.$rows['clname'].'</a></div>';
$monday1 .= '<div class="row" style="color:red;"><small>'.$rows['route_time'].'</small></div>';
$monday1 .= '<div class="row"><small>'.$rows['cstreet'].'</small></div>';
$monday1 .= '<div class="row"><small>'.$rows['ccity'].' '.$rows['cstate'].', '.$rows['czip'].'</small></div>';
}
}
}

“1:00 AM”的字符串 = 7 而“10:00 AM”的字符串 = 8。这是 $time=SUBSTR($rows['route_time'],5,3); ,如果我从第 5 个字符串中拉出并转到 3,然后我可以使用 trim($time) 函数从来自 7 个字符串值的 meridiem 开头删除多余的空格.然后使用 if/else 作为参数。

然后我使用下面的代码调用它:

<div class='col-md-2 text-left'><h4><small><i class="fa fa-calendar"></i></small> Monday</h4><?php echo $monday.$monday1; ?></div>
<?php
}
if($tueResults->num_rows){
?>
<div class='col-md-2 text-left'><h4><small><i class="fa fa-calendar"></i></small> Tuesday</h4><?=$tuesday.$tuesday1?></div>
<?php
}
if($wedResults->num_rows){
?>
<div class='col-md-2 text-left'><h4><small><i class="fa fa-calendar"></i></small> Wednesday</h4><?=$wednesday.$wednesday1?></div>
<?php
}
if($thursResults->num_rows){
?>
<div class='col-md-2 text-left'><h4><small><i class="fa fa-calendar"></i></small> Thursday</h4><?=$thursday.$thursday1?></div>
<?php
}
if($friResults->num_rows){
?>
<div class='col-md-2 text-left'><h4><small><i class="fa fa-calendar"></i></small> Friday</h4><?=$friday.$friday1?></div>
<?php
}
if($satResults->num_rows){
?>
<div class='col-md-2 text-left'><h4><small><i class="fa fa-calendar"></i></small> Saturday</h4><?=$saturday.$saturday1?></div>
<?php
}
if($sunResults->num_rows){
?>
<div class='col-md-2 text-left'><h4><small><i class="fa fa-calendar"></i></small> Sunday</h4><?=$sunday.$sunday1?></div>

这对 merdiem 进行了正确排序,我遇到的问题是我无法对 12: 在下午的 1、2、3、4、5 之前进行排序。我在上午 10:15 之后的上午 10:00 订单也遇到了一个奇怪的问题,这也是间歇性的,非常奇怪。我无法发布照片,因为这是我在 stackoverflow 上的第一篇帖子,还没有适当的声誉来添加照片 =/。这是我的测试服务器网站上托管照片的链接。 http://dalelandry.com/img//ex.PNG

我也很想知道我是否应该放弃这种方法并使用 date()datetime() 方法来保存客户特定的 route_times。我还有一个类似于 route_day 的列,它也是一个来自数组选择选项的 VARCHAR。我对此没有任何问题。我应该在这里采用基于 date() 的方法吗?是否有更多关于 date() 的 ORDER BY 选项,因为 12:00 PM 在 12:45 PM 之前出现,还是我应该坚持使用字符串选项?我感谢任何建议或帮助!先感谢您!

最佳答案

我得出的结论是,使用 date()datetime() 比尝试拼凑字符串值数组来处理时间和日期要好得多当它已经作为函数内置时,周作为字符串。我将更新我的数据库以获得我需要的两个条目,一个 date('l') 代表星期几,另一个 datetime('m-d-y @ g:i A') 用于日期和时间。我将能够使用不同的 DateTime 函数来提取我需要的数据,并从那里以我需要的方式从数据库中显示它。感谢 Tim 和 mrun 的深思熟虑的输入!

关于php - 我如何以传统的 'time' 增量进行 ORDER BY,一个值字符串,ex : "10:00 AM", 来自不是 date() 格式的数据库条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42922055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com