Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cakephp价格检查_Php_Cakephp - Fatal编程技术网

cakephp价格检查

cakephp价格检查,php,cakephp,Php,Cakephp,我有一个包含日期价格的输入框矩阵。如果数据库中没有特定日期的价格,则输入框显示0。我有以下代码,将输入框中键入的价格保存到数据库中。它不会保存所有的0值,只保存新的价格 这很好。然而,我现在发现了一个问题。如果其中一个输入从数据库中显示了一个值,比如$10,并且我现在想将其设置为0,那么代码将不会这样做 仅当值大于等于0时,才会保存。我还没能做最后的检查 储蓄的条件是 1.如果该值是数值 2.如果它是0并且在数据库中已经有一个条目,则保存 3.如果它在数据库中没有值且大于0 4.如果它为0且在数

我有一个包含日期价格的输入框矩阵。如果数据库中没有特定日期的价格,则输入框显示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
你的问题在哪里

> // if new prices > 0.00
>                         if($price_for_today>0 &&
> is_numeric($price_for_today)){
在这里,您指定今天的$prices\u必须大于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并进行更改


我建议您不要使用查询功能,除非非常必要。您应该为price创建一个模型(如果您还没有这样做的话),然后使用关联(hasMany、HasOne、HABTM)或使用$this->loadModel('price')直接在控制器中加载模型。然后像往常一样在条件和字段中使用find“all”。这个建议是按照它的意图使用蛋糕,而不是必不可少的。如果您这样做,还可以执行保存、更新字段、读取。。。把支票和一切都留给蛋糕吧。

谢谢你。是的,我注意到函数中的查询。我已经为我开发了这个,并且存在一些问题。我目前正在寻找一个程序员来解决soem的问题,我有。谢谢