Antwort #7 am: 27. März 2014, 10:16:27
Hallo,
ich muss erst einmal eine kleine Entwarnung geben.
Das oben beschriebene Problem tritt nur auf wenn PLZ mit unterschiedlicher Länge verwendet werden.
Bei dem genannten Beispiel war, wie ich jetzt nach erneuter Prüfung fest gestellt habe, durch den Export und Import der Daten (DB <-> Excel) die führende Null verloren gegangen, was zu diesem falschen Treffer geführt hat.
Wenn also die Länge der PLZ des Landes immer gleich ist, dann ist alles OK. Ich weis jetzt (noch) nicht ob bei allen Ländern die in Betracht kommen, die PLZ immer gleiche Länge hat oder nicht. Dies werde ich aber noch prüfen.
Allerdings gibt es eine Unschönheit mit Großbritanien (wen wundert's
).
Im Modul wird die PLZ bei GB auf die zwei ersten Stellen reduziert, allerdings gibt es zumindest bei DPD laut aktueller Versandinfo Sondergebiete bei denen die erste beiden Stellen gleich sind und die Unterscheidung nur in den beiden folgenden Stellen statt findet. Beispiel: bei Loch Lemond der Bereich FK17 - FK21. Dieser Bereich würde in der aktuellen Version nicht richtig erkannt werden.
Es müsste reichen wenn die Begrenzung auf 4 Stellen geändert wird. Also:
if($dest_country == 'GB') { $dest_postal_code = substr($dest_postal_code, 0, 2); } auf
if($dest_country == 'GB') { $dest_postal_code = substr($dest_postal_code, 0, 4); } Ich konnte dies bis jetzt nur auf der DB testen. Ich versuche im Lauf des Tages ein paar weitere Test zu fahren.
@web28: . (int)$dest_postal_code . wäre der falsche Ansatz, da damit auch die alphanumerischen PLZ wie in GB oder NL nach Int convertiert werden, was dann MySQL dazu veranlasst die Strings aus den VON BIS Spalten ebenfalls nach Int zu konvertieren und dies dann zu einem falschen Ergebnis führen würde.
Viele Grüße, Dirk