複数の国からの住所入力を扱う最良の方法は何ですか?
-
03-10-2019 - |
質問
過去の私のウェブサイトのほとんどは、住所を表示することに関して、かなり米国に限定されていました。しかし、私が現在取り組んでいるプロジェクトでは、ユーザーは世界中からイベントを追加できます。私の問題は、世界中に住所が表示されるさまざまな方法に対処する方法です。たとえば、都市/州/zipは単なる私たちのものです。
私は、選択された国に基づいて表示される入力を変更すると考えていましたが、すべての国が対処する方法をどのように知るべきかわからない。
アイデア?
解決
まず、必須のものに注意してください。 「郵便番号には番号のみを含める必要がある」などの検証を使用しないでください。
次に、カントリー、都市、郵便番号、および住所用の2行のフィールドの量を最小限に抑える必要があります。
たとえば、世界中の配信を備えたこの本注文サイトをご覧ください。本をバスケットに入れてチェックアウトに向かいます。 https://securepayment.bookdepository.co.uk/checkout/summary
他のヒント
このWebサイトをご覧ください。すべての国の住所形式の情報があり、参照として使用できます。 国際住所形式
私がそれを見る方法には、2つのオプションがあります:
1-すべての国がアドレスを表示する方法を見つけ、それぞれのテンプレートを作成する
$address1='23 main st';
$city='New York';
$state='NY';
$postalcode='10000';
$country='US';
include("address_format_" . $formats[$country] . ".php");
フォーマットは、国をフォーマットにマッピングし、複数の国が同じ形式を持つことができるようになります。
2-すべてのアドレスを一般的な方法で表示します。
<address>
<?php if($address1): ?>Address: <?php echo $address1 ?><br><?php endif; ?>
<?php if($city): ?>City: <?php echo $city ?><br><?php endif; ?>
<?php if($state): ?>State: <?php echo $state ?><br><?php endif; ?>
<?php if($postalcode): ?>Postal Code: <?php echo $postalcode ?><br><?php endif; ?>
</address>
私が考えることができる2つのソリューションは次のとおりです。
- 複雑]国に基づいて住所要件を変更します。
- シンプル]カントリードロップダウンと、ユーザーがアドレスに入力できる1つのアドレスフィールドだけがありますが、そのフィールドのコンテンツを表示するだけです。
アドレスを複数のフィールドに分割する必要がある場合を除き、アドレス全体を1つのフィールドに保存する簡単な方法が最適だと思います。もちろん、これはアドレステーブルが正規化されず、ユーザーが入力したアドレスを検証することができないことを意味しますが、コードの設計によっては検証もかなり複雑です。しかし、これはユーザビリティ、デザイン、複雑さのバランスをとる行為です。
お役に立てれば。