"So we list, perhaps half a dozen, and provide a free-text entry box for others.
"
Actually, I am thinking about the sampe approach, but I have new questions.
For these half a dozen countries you list, you get it from a database table or not? In theory, we want it from a database table "countries", so we can apply control and also do anything according to the countries. Such as send notice email to Canadian customers, US customers etc. Do the analysis based on the countries etc. Right?
But at the same time, you offer a free text country field for other countries. So we either not use "countries" table at all or we have to deal with that some accounts' countries' names are from the "countires" table. Some are from the free input text field.
And once you have the free input text field open, you lost control of the countries.
For example, if you put U.K., U.S.A. in the "countries" table and list them in the drop down menu. And you can apply control to these select U.S.A as the country by checking the id of the country. But you cannot stop people to input U.S.A. (US, USA, United States, United States of America) to the free input text field you offer. Say then if you want to apply that all customers from U.S.A cannot order Cuba cigars, etc..., you missed the guy who free input theU.S.A. (US, USA, United States, United States of America) as the country name.
Of course, we can add all kind automatic name checking too, and human manual checking on these free input countries names (to prevent U.S.A., US, USA, United States, United States of America appears in the countries field or to slip through the cuba cigars control), but this is just an example, how about you also want to control about other countries, for example if the book's CD with the encrypt codes cannot be exported to outside U.S.A The point is
In simple words, if countries are from a "countries" table we can use it as a control and analysis tool. But if countries or some of the countries from free input text. We miss the the control and analysis tools on the countries.
How do you handle this?