我在管理面板中有一个表。表格显示优惠券和交易,但为了更好地阅读,我们希望有一个拆分的表格。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>
无论您想要两个表,还是在一个表中间有一个空行,我强烈建议您几乎完全在控制器层准备数据负载,并将数据传递到视图。这意味着您将需要操作模型数据,以迭代的方式调用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
的静态声明将需要替换为您对模型的调用和其他准备工作。