Каков наилучший способ справиться с адресами, которые могут быть из разных стран? - PullRequest
6 голосов
/ 20 мая 2010

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

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

Идеи? * * 1005

Ответы [ 4 ]

2 голосов
/ 20 мая 2010

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

2 голосов
/ 20 мая 2010

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

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

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

1 голос
/ 20 мая 2010

Как я вижу, у вас есть 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>
0 голосов
/ 20 мая 2010

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

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

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

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

...