2011-09-13 43 views
0

我有一個包含日期價格的輸入框矩陣。如果某個特定日期的數據庫中沒有價格,輸入框將顯示0.我有以下代碼將輸入到輸入框中的價格保存到數據庫中。它不會保存所有0值只有新的價格。cakephp價格檢查

這很好。但是我現在發現了一個問題。如果其中一個輸入顯示數據庫中的值,例如$ 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 

回答

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))){ 

,如果你改變它,如果它現在將在進入和做的修改。

我強烈建議您不要使用查詢功能,除非非常必要。你應該爲價格創建一個模型(如果你還沒有這樣做),然後使用關聯(hasMany,HasOne,HABTM)或直接在控制器中用$ this-> loadModel('Price')加載模型。然後像條件和領域一樣使用「全部」。這個建議是按照它的意圖使用蛋糕,這不是不可或缺的。另外,如果你這樣做,保存,更新字段,讀取可以完成...將支票和所有東西都留給蛋糕。

+0

謝謝。是的,我確實注意到函數中的查詢。我有這個爲我開發的,並且有一些問題。我目前正在尋找一位程序員來解決我所遇到的問題。謝謝 –