首先,我真的很抱歉,如果标题对你来说是模糊的(因为它是),但是我不知道如何把我的问题用一句话恰当地表达出来。
这里是我的问题:我的学校项目,我必须建立一个网站,你可以预订在博物馆的特别旅游。如果只有8个或更少的预订,其中一个旅游在举行前一周,它被取消了。我真的不知道如何做到这一点!我基本上只能在活动前一周检查一下是否有8个或更少的预订。在我的数据库中,我有两个表:旅游和tour_reservations。下面是表结构,以澄清我正在使用的数据库设置。
旅游
http://imgur.com/NxkyVaL,LushMBa
tours_reservations
http://imgur.com/NxkyVaL,LushMBa#1
因此,tour_id in tours_reservations是通过旅游链接到t_id的。我想要做的是,计算tours_reservations表中的一个tours (Tours_reservations)中的行数,并查看在tours表中的day字段之前一周插入了多少行。
我正在使用MVC框架CodeIgniter。下面是我一直在玩的一段代码:
控制器
public function check_sold_ticket() {
$date = $this->tour_model->get_tour_date();
$last_week = strtotime('-1 week');
$result = $this->tour_model->get_reservations();
if ($date > $last_week && count($result) < 8) {
echo "do something";
}
else {
echo "whoops";
}
$this->load->view('tour/check_sold_tickets');
}模型
public function get_tour_date() {
$query = $this->db->query("SELECT day FROM tours");
return $query->result();
}
public function get_reservations() {
$query = $this->db->query("SELECT reservation_id FROM tours_reservations");
return $query->result();
}代码显然是不正确的,但这正是我到目前为止所能想到的。
我很抱歉问了这么大的问题,但任何帮助完成这一点将是非常感谢的。
提前谢谢。
发布于 2014-11-19 15:00:24
像这样的事情应该能起作用:
public function get_tour_date($starting = 7)
{
//You need to have PHP 5.3 for this
$date = new DateTime("+ $starting days");
$day = $date->format('Y-m-d');
$query = $this->db->query("
SELECT t.t_id, count(r.reservation_id) as c
FROM tours t
JOIN tour_reservations r ON t.t_id=r.tour_id
WHERE day = '$day'
GROUP BY t.t_id");
return $query->result();
}我还没有测试它,但本质上它应该返回一个从今天开始的tour_ids数组,以及它有多少预订的计数。
如果你愿意解释我能做的任何事。
希望这能有所帮助!
https://stackoverflow.com/questions/27018529
复制相似问题