Hmm wie soll ich das Problem beschreiben?!... Also ich habe produkte, die ein Kunde bestellt und mein php script soll am ende die entfernung von dem produkt zum kunden berechnen. jedoch kann es sein, dass ein kunde mehrere produkte bestellt und diese nicht alle am gleichen lagerort sind... ursprünglich hatte ich dieses script um die kürzeste entfernung vom Lagerort bis zum Kunden zu berechnen
PHP-Code:
<?php
// die PLZ1 nach der wir suchen
$plz1 = $_SESSION['bestellung_plz'];
// die PLZ2 nach der wir suchen
$plz2 = '32791'; // Lage
// die PLZ2 nach der wir suchen
$plz3 = '45739'; // Oerkenschwick
// Erdradius (geozentrischer Mittelwert) in Km
$radius = 6378.137;
// Kreiszahl Pi
$pi = pi();
// SQL Abfrage PLZ1
$sql_rad = mysql_query("SELECT lon, lat FROM `plz_tabelle` WHERE `plz` = '$plz1' ");
$erg_rad = mysql_fetch_object($sql_rad);
// Umrechnung von GRAD IN RAD
$L1 = $erg_rad->lon;
$B1 = $erg_rad->lat;
// SQL Abfrage PLZ2
$sql_rad = mysql_query("SELECT lon, lat FROM `plz_tabelle` WHERE `plz` = '$plz2' ");
$erg_rad = mysql_fetch_object($sql_rad);
// Umrechnung von GRAD IN RAD
$L2 = $erg_rad->lon;
$B2 = $erg_rad->lat;
// SQL Abfrage PLZ2
$sql_rad = mysql_query("SELECT lon, lat FROM `plz_tabelle` WHERE `plz` = '$plz3' ");
$erg_rad = mysql_fetch_object($sql_rad);
// Umrechnung von GRAD IN RAD
$L3 = $erg_rad->lon;
$B3 = $erg_rad->lat;
// Umrechnung der Gradzahl in RAD:
$breite1 = $B1 / 180 * $pi ;
$länge1 = $L1 / 180 * $pi ;
$breite2 = $B2 / 180 * $pi ;
$länge2 = $L2 / 180 * $pi ;
$breite3 = $B3 / 180 * $pi ;
$länge3 = $L3 / 180 * $pi ;
// Die Formel zur Entfernungsberechnung bedient sich einer Einheitskugel:
// e = ARCCOS[ SIN(Breite1)*SIN(Breite2) + COS(Breite1)*COS(Breite2)*COS(Länge2-Länge1) ]
$e = acos( sin($breite1)*sin($breite2) + cos($breite1)*cos($breite2)*cos($länge2-$länge1) );
$entfernung1 = $e * $radius;
// Die Formel zur Entfernungsberechnung bedient sich einer Einheitskugel:
// e = ARCCOS[ SIN(Breite1)*SIN(Breite2) + COS(Breite1)*COS(Breite2)*COS(Länge2-Länge1) ]
$e = acos( sin($breite1)*sin($breite3) + cos($breite1)*cos($breite3)*cos($länge3-$länge1) );
$entfernung2 = $e * $radius;
// Welche entfernung ist kürzer? (Luftlinie)
if ($entfernung1 > $entfernung2) { $entfernung = $entfernung2; }
else { $entfernung = $entfernung1; }
// Route = Luftlinie + 25%
$route = ceil($entfernung * 1.25);
if ($route < 11){
$lieferpauschale = 15;
$lieferpreis = "15,00 €/10km";
}
else {
$lieferpauschale = 15;
for($count2 = $route - 10; $count2 > 0; $count2--) {
$lieferpauschale = $lieferpauschale + 1;
}
$lieferpreis = number_format(($lieferpauschale / $route), 2, ',', '.') . " €/km";
}
?>
Nur jetzt hab ich das problem, dass mehrere Lagerorte vorhanden sind und dass nicht jedes produkt am Lagerort verfügbar ist. Dazu wollte ich die entfernungsberechnung erstmal in eine funktion packen... und in der sql datenbank ist zu jeden produkt eine string ariable dazu gekommen, die zeigt, wo dieses produkt vorhanden ist bsp: Produkt_ID = 1 ... Produkt_Lagerort = "Berlin, Bremen, München"
Jetzt möchte ich für jedes produkt in der bestellliste vom kunden eine verfügbarkeits- und entfernungsberechnung machen. dazu müsste ich erstmal die string variable auf die stichwörter durchsuchen... in einer array variable ausgeben