用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1724|回复: 10
收起左侧

[已解决] 请教一个问题,关于资料库取出值做运算

[复制链接]
发表于 2016-2-16 10:29:49 | 显示全部楼层 |阅读模式
本帖最后由 Maracuj_JfQ4E 于 2016-2-29 11:29 编辑

程式码如下

function index(){
        $this->load->model ( 'Qty_model' );
        $query = $this->Qty_model->DMS ('SEL_QTY')->result_array ('SEL_QTY');
        
        $data = array
                'data' => $query         
        );
        
        $this->load->view('Qty_test',$data);
    }


想要让销售数量*2,再把结果丢到数据,试了很多写法,都没成功
想请问各位要如何解决?因为刚接触CI,所以烦请大家了,谢谢
发表于 2016-2-16 10:35:36 | 显示全部楼层
方便提供 Qty_model 中的 DMS 方法的程式碼嗎 ?
 楼主| 发表于 2016-2-16 10:44:02 | 显示全部楼层
<?php  
class Qty_model extends CI_Model{  
    function __construct() {  
        parent::__construct();  
         $this->load->database();  
         
    }  
     
    function Dms(){
      return  $this->db->get ( 'qty' );
      return $query;
    }  
}  
?>
发表于 2016-2-16 11:08:59 | 显示全部楼层
本帖最后由 Closer 于 2016-2-16 11:10 编辑

好,我們來一一解析你做的事情
PHP复制代码
 
/*
  一般沒這種寫法 $this->模型->方法()->輸出結果陣列();
  都是 $this->模型->方法();
  不過你這種方式我倒沒試過
 
  另外你給予 DMS 的 SEL_QTY 根本沒在用阿
  而且 result_array 根本不需要給予值
  多看看手冊上 result_array 的用法
*/

$query = $this->Qty_model->DMS ('SEL_QTY')->result_array ('SEL_QTY');
 
复制代码
PHP复制代码
 
/*
  你控制器呼叫 DMS 方法
  模型裡面卻定義 Dms 方法
  請大小寫統一
 
  另外你的這兩段永遠只會執行第一段
  因為 return 就結束了
*/

return  $this->db->get ( 'qty' );
return $query;
 
复制代码


整體而言你只做了下列幾件事 :
1. 從資料表 qty 取出資料陣列 (如果這種寫法有取成功的話 ...)
2. 塞到變數 data 中名為 data 的 Key 值
3. 送往 view 端

關於這段話,我不曉得你想要做到甚麼樣的程度
只是要顯示的數量 *2 ? 還是 *2 後存入資料表 ?
想要让销售数量*2,再把结果丢到数据

 
 楼主| 发表于 2016-2-16 11:47:12 | 显示全部楼层
资料是有取出成功,我要的是*2后放回资料库,view出来的资料就是*2后的,
我写法都是看范例拼凑的,我会改进的


1. 從資料表 qty 取出資料陣列 (如果這種寫法有取成功的話 ...)
2. 塞到變數 data 中名為 data 的 Key 值---------------------->从这里*2,再把*2后资料存回资料库,在丢进view里
3. 送往 view 端
发表于 2016-2-16 11:54:06 | 显示全部楼层
Maracuj_JfQ4E 发表于 2016-2-16 11:47
资料是有取出成功,我要的是*2后放回资料库,view出来的资料就是*2后的,
我写法都是看范例拼凑的,我会改进的
...

按照你的說法
不就每次到該方法時
數量都會 *2 ?
 楼主| 发表于 2016-2-16 13:38:12 | 显示全部楼层
我要的是我输入值,每个值都*2印出来,但照你说的,好像会一直回圈*2
发表于 2016-2-16 13:42:31 | 显示全部楼层
Maracuj_JfQ4E 发表于 2016-2-16 13:38
我要的是我输入值,每个值都*2印出来,但照你说的,好像会一直回圈*2

說說你想達到甚麼樣的目的
再跟你說怎麼做會比較好

你的需求應該比較偏向於
一個輸入框送出後 *2 銷售數量 ?
那可以考慮看看 redirect() 而非 $this->load->view();
 楼主| 发表于 2016-2-16 15:41:12 | 显示全部楼层
其实我主要的是可以做运算,因为我设一些变数,讯息都会显示无支援,或者无法辨识,宣告变数也是错误讯息.
所以我只要简单的运算.就是知道怎么把运算结果放进去.显示出来
发表于 2016-2-16 15:59:41 | 显示全部楼层
本帖最后由 Closer 于 2016-2-16 16:09 编辑
Maracuj_JfQ4E 发表于 2016-2-16 15:41
其实我主要的是可以做运算,因为我设一些变数,讯息都会显示无支援,或者无法辨识,宣告变数也是错误讯息.
所以 ...
PHP复制代码
 
<?php
// 控制器端 :
function __construct() {  
        parent::__construct();  
        $this->load->database();
        $this->load->model('Qty_model');
}
 
// 顯示數據用
function index(){
        $data['data'] = $this->Qty_model->getData();
       
        // 在該 view 端放一個 form & button 送往 update 方法
        $this->load->view('Qty_test', $data);
}
 
// 更新數據用
function update(){
        $this->Qty_model->updateData();
        redirect('???/index', 'refresh'); // 第一參數給予你要前往的控制器/方法
}
 
复制代码

PHP复制代码
 
 
<?php
// 模型端 :
class Qty_model extends CI_Model{
 
        function __construct() {
                parent::__construct();
                $this->load->database();
        }
 
        function getData(){
                $query = $this->db->get('qty');
 
                if($query->num_rows() > 0){
                        return $query->result_array();
                }
 
                return array();
        }
       
        function updateData(){
                $_query = $this->db
                        ->where('id', 1)
                        ->get('qty');
 
                if($_query->num_rows() > 0){
                       $query = $_query->row_array();
                       
                       $amount = $query['amount'] * 2;
               
                       $data = array('amount' => $amount);
               
                       $this->db->where('id', 1)->update('qty', $data);
                }
 
                return;
        }
 
}
 
复制代码

本版积分规则