2015-09-24 10 views
9

Ich habe ihre Daten anzeigen: Produkt und Wagen, ich mag diese zwei Tabellen kombinieren und zeigen die Daten in einem Array nach einem bestimmten Zustand, wie folgt:zwei Tabellen kombinieren und 2 Tabellen in einem Array

alle Produkte, die unter einer bestimmten Kategorie erhalten sollen, angezeigt und wenn ein bestimmte Benutzer hat jedes Produkt unter den gegebenen Produkten gekauft dann seine Einzelheiten sollten auch vor diesem Produkt

der Code, den ich bis zur Ausschöpfung angezeigt zu erledigen jetzt ist

$catid = $_REQUEST['catid']; 
$userid  = $_REQUEST['userid']; 

$sql = "select * from productsize where catid = '".$catid."' GROUP BY productid"; 
$result = mysqli_query($con, $sql); 
if (mysqli_num_rows($result) > 0) 
    { 
     while($row = mysqli_fetch_assoc($result)) 
      { 
       $rows['catid'] = $row['catid']; 
       $rows['catname'] = $row['catname']; 
       $rows['productid'] = $row['productid']; 
       $rows['prodname'] = $row['prodname']; 
       $rows['prodimg'] = $row['prodimg']; 
       $row2[]=$rows; 
      } 
    } 

echo "<pre>"; 
print_r($row2); 
echo "</pre>"; 

Es gibt ein Array wie diese

Array 
(
    [0] => Array 
     (
      [catid] => 2 
      [catname] => C1 
      [productid] => 13 
      [prodname] => P1 
      [prodimg] => 
     ) 

    [1] => Array 
     (
      [catid] => 2 
      [catname] => C1 
      [productid] => 14 
      [prodname] => P1 
      [prodimg] => 
     ) 

    [2] => Array 
     (
      [catid] => 2 
      [catname] => C1 
      [productid] => 15 
      [prodname] => P3 
      [prodimg] => 
     ) 

) 

Aber die endgültige Anordnung, die ich anstelle der oben Array wollen, ist

Array 
(
    [0] => Array 
     (
      [catid] => 2 
      [catname] => C1 
      [productid] => 13 
      [prodname] => P1 
      [prodimg] => 
      [size] => Array 
       (
        [0] => small 
        [1] => medium 
        [2] => large 
        [3] => perpiece 
       ) 
      [cost] => Array 
       (
        [0] => 10 
        [1] => 20 
        [2] => 30 
        [3] => 12 
       ) 
      [purchasedsize] => Array 
       (
        [0] => small 
        [1] => 0 
        [2] => large 
        [3] => 0 
       ) 
      [purchasedquantity] => Array 
       (
        [0] => 2 
        [1] => 0 
        [2] => 1 
        [3] => 0 
       ) 
      [userid] => 1 
     ) 

    [1] => Array 
     (
      [catid] => 2 
      [catname] => C1 
      [productid] => 14 
      [prodname] => P1 
      [prodimg] => 
      [size] => Array 
       (
        [0] => small 
        [1] => medium 
        [2] => large 
        [3] => 0 
       ) 
      [cost] => Array 
       (
        [0] => 15 
        [1] => 20 
        [2] => 25 
        [3] => 0 
       ) 
      [purchasedsize] => Array 
       (
        [0] => 0 
        [1] => medium 
        [2] => 0 
        [3] => 0 
       ) 
      [purchasedquantity] => Array 
       (
        [0] => 0 
        [1] => 1 
        [2] => 0 
        [3] => 0 
       ) 
      [userid] => 1 
     ) 

    [2] => Array 
     (
      [catid] => 2 
      [catname] => C1 
      [productid] => 15 
      [prodname] => P3 
      [prodimg] => 
      [size] => Array 
       (
        [0] => 0 
        [1] => medium 
        [2] => 0 
        [3] => perpiece 
       ) 
      [cost] => Array 
       (
        [0] => 0 
        [1] => 20 
        [2] => 0 
        [3] => 18 
       ) 
      [purchasedsize] => Array 
       (
        [0] => 0 
        [1] => 0 
        [2] => 0 
        [3] => 0 
       ) 
      [purchasedquantity] => Array 
       (
        [0] => 0 
        [1] => 0 
        [2] => 0 
        [3] => 0 
       ) 
      [userid] => 0 
     ) 

) 

Ansicht der Produkttabelle (Wie Sie das sehen Produkttabelle trägt eine Produkt-ID und unter jeder Produkt-ID gibt es max 4 Größe (es gibt nicht mehr als 4))

id catid catname productid prodsize cost prodname prodimg 
1 2  C1  13  small  10 P1 
2 2  C1  13  medium 20 P1 
3 2  C1  13  large  30 P1 
4 2  C1  13  perpiece 12 P1 
5 2  C1  14  small  15 P2 
6 2  C1  14  medium 20 P2 
7 2  C1  14  large  25 P2 
8 2  C1  15  perpiece 18 P3 
9 2  C1  15  medium 20 P3 

Ansicht der Warenkorb Tabelle

id catid catname userid productid prodname prodsize quantity prodcost 
1  2  C1  1  13  P1  large  1   30  
2  2  C1  1  13  P1  small  2   10  
3  2  C1  1  14  P2  medium  1   20 

Kann jemand bitte helfen Sie mir die gewünschte Array als Ergebnis zu bekommen?

Antwort

1

diesem

$catid = $_REQUEST['catid']; 
$userid  = $_REQUEST['userid']; 

$sql= "SELECT p.catid, p.catname, p.productid, p.prodimg, 
    GROUP_CONCAT(p.prodsize ORDER BY p.id ASC) as size, 
    GROUP_CONCAT(p.cost ORDER BY p.id ASC) as cost, p.prodname, 
    GROUP_CONCAT(c.prodsize,'-',c.quantity) as cart_details, GROUP_CONCAT(DISTINCT(c.userid)) as user_id 
    FROM products p 
    LEFT JOIN cart c ON(c.productid = p.productid AND c.userid = '$userid' AND p.prodsize = c.prodsize) 
    WHERE p.catid ='$catid' 
    GROUP BY p.productid 
    ORDER BY user_id DESC, p.productid ASC"; 


$result = mysql_query($sql); 


if (mysql_num_rows($result) > 0) 
    { 
     $i = 0; 
     while($row = mysql_fetch_assoc($result)) 
      { 
       $rows[$i]['catid'] = $row['catid']; 
       $rows[$i]['catname'] = $row['catname']; 
       $rows[$i]['productid'] = $row['productid']; 
       $rows[$i]['prodname'] = $row['prodname']; 
       $rows[$i]['prodimg'] = $row['prodimg']; 
       $final_size = array_fill(0, 4, '0'); 
       $final_cost = array_fill(0, 4, '0'); 

       $size = explode(',', $row['size']); 
       $cost = explode(',', $row['cost']); 
       foreach($size as $k=>$sizecol) { 
        switch($sizecol) { 
         case 'small': 
          $array_key = '0'; 
          break; 
         case 'medium': 
          $array_key = '1'; 
          break; 
         case 'large': 
          $array_key = '2'; 
          break; 
         case 'perpiece': 
          $array_key = '3'; 
          break; 
        } 
        $final_size[$array_key] = $sizecol; 
        $final_cost[$array_key] = $cost[$k]; 

       } 


       $cart_details = explode(',', $row['cart_details']); 
       $purchasedsize = array_fill(0, 4, '0'); //Since you displayed this array has 4 values only 
       $purchasedquantity = array_fill(0, 4, '0'); 
       foreach($cart_details as $cart) { 
        if($cart != '') { 
         $details = explode('-', $cart); 
         $key = array_search($details[0], $size); 

         $purchasedsize[$key] = $details[0]; 
         $purchasedquantity[$key] = $details[1]; 
        } 

       } 

       $rows[$i]['size'] = $final_size; 
       $rows[$i]['cost'] = $final_cost; 
       $rows[$i]['purchasedsize'] = $purchasedsize; 
       $rows[$i]['purchasedquantity'] = $purchasedquantity; 
       $rows[$i]['userid'] = $row['user_id']; 

       $i++; 
      } 
    } 

echo "<pre>"; 
print_r($rows); 
    echo "</pre>"; 

Der Ausgang Array

Array 
(
[0] => Array 
    (
     [catid] => 2 
     [catname] => c1 
     [productid] => 13 
     [prodname] => P1 
     [prodimg] => 
     [size] => Array 
      (
       [0] => small 
       [1] => medium 
       [2] => large 
       [3] => perpiece 
      ) 

     [cost] => Array 
      (
       [0] => 10 
       [1] => 20 
       [2] => 30 
       [3] => 12 
      ) 

     [purchasedsize] => Array 
      (
       [0] => small 
       [1] => 0 
       [2] => large 
       [3] => 0 
      ) 

     [purchasedquantity] => Array 
      (
       [0] => 2 
       [1] => 0 
       [2] => 1 
       [3] => 0 
      ) 

     [userid] => 1 
    ) 

[1] => Array 
    (
     [catid] => 2 
     [catname] => c1 
     [productid] => 14 
     [prodname] => P2 
     [prodimg] => 
     [size] => Array 
      (
       [0] => small 
       [1] => medium 
       [2] => large 
       [3] => 0 
      ) 

     [cost] => Array 
      (
       [0] => 15 
       [1] => 20 
       [2] => 25 
       [3] => 0 
      ) 

     [purchasedsize] => Array 
      (
       [0] => 0 
       [1] => medium 
       [2] => 0 
       [3] => 0 
      ) 

     [purchasedquantity] => Array 
      (
       [0] => 0 
       [1] => 1 
       [2] => 0 
       [3] => 0 
      ) 

     [userid] => 1 
    ) 

[2] => Array 
    (
     [catid] => 2 
     [catname] => C1 
     [productid] => 15 
     [prodname] => P3 
     [prodimg] => 
     [size] => Array 
      (
       [0] => 0 
       [1] => medium 
       [2] => 0 
       [3] => perpiece 
      ) 

     [cost] => Array 
      (
       [0] => 0 
       [1] => 20 
       [2] => 0 
       [3] => 18 
      ) 

     [purchasedsize] => Array 
      (
       [0] => 0 
       [1] => 0 
       [2] => 0 
       [3] => 0 
      ) 

     [purchasedquantity] => Array 
      (
       [0] => 0 
       [1] => 0 
       [2] => 0 
       [3] => 0 
      ) 

     [userid] => 
    ) 

) 
+0

Versuchen Sie, obwohl ich ein Array erhalten, aber die Werte darin sind nicht korrekt – kavi

+0

mein editied Code überprüfen. Ich habe die Abfrage geändert –

+0

@still geben falsche Array – kavi