horseatingweeds Posted July 30, 2007 Share Posted July 30, 2007 I'm having trouble validating a state and country input. I didn't write it so I'm confused about why my code isn't working with it. This is the form part: <fieldset> <legend><span>*</span> Location</legend> <select id='countrySelect' name='country' onchange='populateState()'></select> <select id='stateSelect' name='state'></select> <script type="text/javascript">initCountry('US'); </script> </fieldset> And this is the JavaScript that builds it: // If you have PHP you can set the post values like this //var postState = '<?= $_POST["state"] ?>'; //var postCountry = '<?= $_POST["country"] ?>'; var postState = ''; var postCountry = ''; // State table // // To edit the list, just delete a line or add a line. Order is important. // The order displayed here is the order it appears on the drop down. // var state = '\ US:AK:Alaska|\ US:AL:Alabama|\ US:AR:Arkansas|\ US:AS:American Samoa|\ US:AZ:Arizona|\ US:CA:California|\ US:CO:Colorado|\ US:CT:Connecticut|\ US:DC:D.C.|\ US:DE:Delaware|\ US:FL:Florida|\ US:FM:Micronesia|\ US:GA:Georgia|\ US:GU:Guam|\ US:HI:Hawaii|\ US:IA:Iowa|\ US:ID:Idaho|\ US:IL:Illinois|\ US:IN:Indiana|\ US:KS:Kansas|\ US:KY:Kentucky|\ US:LA:Louisiana|\ US:MA:Massachusetts|\ US:MD:Maryland|\ US:ME:Maine|\ US:MH:Marshall Islands|\ US:MI:Michigan|\ US:MN:Minnesota|\ US:MO:Missouri|\ US:MP:Marianas|\ US:MS:Mississippi|\ US:MT:Montana|\ US:NC:North Carolina|\ US:ND:North Dakota|\ US:NE:Nebraska|\ US:NH:New Hampshire|\ US:NJ:New Jersey|\ US:NM:New Mexico|\ US:NV:Nevada|\ US:NY:New York|\ US:OH:Ohio|\ US:OK:Oklahoma|\ US:OR:Oregon|\ US:PA:Pennsylvania|\ US:PR:Puerto Rico|\ US:PW:Palau|\ US:RI:Rhode Island|\ US:SC:South Carolina|\ US:SD:South Dakota|\ US:TN:Tennessee|\ US:TX:Texas|\ US:UT:Utah|\ US:VA:Virginia|\ US:VI:Virgin Islands|\ US:VT:Vermont|\ US:WA:Washington|\ US:WI:Wisconsin|\ US:WV:West Virginia|\ US:WY:Wyoming|\ US:AA:Military Americas|\ US:AE:Military Europe/ME/Canada|\ US:AP:Military Pacific|\ CA:AB:Alberta|\ CA:MB:Manitoba|\ CA:AB:Alberta|\ CA:BC:British Columbia|\ CA:MB:Manitoba|\ CA:NB:New Brunswick|\ CA:NL:Newfoundland and Labrador|\ CA:NS:Nova Scotia|\ CA:NT:Northwest Territories|\ CA:NU:Nunavut|\ CA:ON:Ontario|\ CA:PE:Prince Edward Island|\ CA:QC:Quebec|\ CA:SK:Saskatchewan|\ CA:YT:Yukon Territory|\ AU:AAT:Australian Antarctic Territory|\ AU:ACT:Australian Capital Territory|\ AU:NT:Northern Territory|\ AU:NSW:New South Wales|\ AU:QLD:Queensland|\ AU:SA:South Australia|\ AU:TAS:Tasmania|\ AU:VIC:Victoria|\ AU:WA:Western Australia|\ BR:AC:Acre|\ BR:AL:Alagoas|\ BR:AM:Amazonas|\ BR:AP:Amapa|\ BR:BA:Baia|\ BR:CE:Ceara|\ BR:DF:Distrito Federal|\ BR:ES:Espirito Santo|\ BR:FN:Fernando de Noronha|\ BR:GO:Goias|\ BR:MA:Maranhao|\ BR:MG:Minas Gerais|\ BR:MS:Mato Grosso do Sul|\ BR:MT:Mato Grosso|\ BR:PA:Para|\ BR:PB:Paraiba|\ BR:PE:Pernambuco|\ BR:PI:Piaui|\ BR:PR:Parana|\ BR:RJ:Rio de Janeiro|\ BR:RN:Rio Grande do Norte|\ BR:RO:Rondonia|\ BR:RR:Roraima|\ BR:RS:Rio Grande do Sul|\ BR:SC:Santa Catarina|\ BR:SE:Sergipe|\ BR:SP:Sao Paulo|\ BR:TO:Tocatins|\ NL:DR:Drente|\ NL:FL:Flevoland|\ NL:FR:Friesland|\ NL:GL:Gelderland|\ NL:GR:Groningen|\ NL:LB:Limburg|\ NL:NB:Noord Brabant|\ NL:NH:Noord Holland|\ NL:OV:Overijssel|\ NL:UT:Utrecht|\ NL:ZH:Zuid Holland|\ NL:ZL:Zeeland|\ UK:AVON:Avon|\ UK:BEDS:Bedfordshire|\ UK:BERKS:Berkshire|\ UK:BUCKS:Buckinghamshire|\ UK:CAMBS:Cambridgeshire|\ UK:CHESH:Cheshire|\ UK:CLEVE:Cleveland|\ UK:CORN:Cornwall|\ UK:CUMB:Cumbria|\ UK:DERBY:Derbyshire|\ UK:DEVON:Devon|\ UK:DORSET:Dorset|\ UK:DURHAM:Durham|\ UK:ESSEX:Essex|\ UK:GLOUS:Gloucestershire|\ UK:GLONDON:Greater London|\ UK:GMANCH:Greater Manchester|\ UK:HANTS:Hampshire|\ UK:HERWOR:Hereford & Worcestershire|\ UK:HERTS:Hertfordshire|\ UK:HUMBER:Humberside|\ UK:IOM:Isle of Man|\ UK:IOW:Isle of Wight|\ UK:KENT:Kent|\ UK:LANCS:Lancashire|\ UK:LEICS:Leicestershire|\ UK:LINCS:Lincolnshire|\ UK:MERSEY:Merseyside|\ UK:NORF:Norfolk|\ UK:NHANTS:Northamptonshire|\ UK:NTHUMB:Northumberland|\ UK:NOTTS:Nottinghamshire|\ UK:OXON:Oxfordshire|\ UK:SHROPS:Shropshire|\ UK:SOM:Somerset|\ UK:STAFFS:Staffordshire|\ UK:SUFF:Suffolk|\ UK:SURREY:Surrey|\ UK:SUSS:Sussex|\ UK:WARKS:Warwickshire|\ UK:WMID:West Midlands|\ UK:WILTS:Wiltshire|\ UK:YORK:Yorkshire|\ EI:CO ANTRIM:County Antrim|\ EI:CO ARMAGH:County Armagh|\ EI:CO DOWN:County Down|\ EI:CO FERMANAGH:County Fermanagh|\ EI:CO DERRY:County Londonderry|\ EI:CO TYRONE:County Tyrone|\ EI:CO CAVAN:County Cavan|\ EI:CO DONEGAL:County Donegal|\ EI:CO MONAGHAN:County Monaghan|\ EI:CO DUBLIN:County Dublin|\ EI:CO CARLOW:County Carlow|\ EI:CO KILDARE:County Kildare|\ EI:CO KILKENNY:County Kilkenny|\ EI:CO LAOIS:County Laois|\ EI:CO LONGFORD:County Longford|\ EI:CO LOUTH:County Louth|\ EI:CO MEATH:County Meath|\ EI:CO OFFALY:County Offaly|\ EI:CO WESTMEATH:County Westmeath|\ EI:CO WEXFORD:County Wexford|\ EI:CO WICKLOW:County Wicklow|\ EI:CO GALWAY:County Galway|\ EI:CO MAYO:County Mayo|\ EI:CO LEITRIM:County Leitrim|\ EI:CO ROSCOMMON:County Roscommon|\ EI:CO SLIGO:County Sligo|\ EI:CO CLARE:County Clare|\ EI:CO CORK:County Cork|\ EI:CO KERRY:County Kerry|\ EI:CO LIMERICK:County Limerick|\ EI:CO TIPPERARY:County Tipperary|\ EI:CO WATERFORD:County Waterford|\ '; // Country data table // // To edit the list, just delete a line or add a line. Order is important. // The order displayed here is the order it appears on the drop down. // var country = '\ AF:Afghanistan|\ AL:Albania|\ DZ:Algeria|\ AS:American Samoa|\ AD:Andorra|\ AO:Angola|\ AI:Anguilla|\ AQ:Antarctica|\ AG:Antigua and Barbuda|\ AR:Argentina|\ AM:Armenia|\ AW:Aruba|\ AU:Australia|\ AT:Austria|\ AZ:Azerbaijan|\ AP:Azores|\ BS:Bahamas|\ BH:Bahrain|\ BD:Bangladesh|\ BB:Barbados|\ BY:Belarus|\ BE:Belgium|\ BZ:Belize|\ BJ:Benin|\ BM:Bermuda|\ BT:Bhutan|\ BO:Bolivia|\ BA:Bosnia And Herzegowina|\ XB:Bosnia-Herzegovina|\ BW:Botswana|\ BV:Bouvet Island|\ BR:Brazil|\ IO:British Indian Ocean Territory|\ VG:British Virgin Islands|\ BN:Brunei Darussalam|\ BG:Bulgaria|\ BF:Burkina Faso|\ BI:Burundi|\ KH:Cambodia|\ CM:Cameroon|\ CA:Canada|\ CV:Cape Verde|\ KY:Cayman Islands|\ CF:Central African Republic|\ TD:Chad|\ CL:Chile|\ CN:China|\ CX:Christmas Island|\ CC:Cocos (Keeling) Islands|\ CO:Colombia|\ KM:Comoros|\ CG:Congo|\ CD:Congo, The Democratic Republic O|\ CK:Cook Islands|\ XE:Corsica|\ CR:Costa Rica|\ CI:Cote d` Ivoire (Ivory Coast)|\ HR:Croatia|\ CU:Cuba|\ CY:Cyprus|\ CZ:Czech Republic|\ DK:Denmark|\ DJ:Djibouti|\ DM:Dominica|\ DO:Dominican Republic|\ TP:East Timor|\ EC:Ecuador|\ EG:Egypt|\ SV:El Salvador|\ GQ:Equatorial Guinea|\ ER:Eritrea|\ EE:Estonia|\ ET:Ethiopia|\ FK:Falkland Islands (Malvinas)|\ FO:Faroe Islands|\ FJ:Fiji|\ FI:Finland|\ FR:France (Includes Monaco)|\ FX:France, Metropolitan|\ GF:French Guiana|\ PF:French Polynesia|\ TA:French Polynesia (Tahiti)|\ TF:French Southern Territories|\ GA:Gabon|\ GM:Gambia|\ GE:Georgia|\ DE:Germany|\ GH:Ghana|\ GI:Gibraltar|\ GR:Greece|\ GL:Greenland|\ GD:Grenada|\ GP:Guadeloupe|\ GU:Guam|\ GT:Guatemala|\ GN:Guinea|\ GW:Guinea-Bissau|\ GY:Guyana|\ HT:Haiti|\ HM:Heard And Mc Donald Islands|\ VA:Holy See (Vatican City State)|\ HN:Honduras|\ HK:Hong Kong|\ HU:Hungary|\ IS:Iceland|\ IN:India|\ ID:Indonesia|\ IR:Iran|\ IQ:Iraq|\ IE:Ireland|\ EI:Ireland (Eire)|\ IL:Israel|\ IT:Italy|\ JM:Jamaica|\ JP:Japan|\ JO:Jordan|\ KZ:Kazakhstan|\ KE:Kenya|\ KI:Kiribati|\ KP:Korea, Democratic People\'S Repub|\ KW:Kuwait|\ KG:Kyrgyzstan|\ LA:Laos|\ LV:Latvia|\ LB:Lebanon|\ LS:Lesotho|\ LR:Liberia|\ LY:Libya|\ LI:Liechtenstein|\ LT:Lithuania|\ LU:Luxembourg|\ MO:Macao|\ MK:Macedonia|\ MG:Madagascar|\ ME:Madeira Islands|\ MW:Malawi|\ MY:Malaysia|\ MV:Maldives|\ ML:Mali|\ MT:Malta|\ MH:Marshall Islands|\ MQ:Martinique|\ MR:Mauritania|\ MU:Mauritius|\ YT:Mayotte|\ MX:Mexico|\ FM:Micronesia, Federated States Of|\ MD:Moldova, Republic Of|\ MC:Monaco|\ MN:Mongolia|\ MS:Montserrat|\ MA:Morocco|\ MZ:Mozambique|\ MM:Myanmar (Burma)|\ NA:Namibia|\ NR:Nauru|\ NP:Nepal|\ NL:Netherlands|\ AN:Netherlands Antilles|\ NC:New Caledonia|\ NZ:New Zealand|\ NI:Nicaragua|\ NE:Niger|\ NG:Nigeria|\ NU:Niue|\ NF:Norfolk Island|\ MP:Northern Mariana Islands|\ NO:Norway|\ OM:Oman|\ PK:Pakistan|\ PW:Palau|\ PS:Palestinian Territory, Occupied|\ PA:Panama|\ PG:Papua New Guinea|\ PY:Paraguay|\ PE:Peru|\ PH:Philippines|\ PN:Pitcairn|\ PL:Poland|\ PT:Portugal|\ PR:Puerto Rico|\ QA:Qatar|\ RE:Reunion|\ RO:Romania|\ RU:Russian Federation|\ RW:Rwanda|\ KN:Saint Kitts And Nevis|\ SM:San Marino|\ ST:Sao Tome and Principe|\ SA:Saudi Arabia|\ SN:Senegal|\ XS:Serbia-Montenegro|\ SC:Seychelles|\ SL:Sierra Leone|\ SG:Singapore|\ SK:Slovak Republic|\ SI:Slovenia|\ SB:Solomon Islands|\ SO:Somalia|\ ZA:South Africa|\ GS:South Georgia And The South Sand|\ KR:South Korea|\ ES:Spain|\ LK:Sri Lanka|\ NV:St. Christopher and Nevis|\ SH:St. Helena|\ LC:St. Lucia|\ PM:St. Pierre and Miquelon|\ VC:St. Vincent and the Grenadines|\ SD:Sudan|\ SR:Suriname|\ SJ:Svalbard And Jan Mayen Islands|\ SZ:Swaziland|\ SE:Sweden|\ CH:Switzerland|\ SY:Syrian Arab Republic|\ TW:Taiwan|\ TJ:Tajikistan|\ TZ:Tanzania|\ TH:Thailand|\ TG:Togo|\ TK:Tokelau|\ TO:Tonga|\ TT:Trinidad and Tobago|\ XU:Tristan da Cunha|\ TN:Tunisia|\ TR:Turkey|\ TM:Turkmenistan|\ TC:Turks and Caicos Islands|\ TV:Tuvalu|\ UG:Uganda|\ UA:Ukraine|\ AE:United Arab Emirates|\ UK:United Kingdom|\ GB:Great Britain|\ US:United States|\ UM:United States Minor Outlying Isl|\ UY:Uruguay|\ UZ:Uzbekistan|\ VU:Vanuatu|\ XV:Vatican City|\ VE:Venezuela|\ VN:Vietnam|\ VI:Virgin Islands (U.S.)|\ WF:Wallis and Furuna Islands|\ EH:Western Sahara|\ WS:Western Samoa|\ YE:Yemen|\ YU:Yugoslavia|\ ZR:Zaire|\ ZM:Zambia|\ ZW:Zimbabwe|\ '; function TrimString(sInString) { if ( sInString ) { sInString = sInString.replace( /^\s+/g, "" );// strip leading return sInString.replace( /\s+$/g, "" );// strip trailing } } // Populates the country selected with the counties from the country list function populateCountry(defaultCountry) { if ( postCountry != '' ) { defaultCountry = postCountry; } var countryLineArray = country.split('|'); // Split into lines var selObj = document.getElementById('countrySelect'); selObj.options[0] = new Option('Select Country',''); selObj.selectedIndex = 0; for (var loop = 0; loop < countryLineArray.length; loop++) { lineArray = countryLineArray[loop].split(':'); countryCode = TrimString(lineArray[0]); countryName = TrimString(lineArray[1]); if ( countryCode != '' ) { selObj.options[loop + 1] = new Option(countryName, countryCode); } if ( defaultCountry == countryCode ) { selObj.selectedIndex = loop + 1; } } } function populateState() { var selObj = document.getElementById('stateSelect'); var foundState = false; // Empty options just in case new drop down is shorter if ( selObj.type == 'select-one' ) { for (var i = 0; i < selObj.options.length; i++) { selObj.options = null; } selObj.options.length=null; selObj.options[0] = new Option('Select State',''); selObj.selectedIndex = 0; } // Populate the drop down with states from the selected country var stateLineArray = state.split("|"); // Split into lines var optionCntr = 1; for (var loop = 0; loop < stateLineArray.length; loop++) { lineArray = stateLineArray[loop].split(":"); countryCode = TrimString(lineArray[0]); stateCode = TrimString(lineArray[1]); stateName = TrimString(lineArray[2]); if (document.getElementById('countrySelect').value == countryCode && countryCode != '' ) { // If it's a input element, change it to a select if ( selObj.type == 'text' ) { parentObj = document.getElementById('stateSelect').parentNode; parentObj.removeChild(selObj); var inputSel = document.createElement("SELECT"); inputSel.setAttribute("name","state"); inputSel.setAttribute("id","stateSelect"); parentObj.appendChild(inputSel) ; selObj = document.getElementById('stateSelect'); selObj.options[0] = new Option('Select State',''); selObj.selectedIndex = 0; } if ( stateCode != '' ) { selObj.options[optionCntr] = new Option(stateName, stateCode); } // See if it's selected from a previous post if ( stateCode == postState && countryCode == postCountry ) { selObj.selectedIndex = optionCntr; } foundState = true; optionCntr++ } } // If the country has no states, change the select to a text box if ( ! foundState ) { parentObj = document.getElementById('stateSelect').parentNode; parentObj.removeChild(selObj); // Create the Input Field var inputEl = document.createElement("INPUT"); inputEl.setAttribute("id", "stateSelect"); inputEl.setAttribute("type", "text"); inputEl.setAttribute("name", "state"); inputEl.setAttribute("size", 20); inputEl.setAttribute("value", postState); parentObj.appendChild(inputEl) ; } } function initCountry(country) { populateCountry(country); populateState(); } And here is the code that is acting funny: $country = $_POST['country']; $state = $_POST['state']; if ($country == ('CA' || 'US' || 'AU' || 'BR' || 'NL' || 'UK' || 'EI')) { if ($country == ('NL' || 'US' || 'UK')) { $response = 'Plesae enter a state for your location in the ' . $country; } else { $response = 'Plesae enter a state for your location in ' . $country; } } Regardless of the input, the function returns the else response. Link to comment https://forums.phpfreaks.com/topic/62560-validating-a-country-state-form-input/ Share on other sites More sharing options...
phpknight Posted July 31, 2007 Share Posted July 31, 2007 if ($country == ('CA' || 'US' || 'AU' || 'BR' || 'NL' || 'UK' || 'EI')) You have to compare country separately to each of these values. You cannot use the OR operator like that. So, if ($country=="CA" || $country=="US") and so on with the OR operator Link to comment https://forums.phpfreaks.com/topic/62560-validating-a-country-state-form-input/#findComment-311580 Share on other sites More sharing options...
horseatingweeds Posted July 31, 2007 Author Share Posted July 31, 2007 I see. Thanks phpknight. Link to comment https://forums.phpfreaks.com/topic/62560-validating-a-country-state-form-input/#findComment-311587 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.