Mich würde interessieren wie es Shopbetreiber die auch nach Übersee versenden in "real life" machen.
Ich habe die Tabelle
countries um das Feld
countries_delivery_time erweitert. Dort steht die übliche Transportzeit von Paketen in das jeweilige Land in Werktagen drin. Zum Beispiel "
4-5" bei Frankreich und "
10-14" bei China.
In der Klasse
shoppingCart habe die Funktion
getDeliveryTime4Country ergänzt, die genau das macht, was der Name vermuten lässt: Sie fragt aus der Tabelle
countries den jeweiligen Wert von
countries_delivery_time ab.
Außerdem besitzt meine Klasse
shoppingCart die Funktion get_shipto_country, die immer versucht, einen möglichst zutreffenden Wert für das Versandland zu ermitteln:
1) Wenn es eine $_SESSION['shipto']-Adresse gibt, dann nimmt sie das zugehörige Land. Kann hier kein Land ermittelt werden, kommen wir zu Schritt 2:
2) Wir schauen im Adressbuch nach der Standardadresse des Kunden und verwenden dieses Land. Falls der Shopper nicht eingeloggt ist, hat dies keinen Erfolg, so dass wir einen anderen Versuch starten:
3) Wir versuchen über die Variable $_SERVER['GEOIP_COUNTRY_CODE'] das Land des Nutzers zu erraten:
function get_country_iso2_by_geoip
() { // Gibt ISO2-Code des Landes zurück, falls über GEOIP bestimmtes Land ein gültiges, im Shop aktives Land ist // In anderen Fällen wir der Wert false zurückgegeben $result = false; if (isset($_SERVER['GEOIP_COUNTRY_CODE'])) { $cntry_check_query = xtc_db_query
("select * from ".TABLE_COUNTRIES
." where countries_iso_code_2 = '".xtc_db_input
($_SERVER['GEOIP_COUNTRY_CODE'])."' and status = '1' "); if (xtc_db_num_rows
($cntry_check_query) > 0) { $result = $_SERVER['GEOIP_COUNTRY_CODE']; } } return $result; } Führt dies auch zu keinem Erfolg, dann bleibt noch die Fallback-Variante, ein Zielland zu ermitteln:
4) Wir nehmen als Zielland das Land an, in dem der Shop beheimatet ist - also in der Regel "Deutschland".
Da spätestens bei eingeloggten Kunden und im Checkout ein Land bekannt wird, führt für die Angabe einer Lieferzeit auf der Seite
checkout_confirmation Schritt 1 zur zutreffenden Lieferzeitangabe.