【问题标题】:Codeigniter: How do I display the value returned by a model function on a view textbox during data entryCodeigniter:如何在数据输入期间在视图文本框中显示模型函数返回的值
【发布时间】:2018-01-29 18:52:31
【问题描述】:

此问题基于下表。

procedures - id | procedure_name |cost

visits - id | visit_date | patient_id | notes | staff_id

visits_procedures - id | visit_id | procedure_id | quantity

payments - id | visit_id | payment_date | amount | payment_method_id | transanction_id | payment_status_id

付款表根据执行的程序数量记录在访问期间支付的总金额。 visits_procedures 表跟踪访问期间执行的程序数。在创建新付款时,我正在尝试使用模型中 get_visit_amount() 函数返回的值填充金额文本框。但是我收到错误“未定义的变量:数量”。我将不胜感激有关如何使这项工作的任何想法。下面是我的代码 sn-ps。

支付模式

public function get_visit_amount(){
        $this->db->select_max('id');
        $result= $this->db->get('visits')->row_array();
        $answer = $result['id']; 

        $this->db->select('sum(procedures.cost * visits_procedures.quantity) as amount, visits_procedures.visit_id');
        $this->db->from('procedures');
        $this->db->join('visits_procedures', 'visits_procedures.procedure_id = procedures.id', 'left'); 
        $this->db->where('visits_procedures.visit_id', $answer);       
        $query = $this->db->get()->row_array();
        return $query['amount'];
    }

付款控制器

    public function create() {
            if ($this->input->post('payment_method_id')) {
                $data['visit_id'] = $this->visit->get_latest_id();
                $data['payment_date'] = date('Y-m-d H:i:s');
                $data['amount'] = $this->payment->get_visit_amount();
                $data['payment_method_id'] = $this->input->post('payment_method_id');
                $data['transaction_id'] = $this->input->post('transaction_id');
                $data['payment_status_id'] = $this->input->post('payment_status_id');
//set flash data
            $this->session->set_flashdata('display_amount', $amount);
            redirect('/admin/payments/create');

                            $this->payment->insert($data);
                            redirect('/admin/payments', 'refresh');
            }

    .
    .// code to load page
    .

    }

Payments_create 视图

<form class="form-horizontal" role="form" method="POST" action="<?=base_url()?>admin/payments/create">
        .
        .//code
        .

    <div class="form-group">
              <label class="col-md-3 col-xs-12 control-label">Amount</label>
              <div class="col-md-6 col-xs-12">                                            
                <div class="input-group">
                    <span class="input-group-addon"><span class="fa fa-pencil"></span></span>
                    <input type="text" class="form-control" id="amount" name="amount" value="<?php echo $this->session->flashdata('display_amount'); ?>"/>
                </div>                                            
              </div>
        </div>
        .
        .//code
        .
</form>

【问题讨论】:

    标签: php codeigniter mysqli


    【解决方案1】:

    使用FlashData 存储信息。

    $this->session->set_flashdata('item', 'value');
    

    并在新页面中检索它

    $this->session->flashdata('item');
    

    【讨论】:

    • 我已经尝试过编辑代码(控制器和视图)中显示的 flashdata,但它没有工作。你能指出代码的任何问题吗? flashdata 是否适用于整数?我见过的所有示例都使用字符串,但我想显示的都是整数。
    • 您有两个重定向:$this-&gt;session-&gt;set_flashdata('display_amount', $amount); redirect('/admin/payments/create'); $this-&gt;payment-&gt;insert($data); redirect('/admin/payments', 'refresh'); 哪个是正确的重定向?请记住,flashdata 仅适用于一次服务器调用。所以如果你需要在第二次重定向时使用它,那么你需要在第一次重定向之后和第二次之前保存它。
    猜你喜欢
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多