user5237884
user5237884

Reputation:

fetch values from database and display result in array

I have a cart table that looks like this

id  catid  catname  userid  productid  prodimg  prodname   prodsize   prodcost  quantity    datee       timee     totalamount
1    1      CN1      1        1         ABC       P1        small       10        1        3/10/2015    10:00am      10       
2    1      CN1      1        1         ABC       P1        medium      20        1        4/10/2015    10:00am      20  
3    1      CN1      1        1         ABC       P1        large       30        1        3/10/2015    10:00am      30  
4    1      CN1      1        1         ABC       P1        perpiece    5         1        3/10/2015    10:00am      5   
5    1      CN1      1        2         CDF       P2        small       6         1        3/10/2015    10:00am      6       
6    1      CN1      1        2         CDF       P2        large       14        1        4/10/2015    10:00am      14  
7    1      CN1      2        1         ABC       P1        small       10        2        3/10/2015    10:00am      20        

I wish to display its data in an array (according to userid )in a particular manner, the resulting array that i want would look like this

Array
(
    [0] => Array
        (
            [catid] => 1
            [catname] => CN1
            [userid] => 1
            [productid] => 1
            [prodimg] => ABC
            [prodname] => P1
            [prodsize] => Array
                (
                    [0] => small
                    [1] => medium
                    [2] => large
                    [3] => perpiece
                )
            [prodcost] => Array
                (
                    [0] => 10
                    [1] => 20
                    [2] => 30
                    [3] => 5
                )   
            [quantity] => Array
                (
                    [0] => 1
                    [1] => 1
                    [2] => 1
                    [3] => 1
                )
            [datee] => Array
                (
                    [0] => 3/10/2015
                    [1] => 4/10/2015
                    [2] => 3/10/2015
                    [3] => 3/10/2015
                )
            [timee] => Array
                (
                    [0] => 10:00am
                    [1] => 10:00am
                    [2] => 10:00am
                    [3] => 10:00am
                )   
            [totalamount] => Array
                (
                    [0] => 10
                    [1] => 20
                    [2] => 30
                    [3] => 5
                )
        )

    [1] => Array
        (
            [catid] => 1
            [catname] => CN1
            [userid] => 1
            [productid] => 2
            [prodimg] => CDF
            [prodname] => P2
            [prodsize] => Array
                (
                    [0] => small
                    [1] => 0
                    [2] => large
                    [3] => 0
                )
            [prodcost] => Array
                (
                    [0] => 6
                    [1] => 0
                    [2] => 14
                    [3] => 0
                )   
            [quantity] => Array
                (
                    [0] => 1
                    [1] => 0
                    [2] => 1
                    [3] => 0
                )
            [datee] => Array
                (
                    [0] => 3/10/2015
                    [1] => 0
                    [2] => 4/10/2015
                    [3] => 0
                )
            [timee] => Array
                (
                    [0] => 10:00am
                    [1] => 0
                    [2] => 10:00am
                    [3] => 0
                )   
            [totalamount] => Array
                (
                    [0] => 6
                    [1] => 0
                    [2] => 14
                    [3] => 0
                )
        )
)    

code that i used is

$userid = $_REQUEST['userid'];

$sql= "SELECT catid, catname, productid, prodimg, GROUP_CONCAT(prodsize ORDER BY id ASC) as prodsize,  GROUP_CONCAT(prodcost ORDER BY id ASC) as prodcost, GROUP_CONCAT(quantity ORDER BY id ASC) as quantity, GROUP_CONCAT(datee ORDER BY id ASC) as datee,  GROUP_CONCAT(timee ORDER BY id ASC) as timee, 
      GROUP_CONCAT(totalamount ORDER BY id ASC) as totalamount   from cart WHERE userid ='$userid'";

        $result = mysqli_query($con, $sql);
        if (mysqli_num_rows($result) > 0) 
            {
                while($result = mysqli_fetch_assoc($result)) 
                    {
                        echo "<pre>";
                        print_r($result);
                        echo "</pre>";
                    }
            }

but it didnt show the array in the way i wanted, it showed the following array

Array
(
    [0] => Array
        (
            [catid] => 1
            [catname] => CN1
            [productid] => 1
            [prodimg] => ABC
            [prodsize] => small,medium,large
            [prodcost] => 10,20,30
            [quantity] => 1,1,1,1
            [datee] => 3/10/2015,4/10/2015,3/10/2015,3/10/2015
            [timee] => 10:00am,10:00am,10:00am,10:00am
            [totalamount] => 10,20,30,5
        )

)

can anyone please tell how to get the array in correct manner. One more important aspect of this array is that the array within prodsize should be fixed, i.e if the prod size is small then it will be stored in [0], medium in [1], large in[2] and perpiece in[3], if one of these values is not present then it should be 0 and prodcost, quantity datee and timee will also follow the same method

Upvotes: 2

Views: 118

Answers (2)

Juan Bonnett
Juan Bonnett

Reputation: 1853

I think you need al algorithm to reformat the results from the database. I can see all you want is to get those concatenated results and separate them in independent array keys.

I haven't been able to try it, but I suspect you might or might not need the $i index to allocate the elements. Try both.

Here's a way you might achieve that:

$formatedResult = [];
$i = 0;
while($result = mysqli_fetch_assoc($result)) 
{
    $formatedResult = $result;
    $formatedResult[$i]['prodsize'] = explode(',', $result[$i]['prodsize']);
    $formatedResult[$i]['prodcost'] = explode(',', $result[$i]['prodcost']);
    $formatedResult[$i]['quantity'] = explode(',', $result[$i]['quantity']);
    $formatedResult[$i]['datee'] = explode(',', $result[$i]['datee']);
    $formatedResult[$i]['timee'] = explode(',', $result[$i]['timee']);
    $formatedResult[$i]['totalamount'] = explode(',', $result[$i]['totalamount']);
    //Repeat with the other elements with similar formating
    $i++;
}

echo '<pre>';
print_r($formatedResult); //Now shows the array you want
echo '</pre>';

Upvotes: 1

Rohit Kumar
Rohit Kumar

Reputation: 1958

To get all results of sql select query in an array , just use fetch all function as below

$userid = $_REQUEST['userid'];

$sql= "SELECT catid, catname, productid, prodimg,
       GROUP_CONCAT(prodsize ORDER BY id ASC) as prodsize,          

       GROUP_CONCAT(prodcost ORDER BY id ASC) as prodcost,
       GROUP_CONCAT(quantity ORDER BY id ASC) as quantity, 
       GROUP_CONCAT(datee ORDER BY id ASC) as datee, 
       GROUP_CONCAT(timee ORDER BY id ASC) as timee, 
       GROUP_CONCAT(totalamount ORDER BY id ASC) as totalamount   
       from cart WHERE userid ='$userid'";

        $result = mysqli_query($con, $sql);
        // Fetch all
        $r=mysqli_fetch_all($result,MYSQLI_ASSOC);
        print_r($r);
        // Free result set
        mysqli_free_result($result);

Upvotes: 0

Related Questions