2016-06-21 25 views
0

Ich versuche, Daten aus zwei verschiedenen MySQL Tabellen auf meiner Website mit PHP anzuzeigen.Echo-Daten von zwei verschiedenen MySQL-Tabellen mit PHP

Mein Ziel ist es, einen Zeitplan mit Informationen aus zwei Tabellen anzuzeigen. Der erste enthält alle Teams plus ihre ID, der zweite enthält alle Details zu den Spielen. Ich möchte nun die Felder "home_id" und "away_id" mit den entsprechenden Teamnamen aus der ersten Tabelle "ersetzen".

den Tabellen wie folgt aussehen: Ich erhalte die erforderlichen Daten innerhalb phpMyAdmin

table "teams" 
id name 
----------- 
1 Team 1 
2 Team 2 
3 Team 3 
4 Team 4 
... 

table "matchschedule" 
id home_id away_id goals_home goals_away date 
1  1   2   0    2  2016-05-05 
2  3   4   2    1  2016-05-06 
... 

Mit der folgenden Abfrage:

SELECT 
    date, home.name, sp.goals_home, away.name, sp.goals_away 
FROM 
    matchschedule sp 
INNER JOIN 
    teams home on sp.home = home.id 
LEFT JOIN 
    teams away on sp.away = away.id 

Allerdings, wenn ich diese Abfrage in meiner Website implementieren und fügen Der folgende Code zum Anzeigen der Daten Die Felder "home.name" und "away.name" sind immer leer. Was muss ich ändern, damit die Teamnamen angezeigt werden?

while($row = mysql_fetch_array($query)) { 
    ?> 

    <table border=1> 
    <tr> 
     <?php 
     echo "<td>".$row['date']."</td>"; 
     echo "<td>".$row['home.name']."</td>"; 
     echo "<td>".$row['goals_home']."</td>"; 
     echo "<td>".$row['away.name']."</td>"; 
     echo "<td>".$row['goals_away']."</td>"; 
     ?> 
    </tr> 
    </table> 

Endergebnis (mit Informationen zu den beiden Teamnamen fehlt):

2016-05-05 [] 0 [] 2 
2016-05-06 [] 2 [] 1 

Antwort

1

Das Problem ist, dass, wenn in Abfrage Sie home.name mysql Rückkehr in php Spalte mit dem Titel name anfordern und Sie nicht erreichen können, Spalte mit home.name mehr. Und das gleiche für away.name.

Aus diesem Grund müssen Sie den richtigen Namen für die zurückgegebenen Spalten festlegen.

Ihre Suche verfeinern:

SELECT 
    date, home.name home_name, sp.goals_home, away.name away_name, sp.goals_away 
FROM 
    matchschedule sp 
INNER JOIN 
    teams home on sp.home = home.id 
LEFT JOIN 
    teams away on sp.away = away.id 

und die Spalten in php nennen wie:

echo "<td>".$row['date']."</td>"; 
    echo "<td>".$row['home_name']."</td>"; 
    echo "<td>".$row['goals_home']."</td>"; 
    echo "<td>".$row['away_name']."</td>"; 
    echo "<td>".$row['goals_away']."</td>"; 
+0

Vielen Dank! Funktioniert einwandfrei. – mario

1

Basierend auf dem Tisch strcture, sollten Sie Folgendes tun:

SELECT 
    date, home.name AS homeName, sp.goals_home, away.name AS awayName, sp.goals_away 
FROM 
    matchschedule sp 
INNER JOIN 
    teams home on sp.home_id = home.id 
LEFT JOIN 
    teams away on sp.away_id = away.id 

Also im Grunde ersetzen sp.home von sp.home_id und sp.away von sp.away_id und ändern Sie den Namen der Felder, da Sie den gleichen Feldnamen in Ihren Tabellen haben.

+0

Danke! Funktioniert einwandfrei. – mario

Verwandte Themen