我正在做类似系统通知的事情。我想按日期对这两个foreach
中的数据进行排序,但我不知道如何。请帮帮我。
我有这段代码:
$view_like_product=$this->db->query("SELECT lp.`product_id`, lp.`date`, lp.customer_id FROM `like_product` as lp, `supplier_products` as sp WHERE sp.`product_id` = lp.`product_id` AND sp.`supplier_id`=".$customer_id." ORDER BY lp.`date` desc")->result();
$view_like_supplier=$this->db->query("SELECT DISTINCT ls.`customer_id`,ls.`date` FROM `like_supplier` as ls, `supplier_products` as sp WHERE sp.`supplier_id`=".$customer_id." AND sp.`product_id` = ls.`product_id`")->result();
$i=1;
foreach($view_like_product as $items){
//Limit
if($i==4) break;
$product=$this->db->query("SELECT p.`product_name`,pi.`product_image` FROM `supplier_products` as p,`supplier_product_images` as pi WHERE pi.`product_id`=p.`product_id` AND p.`product_id` ='".$items->product_id."' GROUP BY pi.`product_id` ")->row();
$supplier=$this->db->query("SELECT c.`customer_id`,c.`first_name`,c.`last_name`,c.`company_name`,c.`company_pic` FROM `customers` as c, `like_supplier` as ls WHERE c.`customer_id`='".$items->customer_id."'")->row();
?>
<div class="ui">
<table border="1">
<tr>
<td style="font:normal 12px Arial !important;"><img src="<?php echo base_url(); ?>company_pic/<?php echo $supplier->company_pic; ?>" height="40" width="40" /></td>
<td style="font:normal 12px Arial !important;"><?php echo $supplier->company_name; ?> </td>
<td>has liked :</td>
<td style="font:normal 12px Arial !important;"> <?php echo $product->product_name; ?></td>
<td><img src="<?php echo base_url(); ?>supplier_products/<?php echo $product->product_image; ?>" height="40" width="40" /></td>
<td style="font:normal 12px Arial !important;"><?php echo $items->date; ?></td></tr></table>
</div>
<?php $i++; } ?>
<!-- Notif Like Supplier -->
<?php
$i=1;
foreach($view_like_supplier as $items){
//Limit
if($i==4) break;
$supplier=$this->db->query("SELECT `customer_id`,`first_name`,`last_name`,`company_name`,`company_pic` FROM `customers` WHERE `customer_id`=".$customer_id."")->row();
$supplier_has=$this->db->query("SELECT c.`customer_id`,c.`first_name`,c.`last_name`,c.`company_name`,c.`company_pic` FROM `customers` as c, `like_supplier` as ls WHERE c.`customer_id`=".$items->customer_id."")->row();
?>
<div class="ui">
<table border="1">
<tr>
<td style="font:normal 12px Arial !important;"><img src="<?php echo base_url(); ?>company_pic/<?php echo $supplier_has->company_pic; ?>" height="40" width="40" /></td>
<td style="font:normal 12px Arial !important;"><?php echo $supplier_has->company_name; ?> </td>
<td>has liked :</td>
<td style="font:normal 12px Arial !important;"> <?php echo $supplier->company_name; ?></td>
<td><img src="<?php echo base_url(); ?>company_pic/<?php echo $supplier->company_pic; ?>" height="40" width="40" /></td>
<td style="font:normal 12px Arial !important;"><?php echo $items->date; ?></td></tr></table>
</div>
<?php $i++; }?>
答案 0 :(得分:0)
通过附加ORDER BY
子句来更改第二个查询:
$view_like_supplier=$this->db->query("SELECT DISTINCT ls.customer_id,ls.date
FROM like_supplier as ls, supplier_products as sp
WHERE sp.supplier_id=".$customer_id."
AND sp.product_id = ls.product_id
ORDER BY ls.date")->result();
答案 1 :(得分:0)
您尝试做的事情可以通过UNION
完成,但需要了解您的目标。我举一个简单的例子:
表X包含列A(varchar),B(整数)和C(日期)。 表Y包含M(varchar),N(浮点)和C(日期)列。
您希望混合2个表中的行,按C排序。
SELECT 'X' as src, C, A, B, '' as M, 0.0 as N
FROM X
UNION
SELECT 'Y', '', 0, C, M, N
FROM Y
ORDER BY C
现在,您生成的查询将包含以下列:
行将在2个表之间混合,并由C列排序。
现在当你处理它时,你会做这样的事情:
while ($row = fetch()) {
if ($row['src'] == 'X')
echo "$row[C]: $row[A] $row[B]<br />\n";
else // coming from Y table
echo "$row[C]: $row[M] $row[N]<br />\n";
}