Distanzberechnung zweier Orte über Längen und Breitengrade

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #31
    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"
    Code:
    ID | Name | Lat | Lon | ...
    ---------------------------
     1 | Foo  | ... | ... | ...
     2 | Bar  | ... | ... | ...
     3 | Baz  | ... | ... | ...
    und eine namens "Flug"
    Code:
    ID | Flughafen_ID | ...
    ---------------------------
     1 |      1       | ...
     1 |      2       | ...
     2 |      1       | ...
     2 |      3       | ...
    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.
    Code:
    SELECT Flughafen_ID FROM Flug WHERE ID = $ID
    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.
    Code:
    SELECT Lat, Lon FROM Flughafen WHERE ID = $FHID1 OR ID = $FHID2
    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
    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() 
    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

    Kommentar


    • #32
      OffTopic:

      Bei der Unterstützung, die der TO hier bekommt, ist eigentlich ein Kasten Bier oder ähnliches für die Beteiligten fällig....

      Kommentar


      • #33
        Zitat von onemorenerd Beitrag anzeigen
        @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
        Doch klar, aber der ergibt keinen Sinn, weil f1 exakt derselbe Flughafen ist wie f2. So wird ein Schuh draus:

        Code:
        select f1.lat as lat1, f1.lon as lon1, f2.lat as lat2, f2.lon as lon2
        from flugplan as fp
        join flughafen as f1 on f1.flughafenid = fp.flughafenid1
        join flughafen as f2 on f2.flughafenid = fp.flughafenid2
        where fp.flugnummer = $flugnummer
        Und das ist übrigens immer noch kein self join, weil beide (auch wenn sie zufällig dieselbe Tabelle betreffen) gegen Flugplan joinen.
        Zuletzt geändert von AmicaNoctis; 14.10.2009, 12:21.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #34
          Mit all der Hilfe werde ich es in den nächsten Tagen nochmal in Ruhe programmieren und noch mal hier melden. Erstmal Danke nun muss ich selbst mal wieder was tüffteln.

          Kommentar


          • #35
            Oh man, na klar. *schäm*

            Kommentar


            • #36
              Hallo Malchor,
              solltest du das geschafft haben würde ich dir gerne genau dieses Skript als Lizenz abkaufen. Meld dich doch mal dazu. Ansonsten an Interesssierte die dazu in der Lage währen das nochmal zu programmieren.... Was würde das kosten? Lg Vielen im Voraus.

              Kommentar

              Lädt...
              X