【发布时间】:2013-10-05 08:47:51
【问题描述】:
我有这个数据库:
+----+------------+------------+------------+------ ----+----------+------+------+---------- +------------+ |编号 |保留者 |日期 |时间开始 |持续时间 |结束时间 |成本 |详情 |状态 |添加日期 | +----+------------+------------+------------+------ ----+----------+------+------+---------- +------------+ | 1 |能量 | 2013 年 9 月 29 日 |上午 9 点至 10 点 | 3 |晚上 11 点至 12 点 | 1500 |篮球服! |待定 | 0000-00-00 | | 2 |芒卡诺| 2013 年 9 月 30 日 |上午 9 点至 10 点 | 8 |下午 5 点至 6 点 | 4000 |萨邦德雷! |批准| 0000-00-00 | +----+------------+------------+------------+------ ----+----------+------+------+---------- +------------+我在我的桌子上使用它:
如您所见,上午 9 点到 10 点的时段是由 enerva 预留的;该小时的持续时间为 3,即“3 小时”,因此结束时间为晚上 11 点至 12 点。但是,在我的表格中,我无法在上午 10 点到 11 点和晚上 11 点到 12 点合并'Not Available, taken by: enerva' 字符串。
这是我的代码:
<?php
if (isset($_GET['checkdate'])) {
$date = urldecode($_GET['date']);
echo "<br/><br/><h3>Reservations</h3>";
echo $date;
$timearray = array("8-9am","9-10am","10-11am","11-12pm","12-1pm","1-2pm","2-3pm","3-4pm","4-5pm","5-6pm","6-7pm","7-8pm","8-9pm","9-10pm","10-11pm");
$tablecolor = 1;
echo "<table style='width: 90%;'>";
echo "<tr>";
echo "<th>";
echo "Time";
echo "</th>";
echo "<th>";
echo "Status";
echo "</th>";
echo "</tr>";
foreach ($timearray as $timearrays) {
if($tablecolor %2 == 0) {
echo "<tr>";
}
else {
echo "<tr style='background-color: rgb(0,100,255); background: rgb(0,100,255);'>";
}
echo "<th>";
echo "<h3>$timearrays</h3>";
echo "</th>";
echo "<td>";
$sql = "SELECT * FROM reservation WHERE date = '$date' AND timestart = '$timearrays'";
$result = mysql_query($sql);
if(mysql_num_rows($result) == 0){
echo "<a href='#'><h3 style='color: rgb(255,0,0);'>Reserve</h3></a>";
}
else {
while($row = mysql_fetch_array($result)) {
$reservedby = $row['reservedby'];
}
echo "<h3>Not Available, taken by: $reservedby.</h3>";
}
echo "</td>";
echo "</tr>";
$tablecolor++;
}
echo "</table>";
}
?>
我猜我必须在持续时间内使用一个计数器,并在循环的每次迭代中将其递减到零。虽然计数器不为零,但表格将显示'not available, reserved by: enerva' 字符串;一旦达到零,它将显示'reserve' 链接。但我找不到办法。
有什么方法,或者其他方法吗?我是否应该查看indexof 数组并找出 starttime 和 endtime 的 2 个索引之间的差异?
【问题讨论】:
-
我可以建议您为
date、timestart、duration和endtime列使用时间数据类型吗?确实,前两者可能应该合并到一个列中;后两者都保留是多余的。 -
一个大问题:是否可以同时进行不同的预订?
-
您当然需要在这里进行一些重构。作为@eggyal所说的补充,每小时查询一次数据库效率非常低。一次查询并保存到数组(实际上可以用作哈希表)所有需要的数据库行,然后在创建
期间检查数组是否包含适当的条目。 -
你是什么意思?我讨厌在编程中操纵日期和时间。这就是为什么我在时间开始和结束时间使用变量。
-
"您好。我很难按自己的方式做事。我讨厌按照别人推荐的方式做事。请帮忙。" ?
标签: php mysql arrays html-table