【问题标题】:Display data from a query - I can't display it properly显示来自查询的数据 - 我无法正确显示
【发布时间】:2015-09-14 06:05:55
【问题描述】:

我正在尝试显示查询的结果,但无法按应有的方式显示。 我有两张桌子 - ordersheaderorderitems

ordersheader 是订单表。它的结构是: idOrder,idCustomer,createdDate,orderDueDate.

我的表'orderitems'包含每个订单的单独订单项。它具有以下结构: orderitem_id,idOrder,item_number,eggSize,quantity,price.

这两个表在 idOrder 上连接。 ordersheader 中的一行对应于orderitems 中的许多行,因为一个订单中可能包含许多订单项。 我的问题是我无法正确显示它们。它必须像这样显示:

http://prntscr.com/7lwnz7

当您单击详细信息时,它应该如下所示:

http://prntscr.com/7lwoan

现在,它们在新行上显示每个订单项,如下所示:

http://prntscr.com/7lworg 我必须使每个 idOrder 的结果显示在一行中。 我应该使用内部循环以及如何做到这一点? 我的模型是:

<?php
function getOrders(){
    $date = new DateTime("now");
    $curr_date = $date->format('Y-m-d');
    $this->db->select('ordersheader.*,customer.name,orderitems.*');
    $this->db->from('ordersheader'); 
    $this->db->join('orderitems', 'orderitems.idOrder = ordersheader.idOrder');
    $this->db->join('customer', 'customer.idCustomer = ordersheader.idCustomer');
    $this->db->where('DATE(orderDueDate)', $curr_date);

    $query = $this->db->get();
    return $query->result();

我的看法是:

<?php
 if($orderlist){
foreach($orderlist as $row) {
 ?> <tr class="overview">
                        <td><?php echo $row->idOrder; ?></td>
                        <td class="text-center"><img src="<?= base_url();?>/assets/images/tick.png"></td>
                        <td><?php echo $row->name; ?></td>
                        <td><?php echo $row->eggSize; ?></td>
                        <td><?php echo $row->quantity; ?></td>
                        <td>
                            <div class="progress">
                                <div class="progress-bar" role="progressbar" style="width: 60%;">
                                    60%
                                </div>
                            </div>
                        </td>
                        <td>18:00</td>
                        <td><button type="button" class="btn btn-link btn-xs view-full-order">Full</button></td>
                    </tr> <?php for($i=0;$i<count($row->eggSize); $i++) { ?>
                    <tr class="full hide">
                        <td></td>
                        <td></td>
                        <td></td>
                        <td><?php echo $row->eggSize; ?></td>
                        <td><?php echo $row->quantity; ?></td>
                        <td>
                            <div class="progress">
                                <div class="progress-bar progress-bar-info" role="progressbar" style="width: <?php echo $rand; ?>%;">
                                  <?php echo $rand; ?>%  
                                </div>
                            </div>
                        </td>
                        <td>14:00</td>
                        <td></td>
                    </tr><?php } ?>
 <?php } } ?>
             </tbody></table>

【问题讨论】:

  • $this-&gt;db-&gt;where('DATE(ordersheader.orderDueDate)', $curr_date);试试你的qyery
  • 我做到了:$this->db->where('DATE(orderDueDate)', $curr_date);此列 orderDueDate 仅在表 ordersheader 中。问题是每个订单有很多订单项,我想为每个订单将它们组合成一行。
  • 在查询中使用 group by
  • 我试过这个,但是当我使用 group by 时,它只显示 orderitems 中的一个 orderitem。我必须为每个订单都展示它们。
  • 现在我在我的模型中添加了: $this->db->group_by('orderitems.idOrder');但是如何显示每个订单的所有 eggSize 呢?

标签: codeigniter


【解决方案1】:
    <?php
    function getOrders(){
        $date = new DateTime("now");
        $curr_date = $date->format('Y-m-d');
        $this->db->select('ordersheader.*,customer.name,GROUP_CONCAT(orderitems.item_number SEPARATOR ",") as item_number');
 $this->db->select('ordersheader.*,customer.name,GROUP_CONCAT(orderitems.priceSEPARATOR ",") as price');
 $this->db->select('ordersheader.*,customer.name,GROUP_CONCAT(orderitems.eggSize SEPARATOR ",") as eggSize');
        $this->db->from('ordersheader'); 
        $this->db->join('orderitems', 'orderitems.idOrder = ordersheader.idOrder');
        $this->db->join('customer', 'customer.idCustomer = ordersheader.idCustomer');
        $this->db->where('DATE(orderDueDate)', $curr_date);

        $query = $this->db->get();
        return $query->result();
    ?>

【讨论】:

  • 谢谢!在我添加的模型中: $this->db->group_by('orderitems.idOrder');但是当您单击“详细信息”时,如何使这些项目位于单独的行中?当您单击确定 idOrder 的“详细信息”时,应该只打开此 idOrder 的单独订单项。我应该使用内循环吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-23
相关资源
最近更新 更多