2016-04-06 6 views
1

Ich versuche, Daten aus 2 verschiedenen SQL-Tabellen (normalisierte Datenbank) anzuzeigen und die Daten nebeneinander in einer HTML-Tabelle anzuzeigen.Kann ich 2 mysql_fetch_array() innerhalb einer while-Schleife haben? [PHP]

Ich kann die Daten aus Tabelle A und aus Tabelle B anzeigen, jedoch erreiche ich dies aus zwei separaten While-Schleifen. Ich möchte diese while-loops zu einem kombinieren.

Frage: Kann ich 2 mysql_fetch_array() Bedingungen innerhalb einer while-Schleife haben?

Anzeigen von Daten aus der Tabelle A:

$result = mysql_query("SELECT * from ReportValues WHERE 
ReportValues.ReportID = '$Report_Values'"); 
while ($myData = mysql_fetch_array($result, MYSQL_NUM)) 
{ 
echo "<tr>"; 
echo "<td>" . $myData[2] . "</td>"; 
echo "</tr>"; 
} 

Anzeigen von Daten aus der Tabelle B:

$result = mysql_query("SELECT * FROM Element WHERE Element.ElementsID 
= (SELECT ElementsID FROM Template WHERE Template.TID = '$Temp')"); 
while ($row = mysql_fetch_array($result, MYSQL_NUM)) 
{ 
echo "<td>" . $row[2] . "</td>"; 
echo "</tr>"; 
} 

Idealerweise versuche ich, so etwas zu erreichen:

$result = mysql_query("SELECT * from ReportValues 
         WHERE ReportValues.ReportID = '$Report_Values'"); 

$result2 = mysql_query("SELECT * FROM Element 
         WHERE Element.ElementsID = 
          (SELECT ElementsID FROM Template 
          WHERE Template.TID = '$Temp' 
         )" 
         ); 

while ($myData = mysql_fetch_array($result, MYSQL_NUM) && 
     $row = mysql_fetch_array($result2, MYSQL_NUM)) 
{ 
    echo "<tr>"; 
    echo "<td>" . $myData[2] . "</td>"; 
    echo "<td>" . $row[2] . "</td>"; 
    echo "</tr>"; 
} 

Vielen Dank im Voraus .

EDIT: Vielen Dank für alle Antworten, aber ich konnte nicht implementieren, was vorgeschlagen wurde. Meine Arbeit umfasste das Erstellen von Arrays und für jedes Element (Daten [$ i] und Zeile [$ i]) habe ich sie einfach in 2 separate Arrays eingefügt. Ich habe immer noch zwei separate While-Loops benutzt. Wahrscheinlich ineffizienter/schlechter Code, aber ich habe es funktioniert, ha.

+2

Haben Sie getestet? –

+1

Hmmm, ich weiß nicht, hat es für dich funktioniert? – Ray

+2

Sie können ja, aber wenn in jeder Abfrage eine andere Anzahl von Zeilen zurückgegeben wird, stoppt die Schleife, wenn keine Ergebnisse mehr in der Zeile mit weniger Zeilen vorhanden sind. – AbraCadaver

Antwort

1

Sie können ja, aber wenn es eine unterschiedliche Anzahl von Zeilen in jeder Abfrage zurückgegeben werden, dann wird die Schleife stoppen, wenn es keine anderen Ergebnisse in der einen mit weniger Zeilen sind:

while ($myData = mysql_fetch_array($result, MYSQL_NUM) && 
     $row = mysql_fetch_array($result2, MYSQL_NUM)) 
{ 
    echo "<tr>"; 
    echo "<td>" . $myData[2] . "</td>"; 
    echo "<td>" . $row[2] . "</td>"; 
    echo "</tr>"; 
} 

für Looping zu halten die Abfrage mit den Zeilen kann man ein OR, aber Sie müssen, um überprüfen, ob die Variable gesetzt ist:

while ($myData = mysql_fetch_array($result, MYSQL_NUM) || 
     $row = mysql_fetch_array($result2, MYSQL_NUM)) 
{ 
    echo "<tr>"; 
    echo "<td>" . isset($myData[2]) ? $myData[2] : '' . "</td>"; 
    echo "<td>" . isset($row[2]) ? $myData[2] : '' . "</td>"; 
    echo "</tr>"; 
} 
Verwandte Themen