2016-08-02 25 views
-2

你好,這裏是我當前的代碼:如何排序在while循環

$sqlpack = "Select * from package_in_plan where plan_id='$package_id' order by plan_id"; 
$planres = mysqli_query($conn,$sqlpack); 

$plan = array(); 
while ($row1 = mysqli_fetch_assoc($planres)){ 
    $plan[] = $row1['package_id']; 
} 

$plan_1 = implode(',', $plan); 
for ($x = 0; $x < count($plan); $x++) { 
    $sql_service = "Select * from service_in_package where package_id='".$plan[$x]."'"; 
    $chid = mysqli_query($conn,$sql_service); 

    while ($row = mysqli_fetch_array($chid)){ 
     $ch_id = $row['service_id']; 

     $sql = "Select * from itv where status='1' and id='$ch_id' order by number asc"; 
     $results = mysqli_query($conn,$sql); 

     while ($row = mysqli_fetch_array($results)){ 
      $nr = $row['id']; 
      $namn = $row['name']; 
      $chnr = $row['number']; 
      echo $nr; 
      echo $namn; 
      echo $chnr; 
     } 
    } 
} 

我需要的是由數($ CHNR)進行排序輸出,現在我的代碼是不排序,因爲它接收特定來自上一個select($ ch_id)的id。 如何讓$結果的輸出按「按數量排序」進行排序。 數字在itv表中爲INT。

+1

你知道SQL連接嗎? – eggyal

+3

我剛剛回答了這個問題:http://stackoverflow.com/questions/38720440/php-how-to-run-a-while-loop-in-another-while-loop/38722548#38722548解釋你爲什麼不應該在嵌套循環中查詢。你的情況更糟,因爲你的嵌套是三層! – e4c5

+0

@ e4c5:歡迎來到不同用戶每天回答數千次相同問題的精彩世界,這些用戶不會在發帖之前懶得進行半點研究...... – eggyal

回答

0

您可以使用子查詢,這會導致可以排序的單個查詢。

$sql = "Select * from itv where status='1' and id IN 
(Select service_id from service_in_package where package_id IN 
(Select package_id from package_in_plan where plan_id='$package_id' order by plan_id)) 
order by number asc"; 
$results = mysqli_query($conn,$sql); 

while ($row = mysqli_fetch_array($results)){ 
    $nr = $row['id']; 
    $namn = $row['name']; 
    $chnr = $row['number']; 
    echo $nr; 
    echo $namn; 
    echo $chnr; 
} 
+0

504網關超時,有什麼想法? –

+0

@SamiH你在數據庫表中有多少條記錄? – Marco