2015-04-02 60 views
0

我有一個查詢,它輸出以下數據:循環執行連接查詢

Treatment ID --------- Treatment_Name ---------- Customer_type 
1      Treatment 1    Ladies 
1      Treatment 1    Mens 
3      Treatment 2    Ladies 
4      Treatment 3    Mens 

我需要循環這個輸出的結構類似於此:

<div class="mens ladies"> <!-- these are read from the customer_type column --> 
    <h4>Treatment 1</h4> <!-- this is read from the treatment_name column --> 
</div> 

所以基本上分組通過治療名稱(或ID),然後輸出所有與這種治療有關的顧客。

來自ColdFusion背景我認​​爲這將很容易與查詢查詢等,但我一直在努力提出一個PHP解決方案。

我試着做一個while循環,只顯示數據,如果治療名稱已更改似乎工作正常,但我不知道如何顯示與此相關的customer_types。

任何想法?謝謝。

編輯 下面是一個使用mysqli_fetch_all從數據庫返回的查詢的副本:

array (size=22) 
    0 => 
    array (size=3) 
     0 => string 'Mens' (length=4) 
     1 => string '1' (length=1) 
     2 => string 'treatment 1' (length=11) 
    1 => 
    array (size=3) 
     0 => string 'Ladies' (length=6) 
     1 => string '1' (length=1) 
     2 => string 'treatment 1' (length=11) 
    2 => 
    array (size=3) 
     0 => string 'Kids' (length=4) 
     1 => string '2' (length=1) 
     2 => string 'treatment 2' (length=11) 
    3 => 
    array (size=3) 
     0 => string 'Ladies' (length=6) 
     1 => string '2' (length=1) 
     2 => string 'treatment 2' (length=11) 
    4 => 
    array (size=3) 
     0 => string 'Mens' (length=4) 
     1 => string '2' (length=1) 
     2 => string 'treatment 2' (length=11) 
    5 => 
    array (size=3) 
     0 => string 'Mens' (length=4) 
     1 => string '3' (length=1) 
     2 => string 'treatment 3' (length=11) 
    6 => 
    array (size=3) 
     0 => string 'Kids' (length=4) 
     1 => string '3' (length=1) 
     2 => string 'treatment 3' (length=11) 
    7 => 
    array (size=3) 
     0 => string 'Ladies' (length=6) 
     1 => string '3' (length=1) 
     2 => string 'treatment 3' (length=11) 
    8 => 
    array (size=3) 
     0 => string 'Ladies' (length=6) 
     1 => string '4' (length=1) 
     2 => string 'treatment 4' (length=11) 

它繼續以同樣的格式...

+0

你可以粘貼你的查詢輸出與print_r($查詢)我想我得到了答案,但我不知道那個 – xsami 2015-04-02 16:13:18

+0

總是會有隻有2'Customer_type',他們將永遠是'女士們'//'Mens'? – Sean 2015-04-02 16:25:18

+1

@xsami謝謝,我已經從mysqli_fetch_all()添加了查詢的格式化版本。需要幫助請叫我。 – 2015-04-02 21:42:16

回答

1

希望這回答了你的問題:

<?php 
    $link = mysqli_connect("hostname","username","password","database","port") or die("Error " . mysqli_error($link)); 
    $query = "SELECT treatment_name,Customer_type from Treatments" or die("Error at.." . mysqli_error($link)); 
    $result = $link->query($query); 

    while($row = mysqli_fetch_assoc($result)) { 
     $data[] = $row; 
    } 
//I have used this sample array: Try and make your result set this way 
    $data = array(
       array('treatment_name'=>'Treatment1','Customer_type'=>'Mens'), 
       array('treatment_name'=>'Treatment1','Customer_type'=>'Ladies'), 
       array('treatment_name'=>'Treatment2','Customer_type'=>'Mens') 
      ); 
    foreach ($data as $key => &$value) { 
     $temp[$value['treatment_name']][$key] = $value['Customer_type']; 
    } 

    //echo "<pre>"; 
    //print_r($data); 
    //print_r($temp); 
    //die; 

    foreach($temp as $key => $value){ 
     echo "<div class = \""; 
     foreach($value as $key2 => $value2) 
      echo " ". $value2. " "; 
     echo "\"><h4>".$key."</h4></div></br>"; 
    }    
?> 
//Output 
<div class = " Mens Ladies "><h4>Treatment1</h4></div></br><div class = " Mens "><h4>Treatment2</h4></div></br> 

您可以使用註釋行來檢查數據並進行相應調整。 順便說一下,這段代碼直接打印輸出爲html,所以你的瀏覽器會渲染它。如果您想要內容,請右鍵單擊頁面並查看源代碼!

+1

這將爲返回的每一行創建一個'div'。我相信OP想要結合兩個治療的行。因此,使用示例數據,將有3個div,而不是4. – Sean 2015-04-02 17:53:35

+0

感謝您的答案MRazz,但是這會返回查詢中每行的div,這意味着每個處理都有多個。我希望每個治療名稱只出現一次,並且有一個具有相同治療名稱值的所有行的所有customer_type值的類,即。 '

Treatment 1
' – 2015-04-02 21:49:53