Maracuj_JfQ4E 发表于 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,所以烦请大家了,谢谢

Closer 发表于 2016-2-16 10:35:36

方便提供 Qty_model 中的 DMS 方法的程式碼嗎 ?

Maracuj_JfQ4E 发表于 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;
    }
}
?>

Closer 发表于 2016-2-16 11:08:59

本帖最后由 Closer 于 2016-2-16 11:10 编辑

Maracuj_JfQ4E 发表于 2016-2-16 10:44

好,我們來一一解析你做的事情

/*
一般沒這種寫法 $this->模型->方法()->輸出結果陣列();
都是 $this->模型->方法();
不過你這種方式我倒沒試過

另外你給予 DMS 的 SEL_QTY 根本沒在用阿
而且 result_array 根本不需要給予值
多看看手冊上 result_array 的用法
*/
$query = $this->Qty_model->DMS ('SEL_QTY')->result_array ('SEL_QTY');


/*
你控制器呼叫 DMS 方法
模型裡面卻定義 Dms 方法
請大小寫統一

另外你的這兩段永遠只會執行第一段
因為 return 就結束了
*/
return$this->db->get ( 'qty' );
return $query;


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

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

Maracuj_JfQ4E 发表于 2016-2-16 11:47:12

资料是有取出成功,我要的是*2后放回资料库,view出来的资料就是*2后的,
我写法都是看范例拼凑的,我会改进的


1. 從資料表 qty 取出資料陣列 (如果這種寫法有取成功的話 ...)
2. 塞到變數 data 中名為 data 的 Key 值---------------------->从这里*2,再把*2后资料存回资料库,在丢进view里
3. 送往 view 端

Closer 发表于 2016-2-16 11:54:06

Maracuj_JfQ4E 发表于 2016-2-16 11:47
资料是有取出成功,我要的是*2后放回资料库,view出来的资料就是*2后的,
我写法都是看范例拼凑的,我会改进的
...

按照你的說法
不就每次到該方法時
數量都會 *2 ?

Maracuj_JfQ4E 发表于 2016-2-16 13:38:12

我要的是我输入值,每个值都*2印出来,但照你说的,好像会一直回圈*2:'(

Closer 发表于 2016-2-16 13:42:31

Maracuj_JfQ4E 发表于 2016-2-16 13:38
我要的是我输入值,每个值都*2印出来,但照你说的,好像会一直回圈*2

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

你的需求應該比較偏向於
一個輸入框送出後 *2 銷售數量 ?
那可以考慮看看 redirect() 而非 $this->load->view();

Maracuj_JfQ4E 发表于 2016-2-16 15:41:12

其实我主要的是可以做运算,因为我设一些变数,讯息都会显示无支援,或者无法辨识,宣告变数也是错误讯息.
所以我只要简单的运算.就是知道怎么把运算结果放进去.显示出来:(

Closer 发表于 2016-2-16 15:59:41

本帖最后由 Closer 于 2016-2-16 16:09 编辑

Maracuj_JfQ4E 发表于 2016-2-16 15:41
其实我主要的是可以做运算,因为我设一些变数,讯息都会显示无支援,或者无法辨识,宣告变数也是错误讯息.
所以 ...

<?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
// 模型端 :
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;
      }

}
页: [1] 2
查看完整版本: 请教一个问题,关于资料库取出值做运算