2013-11-01 69 views
0

我試圖從我的數據庫中提取數據,並希望通過該標識在名爲order_ids的列中對公共值進行分組。按公共標識分組

這是國家目前我得到

Order_Id  | Product Name 

------------------------------- 
    10001  | iPhone 5 
    10001  | Blackberry 9900 
    10002  | Galaxy S 
    10003  | Rhyme 
    10004  | Google Nexus 
    10005  | Razr 
    10006  | iPad Air 

我的數據,並且這是我想要得到它在

Order_Id  | Product Name 

------------------------------- 
    10001  | iPhone 5 
        Blackberry 9900 
    10002  | Galaxy S 
    10003  | Rhyme 
    10004  | Google Nexus 
    10005  | Razr 
    10006  | iPad Air 

這裏的狀態怎麼得到導致我的控制器文件

foreach($results_query as $results_custom) { 
     $this->data['result_custom'][] = array(
      'model' => $results_custom['product_name'], 
      'order_number' => $results_custom['order_id'] 
     ); 
    } 

這裏是我在我的視圖文件顯示它

<?php foreach ($results_custom as $result) { ?> 
<li><?php echo $result['model']; ?></li> <br /> 
<li><?php echo $result['order_number']; ?></li><br /> 
<?php } ?> 

是否有可能讓我的數據顯示像或者在該狀態下,通過使用SQL或PHP?請讓我知道,如果你想看到我的查詢。

+0

處理PHP期間的循環。 –

回答

0

在PHP會更容易做它。由於我沒有PHP環境來測試它,我會告訴你一些邏輯來做到這一點。 不一定工作的代碼。那是因爲你沒有提供你做了什麼

<? 
    $sql = "select order_id, product name from ..... order by order_id"// rest of sql code .... 
    //here you iterate your results 
    $previousId = ""; //var to store previous id 
    while($fetch...){ 
     if ($fetchedID != $previousId){ 
     echo $fetchedId . "-" . $fetchedProductName; 
     }else{ 
     echo $fetchedProductName; 
     } 
     $previousId = $fetchedID; 
    } 
?> 

這應該做的。 當你更新你的代碼,這是你的解決方案:

<?php 
    $lines = ""; //to make code cleaner; 
    $previousModel = ""; 
    foreach ($results_custom as $result) { 
    if ($previousModel != $result['model']){ 
     $line .= "<li>" . $result['model'] . "</li>"; 
    }else{ 
     $line .= "<li></li>"; 
    } 
    $line .= "<li>" . $result['model'] . "</li><br />"; 
    $previousModel = $result['model']; 
    } 
    echo $line; 
<?php } ?> 
+0

'<?'<=假設短標籤是「開」;-) –

+0

@弗雷德 - ii-年,這就是我習慣於:) –

+0

我已更新我的問題,請看看你是否可以。謝謝! – James

0

你或許可以在MySQL中完成這項工作,但如果你只是創建一個php循環,它可能會更容易。大多數人喜歡一個foreach循環,但我喜歡while循環:

$orderid = "number"; 
$order_query = mysql_query("SELECT * FROM ordertable WHERE Order_Id = '$orderid'"); 
while($order_data = mysql_fetch_array($order_query)){ 
    $ordername = stripslashes(mysql_real_escape_string($order_data['Product Name'])); 
    echo $ordername.'<br />'; 
} 

如果需要此爲所有訂單,你可以刪除搜索一個特定的順序:

$order_query = mysql_query("SELECT * FROM ordertable ORDER BY Order_Id ASC"); 
while($order_data = mysql_fetch_array($order_query)){ 
    $orderid = mysql_real_escape_string($order_data['Order_Id']); 
    $ordername = stripslashes(mysql_real_escape_string($order_data['Product Name'])); 
    echo 'ID#: '.$orderid.' - '.$ordername.'<br />'; 
} 
+0

只是一個提示,你可以在mysql中完成 –

+0

如果你有機會,你能看看我更新的代碼嗎?這就是我目前使用的。謝謝! – James

+0

@iamde_coder不是performatic做兩次相同的sql。 –