Php 在行中显示表行
下面的示例图在html表中描述了我试图实现的目标。我的表格可以很好地处理MySQL数据库中的数据,但是所有数据都是以行的形式打印的,这是正确的,但是我需要以下面的格式和Excel中的相同格式显示数据。这样可以避免重复类似的数据 我的SQL语句如下所示:Php 在行中显示表行,php,mysql,html-table,Php,Mysql,Html Table,下面的示例图在html表中描述了我试图实现的目标。我的表格可以很好地处理MySQL数据库中的数据,但是所有数据都是以行的形式打印的,这是正确的,但是我需要以下面的格式和Excel中的相同格式显示数据。这样可以避免重复类似的数据 我的SQL语句如下所示: $query = mysql_query("SELECT * FROM Reservations WHERE Date = '$DateToday' ORDER BY Airline ASC, Flight ASC, Name"); 但我想,
$query = mysql_query("SELECT * FROM Reservations WHERE Date = '$DateToday' ORDER BY Airline ASC, Flight ASC, Name");
但我想,要实现所需的显示,php将比MySQL更具相关性
首先是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也不起作用,也不从ReservationID$ReservationID的预订中进行选择-我尝试了第二次WHILE循环,根据航班重新提取数据,但仍然不正确
非常感谢您的建议。试试这个
$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);
}
首先,我们展示航空公司的详细信息。然后,我们找到相应航班的乘客,并将他们附加到一个带有中断的字符串中,然后将其分离播放。您可以尝试此代码
<?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>";
?>
与
这样就不需要内环来具体化用户名了内环你在航空公司应用where条件,如果你有不同航班的同一家航空公司怎么办?你是正确的Vara,这肯定会发生。在这种情况下,我认为应该写一个新行,显示航空公司名称、不同的航班以及相应的乘客姓名。我现在正在尝试这些例子。好的,我已经完成了这个例子,但是得到了与我自己的例子相同的结果。。。也就是说,每一位乘客的每一行上都会显示航空公司和航班——事实上,这与使用$query=mysql_querySELECT*FROM Reservations时的结果相同,其中Date='$DateToday'按航空公司ASC、航班、名称排序;最难的部分似乎不是重复航空公司的名称或航班一遍又一遍。。。我会再试一次。嗨@流浪者,我已经更新了我的答案,请现在检查嗨@瓦拉-是-辉煌-打印结果后打印结束是游戏规则改变者。另外,带有分隔符的select语句将其完美地组合在一起。这是很棒的瓦拉。我想会有很多人喜欢这种显示表格数据的格式。我只想问一个小问题,你能编辑你的答案并从变量$ReservationID、$Airline、$Flight等中删除'I'吗?因为我只是用它来区分。如果有人想复制我的数据库示例,那么Vara的解决方案可以完美地工作。非常感谢你!谢谢@StrayDog,如果有用的话,你可以接受我的答案
SELECT * FROM Reservations WHERE Airline = '$Airline'
SELECT GROUP_CONCAT(Name SEPARATOR '<BR>') FROM Reservations WHERE Airline = '$Airline' GROUP BY Airline,Flight