Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在行中显示表行_Php_Mysql_Html Table - Fatal编程技术网

Php 在行中显示表行

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"); 但我想,

下面的示例图在html表中描述了我试图实现的目标。我的表格可以很好地处理MySQL数据库中的数据,但是所有数据都是以行的形式打印的,这是正确的,但是我需要以下面的格式和Excel中的相同格式显示数据。这样可以避免重复类似的数据

我的SQL语句如下所示:

$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