使用php隐藏所选日期

时间:2015-04-21 14:22:25

标签: php sql list

我正在建立一个预订系统,用户通过该系统从可用日期列表中选择一个日期,然后将其提交给数据库。当用户提交他的选择时,我希望将此日期删除或隐藏在列表中,以便不能多次选择相同的日期。

我想要显示的内容的小解释: 如果提交的日期是: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>

2 个答案:

答案 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循环之外 - 在循环之前打开并关闭它之后)