在php查询中排序行

时间:2017-07-14 10:48:30

标签: php mysql

我有一个包含字段的表:id,number,title。它显示销售清单。在一次销售中,可能有几个标题。 我有这段代码:

$todbprod = $mysqli->query('SELECT waybills.waybill_id AS id, waybills.goods_id AS number, nalvmag.name AS title
 FROM `waybills`, `nalvmag` 
 WHERE waybills.goods_id = nalvmag.id ORDER BY waybills.waybill_id');
while($row = $todbprod->fetch_array())
{

echo "sale: ".$row['id']."<br>\n";
echo "product: ".$row['number']."\n";
echo "name: ".$row['title']."<hr>\n"; 
} 

现在输出如下:

 - sale 01, title 01
 - sale 01, title 02
 - sale 01, title 03
 - sale 02, title 01

我想提到清单:

 - sale 01
   - title 01
   - title 02
   - title 03
 - sale 02
   - title 01

2 个答案:

答案 0 :(得分:2)

假设您的结果集处于销售标题订单中,您可以尝试使用以下逻辑进行打印:

如果我们进行了之前未见过的新销售,请打印该销售 如果在上面打印,请在可能的销售后打印标题。

$sale = NULL;
while ($row = $todbprod->fetch_array())
{
    $new_sale = $row['id'];
    if ($new_sale != $sale) {
        $sale = $new_sale;
        echo "sale: ".$sale."<br>\n";
    }
    echo "name:   ".$row['title']."<hr>\n";
} 

答案 1 :(得分:0)

$array =  array(
        array('sale 01', 'title 01'),
        array('sale 01', 'title 02'),
        array('sale 01', 'title 03'),
        array('sale 02', 'title 01')
    );
$new = array();
foreach($array as $row){
    $new[$row[0]][] = $row[1];
}
echo "<pre>";print_r($new);

$ new包含你想要的数组......