2017-03-22 17 views
0

我想要在html表格中實現最好的描述。我的表可以很好地處理來自MySQL數據庫的數據,但所有數據都以行打印,這是正確的,但是我需要在Excel中以下面的格式和相同的格式顯示數據。這避免了重複類似的數據。顯示行內行數

我的SQL語句是這樣的:

$query = mysql_query("SELECT * FROM Reservations WHERE Date = '$DateToday' ORDER BY Airline ASC, Flight ASC, Name"); 

,但我想達到理想的顯示PHP會比MySQL更相關。當只有一個乘客,但嵌套當它被複制乘客姓名

Table Ecample 所以第一while循環....

while ($row = mysql_fetch_array($query)) { $results = mysql_query("SELECT *  FROM Reservations WHERE Airline = '$Airline'"); 
$Count = mysql_num_rows($results); 
if($Count > 1) // More then 1 passenger on same flight 
{ 
    $iReservationID  = $row['ReservationID']; 
    $iAirline   = strtoupper($row['Airline']); 
    $iFlight   = strtoupper($row['Flight']); 
    $iName    = strtoupper($row['Name']); 
    $iName    = "<BR>".$iName;       
} else {// NOT More then 1 passenger on same flight 
    $ReservationID = $row['ReservationID']; 
    $Airline   = strtoupper($row['Airline']); 
    $Flight   = strtoupper($row['Flight']); 
    $Name    = strtoupper($row['Name']);      
    } 
} 
<table> 
    <tr> 
    <td>AIRLINE</td>"; 
    <td>FLIGHT#</td>"; 
    <td>PASSENGER</td>"; 
    </tr> 
    <tr> 
    <td>echo $Airline;</td> 
    <td>echo $Flight;</td> 
    <td>print "$Name<BR>$iName</td> 
    </tr> 
</table> 

表工作正常行每個條目。

SELECT DISTINCT不會做的伎倆要麼SELECT FROM Reservations WHERE ReservationID <> $ReservationID - 我已經嘗試了第二個WHILE循環根據FLIGHT#重新獲取數據,但仍然不正確。

建議非常感謝。

+0

您正在申請航空公司內部條件的內部循環,如果您有不同航班的同一航空公司,該怎麼辦? –

+0

你是對的,Vara肯定會發生。在那種情況下,我認爲應該寫一個新的行來顯示航空公司名稱,(再次)不同的飛行編號和相應的乘客姓名。我現在正在嘗試示例。 –

回答

0

試試這個

$sql = "SELECT * FROM Reservations WHERE Date = '$DateToday' ORDER BY Airline ASC, Flight ASC, Name"; 
$result = mysqli_query($conn, $sql); 

if (mysqli_num_rows($result) > 0) { 
    echo "<table> 
       <tr> 
       <td>AIRLINE</td> 
       <td>FLIGHT#</td> 
       <td>PASSENGER</td> 
       </tr> 
      "; 
    while($row = mysqli_fetch_assoc($result)) { 
     echo "<tr> 
       <td>"+$row['ReservationID']+"</td> 
       <td>"+strtoupper($row['Airline'])+"</td> 
       <td>"+strtoupper($row['Flight'])+"</td> 
       <td>"+MethodToFetchNameOfPassengersOfTheFlight(params)+"</td> 
      </tr>"; 

    echo "</table>"; 
} 

的方法

string MethodToFetchNameOfPassengersOfTheFlight(params){ 
    //write a query to fetch the name of the passenger of the flight 
    $CustomerNames = ""; 
    //in for each loop do this 
    foreach($name in $names) 
     $CustomerNames += $name + "<br>"; 
    return strtoupper($CustomerNames); 
} 

首先我們展示了航空公司的細節。然後,我們找到相應航班的乘客,並用斷續的繩子將它們附加在一起,然後將它們分開。

1

你可以試試這個代碼

<?php 
$query = mysql_query("SELECT *,GROUP_CONCAT(Name SEPARATOR '<BR>') AS PasName FROM Reservations WHERE Date = '$DateToday' GROUP BY Airline,Flight ORDER BY Airline ASC, Flight ASC, Name"); 
echo "<table> 
<tr> 
    <td>AIRLINE</td> 
    <td>FLIGHT#</td> 
    <td>PASSENGER</td> 
</tr>"; 
while ($row = mysql_fetch_array($query)) { 
    //$results = mysql_query("SELECT * FROM Reservations WHERE Airline = '$Airline'"); 

    $ReservationID = $row['ReservationID']; 
    $Airline = strtoupper($row['Airline']); 
    $Flight = strtoupper($row['Flight']); 
    $Name = strtoupper($row['PasName']); 

    //$Count = mysql_num_rows($results); 
    /*if ($Count > 1) { // More then 1 passenger on same flight 
     $iName = ""; 
     while ($inrow = mysql_fetch_array($results)) { 
      $iName .= "<BR>".$inrow['Name']; 
     } 
    } else {// NOT More then 1 passenger on same flight 
     // $ReservationID = $row['ReservationID']; 
     // $Airline = strtoupper($row['Airline']); 
     // $Flight = strtoupper($row['Flight']); 
    }*/ 
    echo "<tr> 
     <td>$Airline</td> 
     <td>$Flight</td> 
     <td>$Name</td> 
    </tr>"; 
} 
echo "</table>"; 
?> 

不過,我建議你找人查詢中的多個用戶只即與

SELECT GROUP_CONCAT(Name SEPARATOR '<BR>') FROM Reservations WHERE Airline = '$Airline' GROUP BY Airline,Flight 

使更換這個查詢

SELECT * FROM Reservations WHERE Airline = '$Airline' 

不需要內部循環來拼接用戶名

+0

好了,我已經通過這個例子走了,但得到相同的結果作爲我自己的例子......正在顯示的每一行上爲每位乘客航空公司和航班# - 其實相同的結果使用$查詢=請求mysql_query(」 SELECT * FROM Reservations WHERE Date ='$ DateToday'ORDER BY Airline ASC,Flight,Name「);困難的部分似乎不一遍又一遍重複航空公司名稱或航班號......我會再試一次。 –

+0

嗨@Stray我已經更新我的回答,請現在 –

+0

喜@瓦拉 - 是 - 輝煌 - 打印收盤印刷後的結果是改變遊戲規則。也有分離器
是select語句把它完美地結合在一起。這是優秀的Vara。我認爲會有很多人誰都會喜歡這種格式顯示錶中的數據。我可以問一個小問題,你可以編輯你的答案,並從變量$ ReservationID,$ Airline,$ Flight等中移除'i',因爲我只是用它來區分。如果有人想複製我的數據庫示例,那麼Vara的解決方案完美無缺。非常感謝你! –