Distanzberechnung

Warum sind hinter den prints immer zwei ; ?
Sollten in der MySQL-Anweisung sicherheitshalber zwischen AND und Klammer noch Leerzeichen sein?
Code:
.. AND(flughafenid1 = 'flughafenid') AND(fl..

# besser

AND (flughafenid1 = 'flughafenid') AND (fl

mfg chmee
 
Das ist eine berechtigte Frage die ich nur mit, schusseligkeitsfehler betiteln kann

Edit: Genannte Tips umgesetzt!
 
Zuletzt bearbeitet:
Die Debug-Echos machen nur Sinn, wenn man Code-technisch davon ausgeht, das die Variablen dort auch verfügbar, sprich mit sinnvollen Werten gefüllt sind. Ich sehe nirgends wo

PHP:
echo "$flugnummer";//Debug Echo 1
echo "$distance"; //Debug Echo 2

mit Werten gefüllt werden. Du gibst da quasi Variablen aus, die vorher nicht definiert wurden, damit ist klar, warum da nichts angezeigt wird. $flugnummer sollte meiner Meinung nach erst dann mit einem Wert gefüllt sein, wenn du die Ergebnismenge des SELECTS aus der Datenbank geholt (mysql_query) und anschließend das Ergebnis mittels mysql_fetch* in ein Array, Objekt oder was auch immer aus der Ergebnismenge geholt hast. Folglich sind deine Debugging-echos an den falschen Stellen.

Das gleiche gilt für $distance. Das ist die lokale Variable der Funktion calculate_spheric_distance(), die ist im globalen Bereich natürlich nicht verfügbar. Statt dessen solltest du den Rückgabe-Wert der Funktion debuggen:

PHP:
$entfernung = calculate_spheric_distance($lat1, $lat2, $lon1, $lon2);

echo "[Debug entfernung]: $entfernung";

Du hast mir noch nicht mitgeteilt, was du nicht verstehst am Tutorial. Mir wäre das schon wichtig, ich möchte es gern verbessern.
 
Ich lese es mir nochmal in Ruhe durch, und dann sage ich es dir per PN!
Flugnummer wurde aber immer angezeigt!

Also ich habe Flugnummer dort gelassen, die Nummer erscheint, die anderen habe ich versetzt aber immer noch nichts!

PHP:
<?php 
ini_set('display_errors', 1);
error_reporting(E_ALL|E_STRICT);  

function calculate_spheric_distance($lat1, $lat2, $lon1, $lon2)
{
 $faktor = M_PI / 180; //umrechnungsfaktor nach bogenmass
 
 $radius = 6370; //mittlerer Erdradius
 
 $a_lat = $lat1 * $faktor; // breite
 $a_lon = $lon1 * $faktor; //länge
 
 $b_lat = $lat2 * $faktor; //breite
 $b_lon = $lon2 * $faktor; //länge
 
$distance =  round(acos(sin($b_lat)*sin($a_lat)+cos($b_lat)*cos($a_lat)*cos($b_lon - $a_lon)) * $radius, 2);

return $distance;
}  
$flugnummer = isset($_GET['flugnummer']) ? $_GET['flugnummer'] : null;  
$abfrage = "SELECT 
                                        `piloten`.`pilot_id` , 
                    `Flugplan`.`flughafenid1` , 
                    `Flugplan`.`dep_time` , 
                    `Flugplan`.`flughafenid2` , 
                    `Flugplan`.`arr_time` ,             
                    `Flugplan`.`flugnummer`,
                    `Flugplan`.`days`,
                    `Flugplan`.`registrierung`,
                    `Flugplan`.`hersteller_name`,
                    `Flugplan`.`comment_charter`,
                    `Flugplan`.`gebucht`,
                    `Flugplan`.`pilotid`,
 FROM 
                     piloten,
                    Flughafen, 
                    Flugplan 
WHERE 
                    (pilot_id = '$pilot_id') AND(flughafenid1 = 'flughafenid') AND (flughafenid2 = 'flughafenid')";
$ergebnis = mysql_query($abfrage);
 echo "$flugnummer";//Debug Echo 1
if ($ergebnis)
{
         // Geo-Koordinaten der Flughäfen besorgen
             $airport1Query = sprintf("SELECT lat,lon FROM Flughafen WHERE flughafenid = '%s'", $flughafenid1);
             $airport2Query = sprintf("SELECT lat,lon FROM Flughafen WHERE flughafenid = '%s'", $flughafenid2);
             
             $airport1Result = mysql_query($airport1Query) or die( mysql_error() ); 
             $airport2Result = mysql_query($airport2Query) or die( mysql_error() ); 
             
             $airport1Data   = mysql_fetch_assoc($airport1Result);
             $airport2Data   = mysql_fetch_assoc($airport2Result);
             
             $lat1 = $airport1Data['lat'];
             $lat2 = $airport2Data['lat'];
             $lon1 = $airport1Data['lon'];
             $lon2 = $airport2Data['lon'];
         // Fertig: Geo-Koordinaten der Flughäfen besorgen
         
             $entfernung = calculate_spheric_distance($lat1, $lat2, $lon1, $lon2);
         echo "$distance"; //Debug Echo 2
		 echo "$entfernung"; //Debug Echo 3
       print "<table border=\"0\" cellspacing=\"2\" ".
       "cellpadding=\"5\" WIDTH=\"63\%\" class=\"tableLine\">\n";
       
       
       while ($dataset = mysql_fetch_array($ergebnis))

           {
        print "<tr>";
        print "<td>Flugnummer:</td><td>".$dataset['flugnummer']."</td><td></td><td></td><td></td>
        </tr>";
        print "<tr>";
        print "<td>Abflug:</td><td>".$dataset['flughafenid1']."&nbsp;"."</td><td></td><td>Ankunft:</td><td>".$dataset['flughafenid2']."&nbsp;"."</td>
        </tr>";
        print "<tr>";
        print "<td>Abflugzeit:</td><td>".$dataset['dep_time']."</td><td></td><td></td><td></td>
        </tr>";
        print "<tr>";
        print "<td></td><td></td><td></td><td>Ankunftszeit:</td><td>".$dataset['arr_time']."</td>
        </tr>";
        print "<td>Flungtage:</td><td>".$dataset['days']."&nbsp;"."</td><td></td><td>Regestrierung:</td><td>".$dataset['registrierung']."&nbsp;"."</td>
        </tr>";
        print "<tr>";
        print "<td>Route:</td><td colspan=\"4\">".$dataset['route']."&nbsp;"."</td>
        </tr>";
        print "<tr>";
        print "<td></td><td></td><td></td><td></td><td></td>
        </tr>";
        print "<tr>";
        print "<td>Anmerkung:</td><td colspan=\"4\">".$dataset['comment_charter']."&nbsp;"."</td>
        </tr>";
		print "<tr>";
        print "<td>Anmerkung:</td><td colspan=\"4\">".$dataset['comment_charter']."&nbsp;"."</td>
		     </tr>"; 
 
             }
    print "</td></tr>\n";
    print "</table>\n";
      }?>
 
Übrigens, bei mir wollte M_PI nicht so richtig (warum auch immer), also hab ich's durch ne Konstante ersetzt. In Deinem Fall wird's ja lediglich an einer Stelle benutzt, ergo
PHP:
$faktor = 3.141592535 / 180;

mfg chmee
 
Also ich habe Flugnummer dort gelassen, die Nummer erscheint, die anderen habe ich versetzt aber immer noch nichts!

Mein Irrtum, $flugnummer kommt ja durch $_GET. Somit ist es ok, das an der Stelle zu debuggen. $entfernung kannst du wirklich erst debuggen, wenn du calculate_spheric_distance() gerufen und den Rückgabewert in $entfernung abgelegt hast. $distance sehe ich immer noch keine Zuweisung - daher ist ein Debugging dieser Variable unsinnig.

Bekommst du bei $entfernung jetzt einen Wert?
 
Ich habe das mit dem M-PI ersetzt aber immer noch nichts

PHP:
<?php 
ini_set('display_errors', 1);
error_reporting(E_ALL|E_STRICT);  

function calculate_spheric_distance($lat1, $lat2, $lon1, $lon2)
{
 $faktor = 3.141592535 / 180; //umrechnungsfaktor nach bogenmass
 
 $radius = 6370; //mittlerer Erdradius
 
 $a_lat = $lat1 * $faktor; // breite
 $a_lon = $lon1 * $faktor; //länge
 
 $b_lat = $lat2 * $faktor; //breite
 $b_lon = $lon2 * $faktor; //länge
 
$distance =  round(acos(sin($b_lat)*sin($a_lat)+cos($b_lat)*cos($a_lat)*cos($b_lon - $a_lon)) * $radius, 2);

return $distance;
}  
$flugnummer = isset($_GET['flugnummer']) ? $_GET['flugnummer'] : null;  
$abfrage = "SELECT 
                                        `piloten`.`pilot_id` , 
                    `Flugplan`.`flughafenid1` , 
                    `Flugplan`.`dep_time` , 
                    `Flugplan`.`flughafenid2` , 
                    `Flugplan`.`arr_time` ,             
                    `Flugplan`.`flugnummer`,
                    `Flugplan`.`days`,
                    `Flugplan`.`registrierung`,
                    `Flugplan`.`hersteller_name`,
                    `Flugplan`.`comment_charter`,
                    `Flugplan`.`gebucht`,
                    `Flugplan`.`pilotid`,
 FROM 
                     piloten,
                    Flughafen, 
                    Flugplan 
WHERE 
                    (pilot_id = '$pilot_id') AND(flughafenid1 = 'flughafenid') AND (flughafenid2 = 'flughafenid')";
$ergebnis = mysql_query($abfrage);
 echo "$flugnummer";//Debug Echo 1
if ($ergebnis)
{
         // Geo-Koordinaten der Flughäfen besorgen
             $airport1Query = sprintf("SELECT lat,lon FROM Flughafen WHERE flughafenid = '%s'", $flughafenid1);
             $airport2Query = sprintf("SELECT lat,lon FROM Flughafen WHERE flughafenid = '%s'", $flughafenid2);
             
             $airport1Result = mysql_query($airport1Query) or die( mysql_error() ); 
             $airport2Result = mysql_query($airport2Query) or die( mysql_error() ); 
             
             $airport1Data   = mysql_fetch_assoc($airport1Result);
             $airport2Data   = mysql_fetch_assoc($airport2Result);
             
             $lat1 = $airport1Data['lat'];
             $lat2 = $airport2Data['lat'];
             $lon1 = $airport1Data['lon'];
             $lon2 = $airport2Data['lon'];
         // Fertig: Geo-Koordinaten der Flughäfen besorgen
         
             $entfernung = calculate_spheric_distance($lat1, $lat2, $lon1, $lon2);
         
		 echo "$entfernung"; //Debug Echo 3
       print "<table border=\"0\" cellspacing=\"2\" ".
       "cellpadding=\"5\" WIDTH=\"63\%\" class=\"tableLine\">\n";
       
       
       while ($dataset = mysql_fetch_array($ergebnis))

           {
        print "<tr>";
        print "<td>Flugnummer:</td><td>".$dataset['flugnummer']."</td><td></td><td></td><td></td>
        </tr>";
        print "<tr>";
        print "<td>Abflug:</td><td>".$dataset['flughafenid1']."&nbsp;"."</td><td></td><td>Ankunft:</td><td>".$dataset['flughafenid2']."&nbsp;"."</td>
        </tr>";
        print "<tr>";
        print "<td>Abflugzeit:</td><td>".$dataset['dep_time']."</td><td></td><td></td><td></td>
        </tr>";
        print "<tr>";
        print "<td></td><td></td><td></td><td>Ankunftszeit:</td><td>".$dataset['arr_time']."</td>
        </tr>";
        print "<td>Flungtage:</td><td>".$dataset['days']."&nbsp;"."</td><td></td><td>Regestrierung:</td><td>".$dataset['registrierung']."&nbsp;"."</td>
        </tr>";
        print "<tr>";
        print "<td>Route:</td><td colspan=\"4\">".$dataset['route']."&nbsp;"."</td>
        </tr>";
        print "<tr>";
        print "<td></td><td></td><td></td><td></td><td></td>
        </tr>";
        print "<tr>";
        print "<td>Anmerkung:</td><td colspan=\"4\">".$dataset['comment_charter']."&nbsp;"."</td>
        </tr>";
		print "<tr>";
        print "<td>Anmerkung:</td><td colspan=\"4\">".$dataset['comment_charter']."&nbsp;"."</td>
		     </tr>"; 
 
             }
    print "</td></tr>\n";
    print "</table>\n";
      }?>

Die ech "Distance" habe ich mal entfernt
 
Zuletzt bearbeitet:
Wichtig ist es hinsichtlich des Ergebnisses, nicht syntaktischer Fehler!
(Wäre nämlich M_PI nicht bekannt bzw. Null, wären die Ortsdaten lat/lon immer 0, somit die Distanz gleichermaßen)

mfg chmee
 
Zurück