Grundlagen
Ich hole jetzt mal etwas weiter aus, um Grundlagen zu vermitteln, die dir offensichtlich fehlen. Also stell dir mal vor ...
Du hast eine Tabelle namens "Flughafen"
und eine namens "Flug"
Du möchtest auf einer Seite die Länge eines Fluges angeben. Dein Skript bekommt eine Flug-ID, die der Pilot auf einer anderen Seite ausgewählt hat.
Nun holst du zu dieser Flug-ID alle Flughafen-IDs aus der Tabelle Flug.
Das liefert entweder Null Ergebnisse, bei falscher ID, oder exakt zwei Ergebnisse, nämlich Start- und Zielflughafen.
Das Ergebnis kannst du mit einer While-Schleife in ein Array schaufeln oder einfach zweimal hintereinander mysql_fetch_irgendwas() notieren, um die zwei Ergebnisse in getrennte Variablen zu speichern.
Jetzt holst du Lat,Lon aus der Tabelle Flughafen - für alle Flughäfen, deren ID du durch die erste Abfrage erhalten hast.
Das liefert ebenfalls exakt zwei Ergebnisse, zu jeder Flughafen-ID ein Lat-Lon-Päarchen, das du für die Distanzberechnung benutzen kannst.
So einfach ist das. Ich hoffe, du hast es halbwegs verstanden und baust es erstmal so nach. Das ergibt ungefähr folgenden Code
Wenn du damit fertig bist und alles so funktioniert wie es soll, können wir nochmal über JOIN sprechen.
@Amica: Wäre das kein self join?
SELECT f1.lat, f1.lon, f2.lat, f2.lon
FROM Flughafen AS f1
JOIN Flughafen AS f2 ON f1.Flughafen_ID = f2.Flughafen_ID
WHERE f1.Flughafen_ID = $ID
Ich hole jetzt mal etwas weiter aus, um Grundlagen zu vermitteln, die dir offensichtlich fehlen. Also stell dir mal vor ...
Du hast eine Tabelle namens "Flughafen"
Code:
ID | Name | Lat | Lon | ... --------------------------- 1 | Foo | ... | ... | ... 2 | Bar | ... | ... | ... 3 | Baz | ... | ... | ...
Code:
ID | Flughafen_ID | ... --------------------------- 1 | 1 | ... 1 | 2 | ... 2 | 1 | ... 2 | 3 | ...
Nun holst du zu dieser Flug-ID alle Flughafen-IDs aus der Tabelle Flug.
Code:
SELECT Flughafen_ID FROM Flug WHERE ID = $ID
Das Ergebnis kannst du mit einer While-Schleife in ein Array schaufeln oder einfach zweimal hintereinander mysql_fetch_irgendwas() notieren, um die zwei Ergebnisse in getrennte Variablen zu speichern.
Jetzt holst du Lat,Lon aus der Tabelle Flughafen - für alle Flughäfen, deren ID du durch die erste Abfrage erhalten hast.
Code:
SELECT Lat, Lon FROM Flughafen WHERE ID = $FHID1 OR ID = $FHID2
So einfach ist das. Ich hoffe, du hast es halbwegs verstanden und baust es erstmal so nach. Das ergibt ungefähr folgenden Code
PHP-Code:
// Auflösung Flug-ID => Flughafen-IDs
mysql_query()
mysql_fetch_irgendwas()
mysql_fetch_irgendwas()
// Auflösung Flughafen-IDs => Lat,Lon
mysql_query()
mysql_fetch_irgendwas()
mysql_fetch_irgendwas()
// Distanzberechnung
distance()
@Amica: Wäre das kein self join?
SELECT f1.lat, f1.lon, f2.lat, f2.lon
FROM Flughafen AS f1
JOIN Flughafen AS f2 ON f1.Flughafen_ID = f2.Flughafen_ID
WHERE f1.Flughafen_ID = $ID
Kommentar