我正在建立一个预订系统,用户通过该系统从可用日期列表中选择一个日期,然后将其提交给数据库。当用户提交他的选择时,我希望将此日期删除或隐藏在列表中,以便不能多次选择相同的日期。
我想要显示的内容的小解释: 如果提交的日期是:2015年4月20日,2015年4月21日,2015年4月25日和2015年4月28日
in database</br>
in database</br>
<option value='23.4.2015'>23.04.2015</option>
<option value='24.4.2015'>24.04.2015</option>
in database</br>
<option value='26.4.2015'>26.04.2015</option>
<option value='27.4.2015'>27.04.2015</option>
in database</br>
这是我的PHP代码:
$begin = new DateTime('today');
$end = new DateTime('today+91day');
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin, $interval, $end);
foreach ($period as $date) {
$db_link = mysql_connect("localhost", "user", "password") or die('Cannot connect');
mysql_select_db("database",$db_link) or die('Cannot select the DB');
$query = "SELECT * FROM reservations";
$result = mysql_query($query,$db_link) or die('cannot get results!');
while($row = mysql_fetch_assoc($result)) {
if ( $date->format("j.n.Y") != $row['date_of_reservation']) {
echo "<option value='". $date->format("j.n.Y"). "'>". $date->format("d.m.Y")."</option>\n";
}
else {
echo "in database";
}
}
}
这是我从上面的代码得到的结果:
in database - </br>
<option value='21.4.2015'>21.04.2015</option>
<option value='21.4.2015'>21.04.2015</option>
<option value='21.4.2015'>21.04.2015</option>
<option value='22.4.2015'>22.04.2015</option>
in database - </br>
<option value='22.4.2015'>22.04.2015</option>
<option value='22.4.2015'>22.04.2015</option>
<option value='23.4.2015'>23.04.2015</option>
<option value='23.4.2015'>23.04.2015</option>
in database - </br>
<option value='23.4.2015'>23.04.2015</option>
<option value='24.4.2015'>24.04.2015</option>
<option value='24.4.2015'>24.04.2015</option>
<option value='24.4.2015'>24.04.2015</option>
in database - </br>
答案 0 :(得分:0)
问题已修复。这是我朋友提出的解决方案:
<?php
$begin = new DateTIme('today');
$end = new DateTime('today+90day');
$flag = false;
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin, $interval, $end);
$db_link = mysql_connect("hostname", "username", "password3") or die('Cannot connect');
mysql_select_db("uirqxukx_bookings",$db_link) or die('Cannot select the DB');
$query = "SELECT * FROM reservations";
$result = mysql_query($query,$db_link) or die('cannot get results!');
foreach ($period as $date) {
$result = mysql_query($query,$db_link) or die('cannot get results!');
while($row = mysql_fetch_assoc($result)) {
if ($row['date_of_reservation'] == $date->format("j.n.Y") && $row['reservationType'] == "FULLDAY")
{
echo "";
$flag = true;
}
}
if ($flag == false)
{
echo "<option value='". $date->format("j.n.Y"). "'>". $date->format("d.m.Y")."</option>\n";
$flag = false;
}
$flag = false;
}
?>
答案 1 :(得分:-1)
如果您只是希望它们不显示在选项列表中,请删除
echo "in database"
线。您也可能希望将输出包装在一个命名元素中(在while循环之外 - 在循环之前打开并关闭它之后)