我的表名是reservations:
| reservation_id(pk) | number of people | capacity |
我希望当我输入的人数比no_of_people列减去容量列并且为新的no_of_people更新容量列。请告诉我如何更新产能表?
模型视图:
public function insert_into_db($people)
{
$sql = "INSERT INTO `reservation` (`no_of_people`) VALUES (?) ";
"SELECT *, `capacity`-`no_of_people` AS `capacity` FROM `reservation`";
$this->db->query( $sql, array($people) );
}
视图控制器
public function insert_people()
{
$people =$this->input->post('no_of_people');
$this->Books_model->insert_into_db($people);
redirect('Booking_Controller/view');
}
视图文件:
<form action="<?php echo base_url();?>index.php/Booking_controller/insert_people" method="POST">
<table>
<tr>
<td> <label for="no of people" class="col-sm-2 control-label"><td>Number Of People*</td></label>
</td>
<td> <input type = 'text' name='no_of_people'></td>
</tr>
<tr>
<td><input type='submit' class="btn btn-success" value="Book a Table"></td>
</tr>
</table>
请帮我找出我在哪里出错了?
正如@nathanmac所暗示的,这是一个糟糕的数据库设计范例。仍然可用的座位容量和数量与特定的预订完全无关,不应该存储在那里。在其他严重的计算问题中,这意味着您总是引用最近的预订来获得座位数,如果之前预订的10人修改了他们在预订中的人数,那么您将不得不重新计算每个剩余的预订。
一个更好的方法——注意,可能有六种好方法来实现这一点——是动态地计算人数,正如nathanmac所说的。任何时候需要确定有多少座位是可用的,就获取总容量的计数,然后减去动态计算的预订数量。