Distanzberechnung zweier Orte über Längen und Breitengrade

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

  • #31
    Also es ist so. Der pilot kann sich aus einem Flugplan einen Flug aussuchen. z.B. Berlin- Frankfurt. Dann klickt er diesen Flug an und eine neue Seite öffnet sich. Dort ist dann eine Karte zu sehen mit der Strecke, einige andere Daten und der Entfernung zu einander.

    Und genau da liegt das Problem. Bis auf die Distanz habe ich bereits alles programmiert. Das ich die Tabelle Flughafen ansprechen muss ist mir schon irgendwo klar, weil dort die Daten stehn. Außerdem muss ich denke ich mal auch Flugplan ansprechen damit auch nur die <Daten für einen bestimmten Flug ausgeworfen werden. Oder sehe ich das falsch. Aber wo genau muss ich denn diese Cos Berechnung dann einsetzten. Und vor allem wie mache ich dem System verständlich welche ID nun Stadt A mit Lon und Lat ist und welche Stadt B?

    Ich hoffe ich habe es jetzt besser formoliert, was mein Problem ist. Ich bin ja super dankbar das ihr mir versucht zu helfen.

    Kommentar


    • #32
      Und da hier nun wirklich ALLE Informationen zur Selbsthilfe gegeben wurde, aber der TO immer noch "auf dem Schlauch steht" und wiederholt nach Quellcode bettelt: Projekthilfe.
      [FONT="Helvetica"]twitter.com/unset[/FONT]

      Shitstorm Podcast – Wöchentliches Auskotzen

      Kommentar


      • #33
        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


        • #34
          OffTopic:

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

          Kommentar


          • #35
            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, 11: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


            • #36
              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


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

                Kommentar


                • #38
                  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