代码之家  ›  专栏  ›  技术社区  ›  Smudger

Codeigniter-通过将值传递给模型查询并输出结果的post信息进行循环

  •  1
  • Smudger  · 技术社区  · 13 年前

    我已将表单数据传递给新的控制器/视图。

    我想循环遍历$_POST数组,将值传递给控制器/模型,查询数据库并将结果返回到要显示的视图。

    因此,我的视图中有以下代码:

    foreach($_POST as $key => $value) //$key is productcode eg '4560'
        {
           $this->sales_model->get_productdetails($this->input->post('$key'))
           echo "Price: ".$price."<br>";
           echo "Pieces: ".$pieces."<br>";
           echo "Cubic Meters: ".$cubicmeters."<hr>";
    
        }
    

    这是我的模型:

    function get_productdetails($productcode)
    {
        $this->db->select('price,pieces,cubicmeters');
        $this->db->from('ProductList');
        $this->db->where('productcode',$productcode);
        $q = $this->db->get();
        if($q->num_rows() > 0) 
        {
            return $q->row_array(); 
        }
    }
    

    控制器: 函数new_auto_spread_details() { $this->负载->视图(“销售/新建_自动铺展_订单行”); }

    这不能正常工作。如何在视图上输出/显示查询结果?能做到这一点吗?如果不能,如何通过最佳实践实现这一点?

    一如既往地感谢,

    2 回复  |  直到 13 年前
        1
  •  4
  •   Randall    13 年前

    您应该使用CodeIgniter的输入类来获取所有的post值。

    $formValues = $this->input->post(NULL, TRUE);
    

    然后在控制器中设置一个中间值来保存数据。

    $products = array();
    
    foreach($formValues as $key => $value) 
    {
        $products[] = $this->sales_model->get_productdetails($key)
    }
    
    $data = array();
    $data["products"] = $products;
    

    将中介传递给视图。

    $this->load->view('sales/new_autospread_order_lines', $data);
    

    在您的评审中,将$data数组中的每个散列项作为变量进行引用。

    <?php foreach($products as $product) { ?>
    <p>
        <?php echo $product["price"]; ?>
    </p>
    <?php } ?>
    
        2
  •  0
  •   Samutz    13 年前

    $this->input->post('$key') 应该是 $this->input->post($key)

    任何以开头的内容 $this-> 应该由控制器调用,而不是由视图调用。

    您的控制器应该如下所示:

    function new_auto_spread_details()
    {
        $products = array();
        foreach($_POST as $key => $value) //$key is productcode eg '4560'
        {
            /* your model method is returning an array,
               so you need to assign it to a variable */
            $products[] = $this->sales_model->get_productdetails($key)
        }
    
        $this->load->view('sales/new_autospread_order_lines', array(
            'products' => $products
        ));
    }
    

    然后在视图中:

    <?php foreach($products as $product): ?>
        Price: <?php echo $product['price'] ?><br>
        Pieces: <?php echo $product['pieces'] ?><br>
        Cubic Meters: <?php echo $product['cubicmeters'] ?><br>
    <?php endforeach; ?>