2017-03-22 3 views
0

Was ich versuche, am besten zu erreichen, wird im Beispieldiagramm in einer HTML-Tabelle beschrieben. Meine Tabelle funktioniert gut mit Daten aus einer MySQL-Datenbank, aber alle Daten werden in Zeilen gedruckt, was korrekt ist, jedoch muss ich die Daten im unten stehenden Format und im gleichen Format in Excel anzeigen. Dies vermeidet die Wiederholung ähnlicher Daten.Anzeigen von Tabellenzeilen innerhalb der Zeile

My SQL-Anweisung ist dies:

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

aber ich denke, die gewünschte Anzeige php zu erreichen wäre relevanter als MySQL.

Table Ecample So wird zuerst die while-Schleife ....

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> 

Die Tabelle arbeitet mit Zeilen für jeden Eintrag in Ordnung, wenn es nur ein Passagier ist, aber es ist die Passagiernamen duplizieren, wenn verschachtelt.

SELECT DISTINCT tut nicht den Trick entweder noch SELECT FROM Reservations WHERE ReservationID <> $ReservationID - Ich habe versucht, eine zweite WHILE Schleife, um die Daten nach FLIGHT # holen, aber immer noch nicht korrekt.

Vorschläge sehr geschätzt.

+0

Innerhalb Schleife, die Sie anwenden, wo Bedingung auf der Airline, was ist, wenn Sie dieselbe Fluggesellschaft mit anderen Flug haben? –

+0

Sie haben Recht Vara und das würde sicherlich passieren. In diesem Fall sollte eine neue Zeile geschrieben werden, die den AIRLINE-Namen, (wieder) die verschiedenen FLIGHT # und die entsprechenden Passagiernamen anzeigt. Ich versuche jetzt die Beispiele. –

Antwort

0

Versuchen Sie, diese

$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>"; 
} 

für das Verfahren

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); 
} 

Zuerst haben wir die Details der Fluggesellschaften zeigen. Dann finden wir die Fluggäste des entsprechenden Fluges und fügen sie in einer Kette mit Pausen an, um sie dann abzulenken.

1

können Sie versuchen, diesen Code

<?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>"; 
?> 

Aber, empfehle ich Ihnen, die mehrere Benutzer innerhalb Abfrage zu holen nur dh ersetzen Sie diese Abfrage

SELECT * FROM Reservations WHERE Airline = '$Airline' 

mit

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

so dass Es ist keine interne Schleife erforderlich, um Benutzernamen zu verknüpfen

+0

Ok, also habe ich dieses Beispiel durchgespielt, aber die gleichen Ergebnisse wie in meinem eigenen Beispiel ... AIRLINE und FLIGHT # werden in jeder Zeile für jeden PASSENGER angezeigt - in der Tat die gleichen Ergebnisse wie mit $ query = mysql_query (" SELECT * FROM Reservierungen WHERE Datum = '$ DateToday' ORDER BY Fluggesellschaft ASC, Flug, Name "); Der schwierige Teil scheint nicht zu sein, den Namen AIRLINE oder FLIGHT # immer wieder zu duplizieren ... Ich werde es wieder versuchen. –

+0

Hi @Stray Ich habe meine Antwort aktualisiert, bitte überprüfen Sie jetzt –

+0

Hi @ Vara - JA - BRILLIANT - Drucken der Schließung NACH dem Ausdrucken der Ergebnisse ist das Spiel Changer. Auch diese Select-Anweisung mit SEPARATOR
bringt es perfekt zusammen. Das ist ausgezeichnet Vara. Ich denke, es wird viele Leute geben, die dieses Format mögen, um Tabellendaten anzuzeigen.Nur einen kleinen Punkt kann ich fragen, können Sie Ihre Antwort bearbeiten und das 'i' aus den Variablen $ ReservationID, $ Airline, $ Flight usw. entfernen, da ich das nur zur Unterscheidung verwendet habe. Wenn jemand mein Datenbankbeispiel kopieren möchte, dann funktioniert die Lösung von Vara perfekt. Vielen Dank! –

Verwandte Themen