2015-07-28 67 views
0

我的表名是預訂:如何自動更新phpmyadmin中的列

| reservation_id(pk)|人數|容量|

我希望當我輸入的人數比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> 

請幫我看看,我所犯的錯誤?

+1

這與phpmyadmin有什麼關係?無論如何,你可以在MySQL端使用觸發器來做到這一點。更多信息在這裏:[官方文檔](https://dev.mysql.com/doc/refman/5.0/en/trigger-syntax.html) –

+1

爲什麼你將容量存儲在保留表中,這是一個動態值, 'SELECT SUM(no_of_people)as capacity FROM reservations' – nathanmac

回答

0

正如@nathanmac暗示的,這是一個糟糕的數據庫設計範例。仍然可用的座位數量和數量與特定預訂完全無關,因此不應存儲在那裏。在其他嚴重的計算問題中,這意味着您總是參考最近的預訂來獲取座位數,並且如果之前有10人預訂修改了預訂中的人數,您將不得不重新計算每個人剩餘的保留。

一個更好的方法 - 並注意到有可能有六個好的方法來實現這一點 - 就像nathanmac所說的那樣動態計算人數。無論何時您需要確定有多少座位可用,您都可以獲取總容量的數量並減去動態計算的預訂數量。