codeigniter 显示表格行跟随条件-代码点火器

ymdaylpp  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(86)

我有一个表在我们的管理面板。表显示优惠券和交易,但为了更好地阅读,我们希望有一个分裂表。1为优惠券和1为交易。
我想不出如何只显示数据根据状态,如果交易或优惠券.
下面是我获取所有数据并创建表的循环。

<tbody>
    <?php 
    $this->load->helper('text');
    $count = 0;
    foreach ($result as $key => $value) {
        $count++;?>  
        <tr>
        <td><?php echo $count;?></td>
        <td><?php echo  wordwrap($value->deal_title,25,"<br>\n");?></td>
        
        <td> <?php 
                if($value->deal_type == 0){
                    echo 'Deal';
                }else{
                    echo 'Coupon';
                }
            ?>  </td>
        
        <td> <?php 
                $ext = explode(' ', $value->created_at);
                echo $ext[0];
            ?>
            </td>
        <td>
            <?php 
                $user_details = get_likes($value->id);
                echo @$user_details[0]->likes; 
            ?>
        </td>
            <td>
            <?php 
                if($value->deal_status == 1){
                    echo 'Not published';
                }else{
                    echo 'Published';
                }
            ?>
        </td>                                
        
        </tr>
    <?php }?>
</tbody>
s71maibg

s71maibg1#

无论您想要两个表还是一个表中间的空行,我强烈建议您几乎完全在控制器层准备数据负载,并将数据传递到视图。这意味着您需要操作模型数据,以迭代方式调用get_likes(),并可能对数据进行排序或将结果分组到三级数据集中。
对于分组,有效负载应该是包含对象索引数组的关联数组。
下面是不需要php标签的视图的大致外观。记住,我们的责任不是收集或处理数据,而是呈现数据。

$rowTemplate= <<<HTML
    <tr>
        <td>%d</td>
        <td>%s</td>
        <td>%s</td>
        <td>%s</td>
        <td>%s</td>
        <td>%s</td>
    </tr>

HTML;

foreach ($groups as $groupName => $groupRows) {
    printf('<table id="%s">', $groupName);
        foreach ($groupRows as $index => $row) {
            printf(
                $rowTemplate,
                $index + 1,
                wordwrap($row->title, 25, "<br>\n"),
                ucfirst($groupName),
                strstr($row->created_at, ' ', true),
                $row->user_likes,
                $row->status == 1 ? 'Not published' : 'Published'
            );
        }
    echo '</table>';
}

至于你的控制器,它应该以类似这样的内容结束:

$groups = [
    'Deals' => [
        (object)[
            'title' => 'foo',
            'created_at'= '2022-02-14 15:35:56',
            'user_likes' => get_likes($value->id)[0]->likes ?? 0,
            'status' => 1
        ],
        (object)[
            ...
        ],
        ...
    ],
    'Coupons' => [
        (object)[
            ...
        ],
        ....
    ]
];

$this->load->view('part_1_3', ['groups' => $groups]);

当然,我对$groups的静态声明将需要替换为您对模型的调用和其他准备工作。

相关问题