Каков наилучший способ обработки адресных данных, которые могут поступать из нескольких стран?


Большинство моих веб-сайтов в прошлом были довольно ограничены Соединенными Штатами, когда дело доходило до отображения адресов. Однако в проекте, над которым я сейчас работаю, пользователи могут добавлять события со всего мира. Моя проблема заключается в том, как справиться с различными способами отображения адресов по всему миру. Например, Город/штат/Почтовый индекс - это просто американская вещь.

Я думал, что изменю отображаемые входные данные в зависимости от выбранной страны, но я понятия не имею, как Я должен знать, как каждая страна обращается.

Идеи?

Author: Matt, 2010-05-20

4 answers

Прежде всего, будьте осторожны с тем, что вы делаете обязательным. Не используйте проверки, такие как "Почтовый индекс должен содержать только цифры".

Затем у вас должно быть минимальное количество полей - Страна, Город, Почтовый индекс и 2 строки для адреса.

Проверьте, например, этот сайт заказа книг с доставкой по всему миру. Положите книгу в корзину и направляйтесь к кассе, чтобы увидеть: https://securepayment.bookdepository.co.uk/checkout/summary

 2
Author: Meh, 2010-05-20 00:17:02

Ознакомьтесь с этим веб-сайтом, на нем есть информация формата адресов для всех стран, вы можете использовать его в качестве справочного материала. Международные форматы адресов

 2
Author: alejandrobog, 2010-05-20 00:11:47

Насколько я понимаю, у вас есть 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>
 1
Author: Galen, 2010-05-20 00:30:12

Два решения, которые я могу придумать:

  1. [Сложный] Измените требования к адресам в зависимости от страны.
  2. [Просто] Просто есть раскрывающийся список стран и только одно поле адреса, в котором пользователь может ввести адрес, какой бы он/она ни хотел, затем вы просто отобразите содержимое этого поля.

Если вам действительно не нужно, чтобы адрес был разделен на несколько полей, я считаю, что лучше всего использовать простой метод хранения всего адреса в одном поле. От конечно, это означает, что ваша таблица адресов не будет нормализована, и вы не сможете проверить адрес, введенный пользователем, хотя проверка также будет довольно сложной в зависимости от дизайна вашего кода. Но это балансирование между удобством использования, дизайном и сложностью.

Надеюсь, это поможет.

 0
Author: Waleed Al-Balooshi, 2010-05-20 00:37:52