Form: let user select their country (drop-down) and get the currency (php)
Currently I'm writing a short survey (html form) using php, mysql and jquery. I want the user to select their country from a drop-down list and then get the right currency (server side) so later on I can ask things referring to the right currency.
I really don't got a clear view on how to achieve this. I know I can find an up to date country list from: http://www.iso.org/iso/country_codes/iso_3166_code_lists.htm I could make into a php array but then?
http://snipplr.com/view/36437/php-country-code--to-html-currency-symbol-list/ Seem开发者_高级运维s nice code, but I like to use something that is up to date.
Its no problem for me to use a mysql database, but it is a problem to install plug-ins/expansions (hosting won't allow it).
Does somebody knows a good (and maybe easy) way to achieve this?
You can use CURL or file_get_contents() to read the content from the URL and is always updated.
Not answering your question, but:
As of PHP5.3 the intl became a default. It contains NumberFormatter::formatCurrency() that does what your linked country_currency() is trying to do - only properly. If PHP5.3 is a viable minimum requirement (seeing that 5.2 is deprecated and not supported anymore) - use the intl functions.
With Locale::acceptFromHttp() you can check the browser's request headers to preselect the best matching locale.
Your ISO CountryCode list should still be helpful for a manual <select>
on a certain level. But keep in mind that it's not quite accurate: Germany translates to de
, which may not be specific enough seeing de_AT
, de_CH
, de_DE
. Each of them may present Currency differently. €1,123.23
, 1 123,23 €
, and so on. You'll still need to know which currency you're processing, though. So you need the list of ISO country codes AND the map of countrycode to currency.
PHP Intl's NumberFormatter accepts English as a language for any country. So just use en_
plus your country code.
echo (new NumberFormatter('en_DE', NumberFormatter::CURRENCY))
->getTextAttribute(NumberFormatter::CURRENCY_CODE); // EUR
echo (new NumberFormatter('en_RS', NumberFormatter::CURRENCY))
->getTextAttribute(NumberFormatter::CURRENCY_CODE); // RSD
精彩评论