我有一个输入框矩阵,其中包含日期的价格。如果数据库中没有特定日期的价格,则输入框显示0.我有以下代码,将输入框中输入的价格保存到数据库中。它不会仅保存新价格的所有0值。
哪个好。但是我现在发现了一个问题。如果其中一个输入从数据库中显示一个值,比如$ 10,我想将它现在设置为0,那么代码就不会这样做。
只有在值超过0时才会保存。我无法进行最终检查。
储蓄的条件是 1.如果值是数字 2.如果它为0并且数据库中已有条目,则保存 3.如果数据库中没有值且大于0 4.如果它为0且数据库中没有值,则不保存
if (isset($this->data['Rate'])){
// for each rate
foreach($this->data['Rate'] as $rate_id => $room){
// for each room type
foreach($room as $room_id => $room){
$price_for_today = isset($room['Price'][$key]) ? $room['Price'][$key] : 0;
// get existing availabilities is num (get this from previous date loop)
$today = ''.$date.' 00:00:00';
$conditions = array('Availability.date' => $today,'Availability.room_id'=>$room_id);
$this->Availability->contain();
$result = $this->Availability->find('all',array('order'=>'Availability.room_id ASC', 'conditions'=>$conditions));
$avail_id = $result[0]['Availability']['id'];
// check prices
$check_prices = "SELECT * FROM prices
WHERE rate_id = '".$rate_id."' AND availability_id = '".$avail_id."'";
$prices_result = $this->Availability->query($check_prices);
// if new prices > 0.00
if($price_for_today>0 && is_numeric($price_for_today)){
// better checking needed!
if($prices_result){
$setprices = "UPDATE prices SET price = '".$price_for_today."'
WHERE rate_id = '".$rate_id."' AND availability_id = '".$avail_id."'";
$update = $this->Availability->query($setprices);
} else {
$setprices = "INSERT INTO prices (price, availability_id, rate_id)
VALUES ('".$price_for_today."', '".$avail_id."', '".$rate_id."')";
$insert = $this->Availability->query($setprices);
}
}
//$errors[] = $setprices;
} // end rooms loop
} // end Rates loop
答案 0 :(得分:1)
你的问题在
> // if new prices > 0.00
> if($price_for_today>0 &&
> is_numeric($price_for_today)){
这里你指定$ prices_for_today必须是> 0,所以如果你有一个价格并想今天把它设为0那么你就不会做任何事......你应该使用
if(($price_for_today>0 && is_numeric($price_for_today)) || (!empty($prices_result) && $price_for_today==0 && is_numeric($price_for_today))){
如果您更改它,它现在将输入if并进行更改。
我认为你不使用查询功能,除非非常必要。你应该创建一个价格模型(如果你还没有这样做),然后使用关联(hasMany,HasOne,HABTM)或直接在控制器中使用$ this-> loadModel('Price')加载模型。然后使用条件和字段查找'all'。这种推荐是按照预期使用蛋糕,而不是必不可少的。另外,如果你这样做,可以完成保存,更新字段,读取...留下支票和所有蛋糕。