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

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

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

Идеи?


person Andrew.S    schedule 20.05.2010    source источник


Ответы (4)


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

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

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

person Meh    schedule 20.05.2010
comment
Я думаю, что по существу буду следовать этой идее. Я оставлю поля ввода довольно свободными, как вы упомянули, а затем сделаю запрос API карт, чтобы получить координаты любого адреса, а затем также сохранить эту информацию. Таким образом, я могу выполнять все свои взаимодействия/расчеты на основе координат и иметь текстовую информацию только для чтения посетителями, и поэтому на самом деле не так важно, как они ее вводят. - person Andrew.S; 20.05.2010

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

person alejandrobog    schedule 20.05.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>
person Galen    schedule 20.05.2010

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

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

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

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

person Waleed Al-Balooshi    schedule 20.05.2010