0

我希望在我的视图中显示数据库查询的结果,同时为每一行提供一个唯一的 ID。

我的模型是:

function get_load_lines($ordernumber)
{
    $this->db->select('product,pricepercube,qty,linecost,linediscount,cubicvolume,bundles,treated,autospread');
    $this->db->from('Customer_Order_Lines');
    $this->db->where('CustomerOrderID',$ordernumber);
    $q = $this->db->get();
    if($q->num_rows() > 0) 
    {
        return $q->row_array(); 
    }
}

我的控制器是:

function edit_order_lines() 
{
    $data = array(
        'ordernumber' =>$this->input->post('ordernumber'),
        'customer' =>$this->input->post('customer'),
        'loadlines' => $this->sales_model->get_load_lines($this->input->post('ordernumber'))
    );

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

如前所述,我想在我的视图中显示每一行。

所以我在我看来使用这段代码:

<table>
<?php
$i=1;
foreach ($loadlines as $row)
{ 
    echo "<tr>";
    echo "<td>".$i."</td>";
    echo "<td>".$row['product']."</td>";
    echo "<td>".$row['pricepercube']."</td>";
    echo "<td>".$row['qty']."</td>";
    echo "</tr>";
    $i++;
}
?>
</table>

这没有预期的结果。$i每个数组条目的增量,而不是每个数组行。

有关显示此数据的最佳方式的任何建议?

因此,如果需要 3 行,则需要以下内容:

在此处输入图像描述

4

2 回答 2

2

在您的模型中,尝试返回 a result_array,而不是 a row_array

return $q->result_array();

如果存在多个结果,则结果数组将返回所有结果,而行数组将仅返回一个。CodeIgniter 的用户指南解释了这些差异

你也可以让你的for 循环更整洁,$i像这样递增:

$i=1;
foreach ($loadlines as $row)
{ 
    echo "<tr>";
    echo "<td>".$i++."</td>";
    echo "<td>".$row['product']."</td>";
    echo "<td>".$row['pricepercube']."</td>";
    echo "<td>".$row['qty']."</td>";
    echo "</tr>";
} 
于 2013-05-13T13:14:49.647 回答
1

我不确定我是否清楚地理解了您的问题,但是为了编辑客户订单行(订单详细信息),您还应该在查询数据库时提取每个 Customer_Order_Lines 的 ID。(假设您的表 Customer_Order_Lines 具有称为 ID 的主键字段)。

 $this->db->select('id,product,pricepercube,q...');

然后,当您遍历结果时,请执行以下操作:

foreach ($loadlines as $row)
           { 
echo "<tr>";
echo "<td>".$row['id']."</td>";
echo "<td>".$row['product']."</td>";
echo "<td>".$row['pricepercube']."</td>";
echo "<td>".$row['qty']."</td>";
echo "</tr>";
$i++;
           }

这将为您提供每个订单行的特定唯一 ID(主键)。然后,您可以通过引用此 ID 更新每个订单行。

如果我误解了你的问题,请告诉我。

于 2013-05-13T13:10:54.817 回答