从数据库中分配多个数据并将其一起显示

时间:2015-07-04 11:23:08

标签: php mysql sql database mysqli

我有一个看起来像这样的表结构,这里将随机生成orderid。

id  orderid  product  Cost  userid
1     1       P1       C1    1
2     1       P2       C2    1
3     1       P3       C3    1
4     2       P4       C2    1
5     2       P5       C1    1
6     3       P2       C2    2
7     3       P3       C3    2
8     4       P4       C2    3
9     4       P5       C1    3

我希望根据orderid(按照用户ID)来匹配这些数据,然后将这些数据显示为一个表格,其中具有相同orderid的产品应该一起显示。

它就像一个购物车,我在购物车中放置多个产品,当我确认订单(所有产品在一起)时,会为该订单生成一个唯一的订单。现在我想显示符合该orderid的产品,并希望在每个orderid下显示所有产品

视图应该看起来像这样(根据用户ID)

enter image description here

我目前用于显示数据的代码是

 <?php
    $sql = "SELECT * FROM cart where userid='".$userid."'";
    $result = mysqli_query($con, $sql);
    if (mysqli_num_rows($result) > 0) 
        {
            while($row=mysqli_fetch_assoc($result))
                {
                    /*
                    *
                    code for displaying tabular data
                    *
                    */
                }
        }
    ?>

问题是我无法将他们聚在一起

2 个答案:

答案 0 :(得分:0)

使用ORDER BY

 <?php
    $sql = "SELECT * FROM cart where userid='".$userid."' ORDER BY orderid asc, id asc";
    $result = mysqli_query($con, $sql);
    if (mysqli_num_rows($result) > 0) 
        {
            while($row=mysqli_fetch_assoc($result))
                {
                    /*
                    *
                    code for displaying tabular data
                    *
                    */
                }
        }
    ?>

答案 1 :(得分:0)

请解决此问题。但我没有原始数据可供测试

<?php
    $sql = "SELECT * FROM cart where userid='".$userid."'";
    $result = mysqli_query($con, $sql);
    $test=NULL /// first store data in a single array.
    if (mysqli_num_rows($result) > 0) 
    {
        while($row=mysqli_fetch_assoc($result))
        {
            $test[$row['orderid']][]=$row;
        }
    }
    //Now we have stored all data in $test  

    // test output. please add gui as u need 
    foreach($test as $orderid => $products)
    {
        echo'<br/>OrderID: '.$orderid;
        foreach($products as $p)
        {
            echo'<br/>Product: '.$p['product'].' Cost:'.$p['cost'];
        }
    }
    ?>

这个实现的好处是所有数据都在数组中获取,以便它可以作为一个整体返回。