State/Province dropdown

Here's a forum to share the forms that you create. Show the code and add a picture - or a link to the form on the web.

State/Province dropdown

Postby rodsdesign on Fri Feb 15, 2008 1:17 pm

Hi all,

I'm sure you have used something like this - but in case you're always copying and pasting a drop down for states, I created an include that I have used a lot!

1. Copy and paste this code into a file (I call it stateselect.php) and put it somewhere within your joomla installation (I usually create a directory called myincludes)
Code for stateselect.php:
Code: Select all
<select name='state' size='1'>
<option value=''>Choose a State</option>
<option value='AK' <?php if ($_POST['state'] == 'AK') echo 'selected='selected''; ?>>Alaska</option>
<option value='AL' <?php if ($_POST['state'] == 'AL') echo 'selected='selected''; ?>>Alabama</option>
<option value='AR' <?php if ($_POST['state'] == 'AR') echo 'selected='selected''; ?>>Arkansas</option>
<option value='AZ' <?php if ($_POST['state'] == 'AZ') echo 'selected='selected''; ?>>Arizona</option>
<option value='CA' <?php if ($_POST['state'] == 'CA') echo 'selected='selected''; ?>>California</option>
<option value='CO' <?php if ($_POST['state'] == 'CO') echo 'selected='selected''; ?>>Colorado</option>
<option value='CT' <?php if ($_POST['state'] == 'CT') echo 'selected='selected''; ?>>Connecticut</option>
<option value='DC' <?php if ($_POST['state'] == 'DC') echo 'selected='selected''; ?>>District of Columbia</option>
<option value='DE' <?php if ($_POST['state'] == 'DE') echo 'selected='selected''; ?>>Delaware</option>
<option value='FL' <?php if ($_POST['state'] == 'FL') echo 'selected='selected''; ?>>Florida</option>
<option value='GA' <?php if ($_POST['state'] == 'GA') echo 'selected='selected''; ?>>Georgia</option>
<option value='HI' <?php if ($_POST['state'] == 'HI') echo 'selected='selected''; ?>>Hawaii</option>
<option value='IA' <?php if ($_POST['state'] == 'IA') echo 'selected='selected''; ?>>Iowa</option>
<option value='ID' <?php if ($_POST['state'] == 'ID') echo 'selected='selected''; ?>>Idaho</option>
<option value='IL' <?php if ($_POST['state'] == 'IL') echo 'selected='selected''; ?>>Illinois</option>
<option value='IN' <?php if ($_POST['state'] == 'IN') echo 'selected='selected''; ?>>Indiana</option>
<option value='KS' <?php if ($_POST['state'] == 'KS') echo 'selected='selected''; ?>>Kansas</option>
<option value='KY' <?php if ($_POST['state'] == 'KY') echo 'selected='selected''; ?>>Kentucky</option>
<option value='LA' <?php if ($_POST['state'] == 'LA') echo 'selected='selected''; ?>>Louisiana</option>
<option value='MA' <?php if ($_POST['state'] == 'MA') echo 'selected='selected''; ?>>Massachusetts</option>
<option value='MD' <?php if ($_POST['state'] == 'MD') echo 'selected='selected''; ?>>Maryland</option>
<option value='ME' <?php if ($_POST['state'] == 'ME') echo 'selected='selected''; ?>>Maine</option>
<option value='MI' <?php if ($_POST['state'] == 'MI') echo 'selected='selected''; ?>>Michigan</option>
<option value='MN' <?php if ($_POST['state'] == 'MN') echo 'selected='selected''; ?>>Minnesota</option>
<option value='MO' <?php if ($_POST['state'] == 'MO') echo 'selected='selected''; ?>>Missouri</option>
<option value='MS' <?php if ($_POST['state'] == 'MS') echo 'selected='selected''; ?>>Mississippi</option>
<option value='MT' <?php if ($_POST['state'] == 'MT') echo 'selected='selected''; ?>>Montana</option>
<option value='NC' <?php if ($_POST['state'] == 'NC') echo 'selected='selected''; ?>>North Carolina</option>
<option value='ND' <?php if ($_POST['state'] == 'MD') echo 'selected='selected''; ?>>North Dakota</option>
<option value='NE' <?php if ($_POST['state'] == 'ME') echo 'selected='selected''; ?>>Nebraska</option>
<option value='NH' <?php if ($_POST['state'] == 'NH') echo 'selected='selected''; ?>>New Hampshire</option>
<option value='NJ' <?php if ($_POST['state'] == 'NJ') echo 'selected='selected''; ?>>New Jersey</option>
<option value='NM' <?php if ($_POST['state'] == 'NM') echo 'selected='selected''; ?>>New Mexico</option>
<option value='NV' <?php if ($_POST['state'] == 'NV') echo 'selected='selected''; ?>>Nevada</option>
<option value='NY' <?php if ($_POST['state'] == 'NY') echo 'selected='selected''; ?>>New York</option>
<option value='OH' <?php if ($_POST['state'] == 'OH') echo 'selected='selected''; ?>>Ohio</option>
<option value='OK' <?php if ($_POST['state'] == 'OK') echo 'selected='selected''; ?>>Oklahoma</option>
<option value='OR' <?php if ($_POST['state'] == 'OR') echo 'selected='selected''; ?>>Oregon</option>
<option value='PA' <?php if ($_POST['state'] == 'PA') echo 'selected='selected''; ?>>Pennsylvania</option>
<option value='PR' <?php if ($_POST['state'] == 'PR') echo 'selected='selected''; ?>>Puerto Rico</option>
<option value='RI' <?php if ($_POST['state'] == 'RI') echo 'selected='selected''; ?>>Rhode Island</option>
<option value='SC' <?php if ($_POST['state'] == 'SC') echo 'selected='selected''; ?>>South Carolina</option>
<option value='SD' <?php if ($_POST['state'] == 'SD') echo 'selected='selected''; ?>>South Dakota</option>
<option value='TN' <?php if ($_POST['state'] == 'TN') echo 'selected='selected''; ?>>Tennessee</option>
<option value='TX' <?php if ($_POST['state'] == 'TX') echo 'selected='selected''; ?>>Texas</option>
<option value='UT' <?php if ($_POST['state'] == 'UT') echo 'selected='selected''; ?>>Utah</option>
<option value='VA' <?php if ($_POST['state'] == 'VA') echo 'selected='selected''; ?>>Virginia</option>
<option value='VT' <?php if ($_POST['state'] == 'VT') echo 'selected='selected''; ?>>Vermont</option>
<option value='WA' <?php if ($_POST['state'] == 'WA') echo 'selected='selected''; ?>>Washington</option>
<option value='WI' <?php if ($_POST['state'] == 'WI') echo 'selected='selected''; ?>>Wisconsin</option>
<option value='WV' <?php if ($_POST['state'] == 'WV') echo 'selected='selected''; ?>>West Virginia</option>
<option value='WY' <?php if ($_POST['state'] == 'WY') echo 'selected='selected''; ?>>Wyoming</option>
<option value=''>Canadian Provinces</option>
<option value='AB' <?php if ($_POST['state'] == 'AB') echo 'selected='selected''; ?>>Alberta</option>
<option value='BC' <?php if ($_POST['state'] == 'BC') echo 'selected='selected''; ?>>British Columbia</option>
<option value='MB' <?php if ($_POST['state'] == 'MB') echo 'selected='selected''; ?>>Manitoba</option>
<option value='NB' <?php if ($_POST['state'] == 'NB') echo 'selected='selected''; ?>>New Brunswick</option>
<option value='NF' <?php if ($_POST['state'] == 'NF') echo 'selected='selected''; ?>>Newfoundland</option>
<option value='NT' <?php if ($_POST['state'] == 'NT') echo 'selected='selected''; ?>>Northwest Territories</option>
<option value='NS' <?php if ($_POST['state'] == 'NS') echo 'selected='selected''; ?>>Nova Scotia</option>
<option value='NU' <?php if ($_POST['state'] == 'NU') echo 'selected='selected''; ?>>Nunavut</option>
<option value='ON' <?php if ($_POST['state'] == 'ON') echo 'selected='selected''; ?>>Ontario</option>
<option value='PE' <?php if ($_POST['state'] == 'PE') echo 'selected='selected''; ?>>Prince Edward Island</option>
<option value='QC' <?php if ($_POST['state'] == 'QC') echo 'selected='selected''; ?>>Quebec</option>
<option value='SK' <?php if ($_POST['state'] == 'SK') echo 'selected='selected''; ?>>Saskatchewan</option>
<option value='YT' <?php if ($_POST['state'] == 'YT') echo 'selected='selected''; ?>>Yukon Territory</option>
</select>

2. in your form, where you'd normally put the <select> </select>, put
Code: Select all
<?php include ( 'myincludes/stateselect.php' );?>


that's it - the states will be included in the form, and they'll be remembered if someone puts in the wrong text for image verification.

hope that helps someone :)
rodsdesign
Junior Boarder
 
Posts: 32
Joined: Wed Nov 07, 2007 5:41 pm

Re:State/Province dropdown

Postby GreyHead on Sat Feb 16, 2008 6:05 pm

Hi Rod,

This is neat - I like the idea of using and include file for this. It prompted me to go back and look to see if Joomla had a buil-in states list (it doesn't as far as i can see). However I did find some built in constructor code that lets you do this with less repetition
Code: Select all
<?php
$USStateArray = Array(
'AK' => 'Alaska',
'AL' => 'Alabama',
'AR' => 'Arkansas',
'AZ' => 'Arizona',
'CA' => 'California',
'CO' => 'Colorado',
'CT' => 'Connecticut',
'DC' => 'District of Columbia',
'DE' => 'Delaware',
'FL' => 'Florida',
'GA' => 'Georgia',
'HI' => 'Hawaii',
'IA' => 'Iowa',
'ID' => 'Idaho',
'IL' => 'Illinois',
'IN' => 'Indiana',
'KS' => 'Kansas',
'KY' => 'Kentucky',
'LA' => 'Louisiana',
'MA' => 'Massachusetts',
'MD' => 'Maryland',
'ME' => 'Maine',
'MI' => 'Michigan',
'MN' => 'Minnesota',
'MO' => 'Missouri',
'MS' => 'Mississippi',
'MT' => 'Montana',
'NC' => 'North Carolina',
'MD' => 'North Dakota',
'ME' => 'Nebraska',
'NH' => 'New Hampshire',
'NJ' => 'New Jersey',
'NM' => 'New Mexico',
'NV' => 'Nevada',
'NY' => 'New York',
'OH' => 'Ohio',
'OK' => 'Oklahoma',
'OR' => 'Oregon',
'PA' => 'Pennsylvania',
'PR' => 'Puerto Rico',
'RI' => 'Rhode Island',
'SC' => 'South Carolina',
'SD' => 'South Dakota',
'TN' => 'Tennessee',
'TX' => 'Texas',
'UT' => 'Utah',
'VA' => 'Virginia',
'VT' => 'Vermont',
'WA' => 'Washington',
'WI' => 'Wisconsin',
'WV' => 'West Virginia',
'WY' => 'Wyoming' );
foreach ( $USStateArray as $abb => $name ) {
  $options[] = mosHTML::makeOption($abb, $name);
}
$select = mosHTML::selectList($options, 'state[]', 'size='1'', 'value', 'text', $_POST['state']);
echo $select;
?>
<br />
<input name='state[]' type='hidden' />
This works in a ChronoForms form. A couple of things to notice though: (a) I used the mosHTML library (documented in the Joomla Developers Manual) really just to see if it works, you could do the same with a foreach loop to generate <option> tags. (b) to get the result into ChronoForms I had to add that dummy hidden input - it's only there so that when ChronoForms parses the HTML it finds the field name.

Bob
Bob Janes
info at greyhead.net
ChronoForms Support If you like ChronoForms please vote or post a review at Joomla.org
User avatar
GreyHead
Platinum Boarder
 
Posts: 3253
Joined: Tue May 29, 2007 10:15 pm
Location: Brittany

drop down menu simplified

Postby sailsmart on Thu May 08, 2008 10:57 pm

You mean I have to put in all this code and it's going to post the drop down answer? Do I have to build arrays?;)
sailsmart
Junior Boarder
 
Posts: 21
Joined: Tue Apr 22, 2008 12:03 pm

Re:drop down menu simplified

Postby admin on Fri May 09, 2008 6:38 pm

Both the codes posted will work fine, just pick anyone of them, Bob used the Joomla built in functions to make the dropdown through arrays, it makes it easier to show the selected entry too!

Cheers

Max
ChronoForms/ChronoConnectivity/ChronoComments Developer Thanks for using our components!
If you have any problems with any extension please tell us.
If you like any of our extensions please post a review at Joomla.org
Want users to submit their content to your website ? try Submit Story
Want to list/edit/delete your data ? try ChronoConnectivity
Want to have stylish AJAX comments ? try ChronoComments
User avatar
admin
Platinum Boarder
 
Posts: 2355
Joined: Mon Aug 14, 2006 5:29 am

Re:State/Province dropdown

Postby kai920 on Thu May 15, 2008 6:23 am

Hi guys,

I am trying to utilize similar code in a form I am building. I would like to eventually move the array code into a PHP file so that it can be edited easily as the array of list values could change often.

Here is a simple example I tried to adapt - is there something wrong with this code? :dry:

Code: Select all
<?php
$Category = Array(
'Audio' => 'Audio',
'Blog' => 'Blog' );

foreach ( $Category as $cat => $category ) {
  $options[] = mosHTML::makeOption($cat, $category);
}
$select = mosHTML::selectList($options, 'category[]', 'size='1'', 'value', 'text', $_POST['category']);
echo $select;
?>
<br />
<input name='category[]' type='hidden' />
kai920
Senior Boarder
 
Posts: 46
Joined: Thu Mar 20, 2008 4:00 pm

Re:State/Province dropdown

Postby GreyHead on Thu May 15, 2008 7:42 am

Hi kai920,

It looks OK to my eyeball.

What happens when you use it?

Bob
Bob Janes
info at greyhead.net
ChronoForms Support If you like ChronoForms please vote or post a review at Joomla.org
User avatar
GreyHead
Platinum Boarder
 
Posts: 3253
Joined: Tue May 29, 2007 10:15 pm
Location: Brittany

Re:State/Province dropdown

Postby kai920 on Thu May 15, 2008 7:47 am

hmm nothing happens! The form becomes blank when I paste the above code in.

That's why I thought something was wrong with it...

I tried to turn on debugging in Chronoforms - but don't see any debugging info.

Oh, I should mention I am using J!1.5.x - is that why I am getting a blank form?
kai920
Senior Boarder
 
Posts: 46
Joined: Thu Mar 20, 2008 4:00 pm

Re:State/Province dropdown

Postby GreyHead on Thu May 15, 2008 8:41 am

Hi Kai920,

Missed one, you've got confused quoted around size - should be 'size="1"' I also got a PHP notice about an undefined index. Modified code is
Code: Select all
<?php 
$Category = Array( 
'Audio' => 'Audio',
'Blog' => 'Blog' );
$options = array();
if ( !isset($_POST['category']) ) {
  $_POST['category'] = "";
}
foreach ( $Category as $cat => $category ) { 
  $options[] = mosHTML::makeOption($cat, $category); 

$select = mosHTML::selectList($options, 'category[]',
  'size="1"', 'value', 'text', $_POST['category']); 
echo $select; 
?>
Bob
Bob Janes
info at greyhead.net
ChronoForms Support If you like ChronoForms please vote or post a review at Joomla.org
User avatar
GreyHead
Platinum Boarder
 
Posts: 3253
Joined: Tue May 29, 2007 10:15 pm
Location: Brittany

Re:State/Province dropdown

Postby kai920 on Thu May 15, 2008 8:53 am

Hi Bob,

Many thanks for your reply. Maybe I am misunderstanding what the code is supposed to do :blush:

I used the code as posted immediately above, I thought I would see a pull down list with "Audio" and "Blog"... is that not what should show up?

Or perhaps something is still wrong with the code? Because I do not see the J template, nor the submit button. Screenshot:

Image
kai920
Senior Boarder
 
Posts: 46
Joined: Thu Mar 20, 2008 4:00 pm

Re:State/Province dropdown

Postby GreyHead on Thu May 15, 2008 9:02 am

Hi Kai920,

Sorry trying to do two things at once I stuck it in a copy of the test form and forgot to delete the other code. I'll amend my post now. That said, I get the drop-down OK.

Bob Image
Bob Janes
info at greyhead.net
ChronoForms Support If you like ChronoForms please vote or post a review at Joomla.org
User avatar
GreyHead
Platinum Boarder
 
Posts: 3253
Joined: Tue May 29, 2007 10:15 pm
Location: Brittany

Re:State/Province dropdown

Postby kai920 on Thu May 15, 2008 9:10 am

Could there be something wrong with my Joomla setup? Very strange : I am getting a blank screen with only the following code in the form. No Joomla template, no drop down list, nothing.

Code: Select all
<?php   
$Category = Array(   
'Audio' => 'Audio', 
'Blog' => 'Blog' ); 
$options = array();
if ( !isset($_POST['category']) ) {
  $_POST['category'] = "";
}
foreach ( $Category as $cat => $category ) {   
  $options[] = mosHTML::makeOption($cat, $category);   
}   
$select = mosHTML::selectList($options, 'category[]', 
  'size="1"', 'value', 'text', $_POST['category']);   
echo $select;   
?>
<input name='category[]' type='hidden' />


The HTML source only has one line:

<form name="ChronoContact_quotes" id="ChronoContact_quotes" method="post" action="index.php?option=com_chronocontact&task=send&chronoformname=quotes" >
kai920
Senior Boarder
 
Posts: 46
Joined: Thu Mar 20, 2008 4:00 pm

Re:State/Province dropdown

Postby GreyHead on Thu May 15, 2008 9:18 am

Hi Kai,

It looks Ok to me - but there may still be a typo in there. Set your site to Error Reporting Maximum; comment out most of the lines of code and refresh the form, uncomment a few more lines until you find where error is.

Bob
Bob Janes
info at greyhead.net
ChronoForms Support If you like ChronoForms please vote or post a review at Joomla.org
User avatar
GreyHead
Platinum Boarder
 
Posts: 3253
Joined: Tue May 29, 2007 10:15 pm
Location: Brittany

Re:State/Province dropdown

Postby kai920 on Thu May 15, 2008 9:33 am

Hi Bob,

Thanks for the hint.

I set error_reporting = E_ALL and display_errors = On and finally got a meaningful error msg.

Fatal error: Class 'mosHTML' not found in /home/joomla/components/com_chronocontact/chronocontact.html.php(83) : eval()'d code on line 10

I assume Joomla 1.5.x still uses moSHTML?
kai920
Senior Boarder
 
Posts: 46
Joined: Thu Mar 20, 2008 4:00 pm

Re:State/Province dropdown

Postby GreyHead on Thu May 15, 2008 2:07 pm

Hi kai920,

I must have Legacy mode on. Try JHTML instead see here for docs.

Bob
Bob Janes
info at greyhead.net
ChronoForms Support If you like ChronoForms please vote or post a review at Joomla.org
User avatar
GreyHead
Platinum Boarder
 
Posts: 3253
Joined: Tue May 29, 2007 10:15 pm
Location: Brittany

Re:State/Province dropdown

Postby kai920 on Thu May 15, 2008 2:20 pm

Ah-ha! Thanks for the clarification once again :side:

I turned on the legacy bot and it works nicely now.

I did come across the api link, but found it strange there was no "selectList". Is it hidden under another class?

Never mind, found something HERE!
kai920
Senior Boarder
 
Posts: 46
Joined: Thu Mar 20, 2008 4:00 pm

Next

Return to Share your forms with others

Who is online

Users browsing this forum: No registered users and 1 guest