Jump to content

Archived

This topic is now archived and is closed to further replies.

gogowanda

US state dropdown list in customer account creation

Recommended Posts

Hi

I have spent several days now pulling out my hair trying to make some progress on /catalog/address_book_process.php trying to give me a pull-down menu. Could anyone PLEASE help me with this problem as its about the last thing I need sorted to get my store going.


thanks

Rich

"May the seam be with you"

Share this post


Link to post
Share on other sites

Hi

1000 apologies for keeping on but can anyone PLEASE help me out on the above thread as its more or less the last thing now stopping me from going online. I have tried but dont know how to sort this one out.


thanks

Rich

"May the seam be with you"

Share this post


Link to post
Share on other sites

For those who would like to have only U.S. states and Canadian provinces in their State/Province drop down menu, here's an alternative (find in create_account.php):

 

              <tr>
               <td class="main"><?php echo ENTRY_STATE; ?></td>
               <td class="main">
<?php
       $zones_array[] = array('id' => '', 'text' => 'Please Select');
       $zones_query = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_country_id = '223' order by zone_name");
       while ($zones_values = tep_db_fetch_array($zones_query)) {
         $zones_array[] = array('id' => $zones_values['zone_name'], 'text' => $zones_values['zone_name']);
       }

       $zones_array2[] = array('id' => '', 'text' => '----------');
       $zones_query2 = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_country_id = '38' order by zone_name");
       while ($zones_values = tep_db_fetch_array($zones_query2)) {
         $zones_array2[] = array('id' => $zones_values['zone_name'], 'text' => $zones_values['zone_name']);
       }
       echo tep_draw_pull_down_menu('state', array_merge($zones_array, $zones_array2), 'Please Select');

   if (tep_not_null(ENTRY_STATE_TEXT)) echo ' <span class="inputRequirement">' . ENTRY_STATE_TEXT;
?>
               </td>
             </tr>
<?php
 }
?>

 

All I did was to make an extra array and query to include the Canadian provinces (zone 38), and merged that with the U.S. array (zone 223). It's probably a roundabout way of doing it, but it works for me. :D

 

- aezalpha :D

Share this post


Link to post
Share on other sites

Hi aezaplpha

Does your mod allow you to go back in and edit your details in /catalog/address_book_process.php ? i.e. do you get a pull-down there or do you have to set it manually? What i DESPERATELY need is a pull-down when you go back in and edit your address book.


thanks

Rich

"May the seam be with you"

Share this post


Link to post
Share on other sites

No, not yet. I'm trying to do the same thing you're doing, but I don't seem to be finding the right scripts to be putting this code in. From the original MS2 code for address_book_process.php, it looks like it *ought* to load up the pull-down menu when the selected zone comes with a zones list. Maybe there's a dependency somewhere that makes it not load it up...but I haven't found what that is yet. <_<

 

- aezalpha :D

Share this post


Link to post
Share on other sites

Hi aezaplpha

Nice one, if you do find it, PLEASE let me know, its been bugging me for weeks now.


thanks

Rich

"May the seam be with you"

Share this post


Link to post
Share on other sites

Until Matti's contribution is ready, does anyone have any idea how I might be able to have the State/Province field match the Zone Name or Zone Abbreviation? So, for example, if I enter "CO" instead of "Colorado", it won't make me choose a state from the dropdown. Thanks!

Share this post


Link to post
Share on other sites

Is there still no solution for adding additional addresses and editing your existing address? (address_book_process.php)

Share this post


Link to post
Share on other sites

OK, I found the answer to the edit and add an address issue for this piece of code that works for me so far in every situation.

 

The file you need to add the same piece of code to is /catalog/includes/modules/address_book_details.php.

 

Simply add the same code from post one to the same area of this file and adding or editing an address book entry will give you a dropdown list for the state.

 

I hope this helps someone as this code has helped me!


If at first you don't succeed! Erase all evidence that you tried!

The higher... the fewer...

Share this post


Link to post
Share on other sites

Rather than using two queries for two countries, you can do it with just one. I posted some code in this thread. Note: the posted code will show American states and Canadian provinces in the same drop down and will not change based on country.

 

Hth,

Matt

Share this post


Link to post
Share on other sites

If anybody knows of open source postcode data, please let me know - it must be comprehensive - I have used a commercial product of USA postcodes... it had over 70,000 rows of data.

 

Matti


Matti Ressler

 

We were all once expert at...... nothing

_____

Share this post


Link to post
Share on other sites
The file you need to add the same piece of code to is /catalog/includes/modules/address_book_details.php.

 

Simply add the same code from post one to the same area of this file and adding or editing an address book entry will give you a dropdown list for the state.

I'm not sure that the solution is as simple as that for address_book_details.php. When editing the address, it's preferable for the existing address to be preloaded into the controls. Using the post on page 1 works great to create the dropdown except the state (in the US example) always defaults to the first alphabetically (AL).

 

Looking at the code, there is already a bunch of logic that evaluates whether the location has zones and if so, displays them in a dropdown :huh: so, it looks as though the intention was there, and it's just not working. Problem is that the [$process == true] never evaluates and we're routed through the plain old text box option.

 

My file searching is a little screwy right now - anyone know where the $process and $entry_state_has_zones values are set?

 

 

Thanks

Share this post


Link to post
Share on other sites
The US postal service will give you various pieces of zip code data. What do you need? Or...what are you trying to do?

 

Cheers,

Matt

Postcode - state - city - these three. I wrote a modification for a client where the customer entered their postcode at login.php for account signup - this prefilled state and city (drop menu if there was more than one city). Unfortunately, the postcodes db I used was a commercial product - I would like to contribute the mod including at least one postcodes table (USA), but that of course must be GPL or usable under the GPL.

 

Matti


Matti Ressler

 

We were all once expert at...... nothing

_____

Share this post


Link to post
Share on other sites
OK, I found the answer to the edit and add an address issue for this piece of code that works for me so far in every situation.

 

The file you need to add the same piece of code to is /catalog/includes/modules/address_book_details.php.

 

Simply add the same code from post one to the same area of this file and adding or editing an address book entry will give you a dropdown list for the state.

 

I hope this helps someone as this code has helped me!

Hi

Just like to say big thanks to Matt (Johnson) for the original post for giving the drop-downs and Scott for his bit allowing you to change the address once entered. A very useful mod that would be nice to be bundled together into a contribution. Well done lads. ;)


thanks

Rich

"May the seam be with you"

Share this post


Link to post
Share on other sites
Just like to say big thanks to Matt (Johnson)
Just as an FYI, I'm pretty sure that he prefers Matti to abbreviated versions of his name. This is especially relevant as three of the top 10 posters have the string "mat" in our names, so confusion is easy (I got a PM intended for the third today).

 

Cheers,

Matt

Share this post


Link to post
Share on other sites

Okay...TWICE I've read of people getting parse errors using this modification. So where's the fix? WHAT did you do to correct this problem?

 

I'm getting the same thing, too, so where is the parse error coming from?:

 

<?php
if (ACCOUNT_STATE == 'true') {
?>

? ? ? ? ? ? <tr>
? ? ? ? ? ? <td class="main"> <?php echo ENTRY_STATE; ?></td>
? ? ? ? ? ? <td class="main"> 

<?php
? ? ? $zones_array[] = array('id' => '', 'text' => 'Please Select');
? ? ? $zones_query = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_country_id = '223' order by zone_name");
? ? ? while ($zones_values = tep_db_fetch_array($zones_query)) {
? ? ? ? $zones_array[] = array('id' => $zones_values['zone_name'], 'text' => $zones_values['zone_name']);
? ? ? }
? ? ? echo tep_draw_pull_down_menu('state', $zones_array);
? ? ? 
? if (tep_not_null(ENTRY_STATE_TEXT)) echo ' <span class="inputRequirement">' . ENTRY_STATE_TEXT;
?>

? ? ? ? ? ? ? </td>
? ? ? ? ? ? </tr>

<?php
}
?>

Share this post


Link to post
Share on other sites
Okay...TWICE I've read of people getting parse errors using this modification. So where's the fix? WHAT did you do to correct this problem?

 

I'm getting the same thing, too, so where is the parse error coming from?:

 

<?php
if (ACCOUNT_STATE == 'true') {
?>

? ? ? ? ? ? <tr>
? ? ? ? ? ? <td class="main"> <?php echo ENTRY_STATE; ?></td>
? ? ? ? ? ? <td class="main"> 

<?php
? ? ? $zones_array[] = array('id' => '', 'text' => 'Please Select');
? ? ? $zones_query = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_country_id = '223' order by zone_name");
? ? ? while ($zones_values = tep_db_fetch_array($zones_query)) {
? ? ? ? $zones_array[] = array('id' => $zones_values['zone_name'], 'text' => $zones_values['zone_name']);
? ? ? }
? ? ? echo tep_draw_pull_down_menu('state', $zones_array);
? ? ? 
? if (tep_not_null(ENTRY_STATE_TEXT)) echo ' <span class="inputRequirement">' . ENTRY_STATE_TEXT;
?>

? ? ? ? ? ? ? </td>
? ? ? ? ? ? </tr>

<?php
}
?>

You probably have it misplaced and have an extra curly bracket perhaps?

 

<?php
/*
?$Id: create_account.php,v 1.65 2003/06/09 23:03:54 hpdl Exp $

?osCommerce, Open Source E-Commerce Solutions
?http://www.oscommerce.com

?Copyright (c) 2003 osCommerce

?Released under the GNU General Public License
*/

?require('includes/application_top.php');

// needs to be included earlier to set the success message in the messageStack
?require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CREATE_ACCOUNT);

?$process = false;
?if (isset($HTTP_POST_VARS['action']) && ($HTTP_POST_VARS['action'] == 'process')) {
? ?$process = true;

? ?if (ACCOUNT_GENDER == 'true') {
? ? ?if (isset($HTTP_POST_VARS['gender'])) {
? ? ? ?$gender = tep_db_prepare_input($HTTP_POST_VARS['gender']);
? ? ?} else {
? ? ? ?$gender = false;
? ? ?}
? ?}
? ?$firstname = tep_db_prepare_input($HTTP_POST_VARS['firstname']);
? ?$lastname = tep_db_prepare_input($HTTP_POST_VARS['lastname']);
? ?if (ACCOUNT_DOB == 'true') $dob = tep_db_prepare_input($HTTP_POST_VARS['dob']);
? ?$email_address = tep_db_prepare_input($HTTP_POST_VARS['email_address']);
? ?if (ACCOUNT_COMPANY == 'true') $company = tep_db_prepare_input($HTTP_POST_VARS['company']);
? ?$street_address = tep_db_prepare_input($HTTP_POST_VARS['street_address']);
? ?if (ACCOUNT_SUBURB == 'true') $suburb = tep_db_prepare_input($HTTP_POST_VARS['suburb']);
? ?$postcode = tep_db_prepare_input($HTTP_POST_VARS['postcode']);
? ?$city = tep_db_prepare_input($HTTP_POST_VARS['city']);
? ?if (ACCOUNT_STATE == 'true') {
? ? ?$state = tep_db_prepare_input($HTTP_POST_VARS['state']);
? ? ?if (isset($HTTP_POST_VARS['zone_id'])) {
? ? ? ?$zone_id = tep_db_prepare_input($HTTP_POST_VARS['zone_id']);
? ? ?} else {
? ? ? ?$zone_id = false;
? ? ?}
? ?}
? ?$country = tep_db_prepare_input($HTTP_POST_VARS['country']);
? ?$telephone = tep_db_prepare_input($HTTP_POST_VARS['telephone']);
? ?$fax = tep_db_prepare_input($HTTP_POST_VARS['fax']);
? ?if (isset($HTTP_POST_VARS['newsletter'])) {
? ? ?$newsletter = tep_db_prepare_input($HTTP_POST_VARS['newsletter']);
? ?} else {
? ? ?$newsletter = false;
? ?}
? ?$password = tep_db_prepare_input($HTTP_POST_VARS['password']);
? ?$confirmation = tep_db_prepare_input($HTTP_POST_VARS['confirmation']);

? ?$error = false;

? ?if (ACCOUNT_GENDER == 'true') {
? ? ?if ( ($gender != 'm') && ($gender != 'f') ) {
? ? ? ?$error = true;

? ? ? ?$messageStack->add('create_account', ENTRY_GENDER_ERROR);
? ? ?}
? ?}

? ?if (strlen($firstname) < ENTRY_FIRST_NAME_MIN_LENGTH) {
? ? ?$error = true;

? ? ?$messageStack->add('create_account', ENTRY_FIRST_NAME_ERROR);
? ?}

? ?if (strlen($lastname) < ENTRY_LAST_NAME_MIN_LENGTH) {
? ? ?$error = true;

? ? ?$messageStack->add('create_account', ENTRY_LAST_NAME_ERROR);
? ?}

? ?if (ACCOUNT_DOB == 'true') {
? ? ?if (checkdate(substr(tep_date_raw($dob), 4, 2), substr(tep_date_raw($dob), 6, 2), substr(tep_date_raw($dob), 0, 4)) == false) {
? ? ? ?$error = true;

? ? ? ?$messageStack->add('create_account', ENTRY_DATE_OF_BIRTH_ERROR);
? ? ?}
? ?}

? ?if (strlen($email_address) < ENTRY_EMAIL_ADDRESS_MIN_LENGTH) {
? ? ?$error = true;

? ? ?$messageStack->add('create_account', ENTRY_EMAIL_ADDRESS_ERROR);
? ?} elseif (tep_validate_email($email_address) == false) {
? ? ?$error = true;

? ? ?$messageStack->add('create_account', ENTRY_EMAIL_ADDRESS_CHECK_ERROR);
? ?} else {
? ? ?$check_email_query = tep_db_query("select count(*) as total from " . TABLE_CUSTOMERS . " where customers_email_address = '" . tep_db_input($email_address) . "'");
? ? ?$check_email = tep_db_fetch_array($check_email_query);
? ? ?if ($check_email['total'] > 0) {
? ? ? ?$error = true;

? ? ? ?$messageStack->add('create_account', ENTRY_EMAIL_ADDRESS_ERROR_EXISTS);
? ? ?}
? ?}

? ?if (strlen($street_address) < ENTRY_STREET_ADDRESS_MIN_LENGTH) {
? ? ?$error = true;

? ? ?$messageStack->add('create_account', ENTRY_STREET_ADDRESS_ERROR);
? ?}

? ?if (strlen($postcode) < ENTRY_POSTCODE_MIN_LENGTH) {
? ? ?$error = true;

? ? ?$messageStack->add('create_account', ENTRY_POST_CODE_ERROR);
? ?}

? ?if (strlen($city) < ENTRY_CITY_MIN_LENGTH) {
? ? ?$error = true;

? ? ?$messageStack->add('create_account', ENTRY_CITY_ERROR);
? ?}

? ?if (is_numeric($country) == false) {
? ? ?$error = true;

? ? ?$messageStack->add('create_account', ENTRY_COUNTRY_ERROR);
? ?}

? ?if (ACCOUNT_STATE == 'true') {
? ? ?$zone_id = 0;
? ? ?$check_query = tep_db_query("select count(*) as total from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "'");
? ? ?$check = tep_db_fetch_array($check_query);
? ? ?$entry_state_has_zones = ($check['total'] > 0);
? ? ?if ($entry_state_has_zones == true) {
? ? ? ?$zone_query = tep_db_query("select distinct zone_id from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "' and (zone_name like '" . tep_db_input($state) . "%' or zone_code like '%" . tep_db_input($state) . "%')");
? ? ? ?if (tep_db_num_rows($zone_query) == 1) {
? ? ? ? ?$zone = tep_db_fetch_array($zone_query);
? ? ? ? ?$zone_id = $zone['zone_id'];
? ? ? ?} else {
? ? ? ? ?$error = true;

? ? ? ? ?$messageStack->add('create_account', ENTRY_STATE_ERROR_SELECT);
? ? ? ?}
? ? ?} else {
? ? ? ?if (strlen($state) < ENTRY_STATE_MIN_LENGTH) {
? ? ? ? ?$error = true;

? ? ? ? ?$messageStack->add('create_account', ENTRY_STATE_ERROR);
? ? ? ?}
? ? ?}
? ?}

? ?if (strlen($telephone) < ENTRY_TELEPHONE_MIN_LENGTH) {
? ? ?$error = true;

? ? ?$messageStack->add('create_account', ENTRY_TELEPHONE_NUMBER_ERROR);
? ?}


? ?if (strlen($password) < ENTRY_PASSWORD_MIN_LENGTH) {
? ? ?$error = true;

? ? ?$messageStack->add('create_account', ENTRY_PASSWORD_ERROR);
? ?} elseif ($password != $confirmation) {
? ? ?$error = true;

? ? ?$messageStack->add('create_account', ENTRY_PASSWORD_ERROR_NOT_MATCHING);
? ?}

? ?if ($error == false) {
? ? ?$sql_data_array = array('customers_firstname' => $firstname,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'customers_lastname' => $lastname,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'customers_email_address' => $email_address,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'customers_telephone' => $telephone,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'customers_fax' => $fax,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'customers_newsletter' => $newsletter,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'customers_password' => tep_encrypt_password($password));

? ? ?if (ACCOUNT_GENDER == 'true') $sql_data_array['customers_gender'] = $gender;
? ? ?if (ACCOUNT_DOB == 'true') $sql_data_array['customers_dob'] = tep_date_raw($dob);

? ? ?tep_db_perform(TABLE_CUSTOMERS, $sql_data_array);

? ? ?$customer_id = tep_db_insert_id();

? ? ?$sql_data_array = array('customers_id' => $customer_id,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'entry_firstname' => $firstname,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'entry_lastname' => $lastname,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'entry_street_address' => $street_address,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'entry_postcode' => $postcode,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'entry_city' => $city,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'entry_country_id' => $country);

? ? ?if (ACCOUNT_GENDER == 'true') $sql_data_array['entry_gender'] = $gender;
? ? ?if (ACCOUNT_COMPANY == 'true') $sql_data_array['entry_company'] = $company;
? ? ?if (ACCOUNT_SUBURB == 'true') $sql_data_array['entry_suburb'] = $suburb;
? ? ?if (ACCOUNT_STATE == 'true') {
? ? ? ?if ($zone_id > 0) {
? ? ? ? ?$sql_data_array['entry_zone_id'] = $zone_id;
? ? ? ? ?$sql_data_array['entry_state'] = '';
? ? ? ?} else {
? ? ? ? ?$sql_data_array['entry_zone_id'] = '0';
? ? ? ? ?$sql_data_array['entry_state'] = $state;
? ? ? ?}
? ? ?}

? ? ?tep_db_perform(TABLE_ADDRESS_BOOK, $sql_data_array);

? ? ?$address_id = tep_db_insert_id();

? ? ?tep_db_query("update " . TABLE_CUSTOMERS . " set customers_default_address_id = '" . (int)$address_id . "' where customers_id = '" . (int)$customer_id . "'");

? ? ?tep_db_query("insert into " . TABLE_CUSTOMERS_INFO . " (customers_info_id, customers_info_number_of_logons, customers_info_date_account_created) values ('" . (int)$customer_id . "', '0', now())");

? ? ?if (SESSION_RECREATE == 'True') {
? ? ? ?tep_session_recreate();
? ? ?}

? ? ?$customer_first_name = $firstname;
? ? ?$customer_default_address_id = $address_id;
? ? ?$customer_country_id = $country;
? ? ?$customer_zone_id = $zone_id;
? ? ?tep_session_register('customer_id');
? ? ?tep_session_register('customer_first_name');
? ? ?tep_session_register('customer_default_address_id');
? ? ?tep_session_register('customer_country_id');
? ? ?tep_session_register('customer_zone_id');

// restore cart contents
? ? ?$cart->restore_contents();

// build the message content
? ? ?$name = $firstname . ' ' . $lastname;

? ? ?if (ACCOUNT_GENDER == 'true') {
? ? ? ? if ($gender == 'm') {
? ? ? ? ? $email_text = sprintf(EMAIL_GREET_MR, $lastname);
? ? ? ? } else {
? ? ? ? ? $email_text = sprintf(EMAIL_GREET_MS, $lastname);
? ? ? ? }
? ? ?} else {
? ? ? ?$email_text = sprintf(EMAIL_GREET_NONE, $firstname);
? ? ?}

? ? ?$email_text .= EMAIL_WELCOME . EMAIL_TEXT . EMAIL_CONTACT . EMAIL_WARNING;
? ? ?tep_mail($name, $email_address, EMAIL_SUBJECT, $email_text, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);

? ? ?tep_redirect(tep_href_link(FILENAME_CREATE_ACCOUNT_SUCCESS, '', 'SSL'));
? ?}
?}

?$breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_CREATE_ACCOUNT, '', 'SSL'));
?>
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html <?php echo HTML_PARAMS; ?>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">
<title><?php echo TITLE; ?></title>
<base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>">
<link rel="stylesheet" type="text/css" href="stylesheet.css">
<?php require('includes/form_check.js.php'); ?>
</head>
<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">
<!-- header //-->
<?php require(DIR_WS_INCLUDES . 'header.php'); ?>
<!-- header_eof //-->

<!-- body //-->
<table border="0" width="100%" cellspacing="3" cellpadding="3">
?<tr>
? ?<td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
<!-- left_navigation //-->
<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
<!-- left_navigation_eof //-->
? ?</table></td>
<!-- body_text //-->
? ?<td width="100%" valign="top"><?php echo tep_draw_form('create_account', tep_href_link(FILENAME_CREATE_ACCOUNT, '', 'SSL'), 'post', 'onSubmit="return check_form(create_account);"') . tep_draw_hidden_field('action', 'process'); ?><table border="0" width="100%" cellspacing="0" cellpadding="0">
? ? ?<tr>
? ? ? ?<td><table border="0" width="100%" cellspacing="0" cellpadding="0">
? ? ? ? ?<tr>
? ? ? ? ? ?<td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
? ? ? ? ? ?<td class="pageHeading" align="right"><?php echo tep_image(DIR_WS_IMAGES . 'table_background_account.gif', HEADING_TITLE, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>
? ? ? ? ?</tr>
? ? ? ?</table></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td class="smallText"><br><?php echo sprintf(TEXT_ORIGIN_LOGIN, tep_href_link(FILENAME_LOGIN, tep_get_all_get_params(), 'SSL')); ?></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
? ? ?</tr>
<?php
?if ($messageStack->size('create_account') > 0) {
?>
? ? ?<tr>
? ? ? ?<td><?php echo $messageStack->output('create_account'); ?></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
? ? ?</tr>
<?php
?}
?>
? ? ?<tr>
? ? ? ?<td><table border="0" width="100%" cellspacing="0" cellpadding="2">
? ? ? ? ?<tr>
? ? ? ? ? ?<td class="main"><b><?php echo CATEGORY_PERSONAL; ?></b></td>
? ? ? ? ? <td class="inputRequirement" align="right"><?php echo FORM_REQUIRED_INFORMATION; ?></td>
? ? ? ? ?</tr>
? ? ? ?</table></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
? ? ? ? ?<tr class="infoBoxContents">
? ? ? ? ? ?<td><table border="0" cellspacing="2" cellpadding="2">
<?php
?if (ACCOUNT_GENDER == 'true') {
?>
? ? ? ? ? ? ?<tr>
? ? ? ? ? ? ? ?<td class="main"><?php echo ENTRY_GENDER; ?></td>
? ? ? ? ? ? ? ?<td class="main"><?php echo tep_draw_radio_field('gender', 'm') . '  ' . MALE . '  ' . tep_draw_radio_field('gender', 'f') . '  ' . FEMALE . ' ' . (tep_not_null(ENTRY_GENDER_TEXT) ? '<span class="inputRequirement">' . ENTRY_GENDER_TEXT . '</span>': ''); ?></td>
? ? ? ? ? ? ?</tr>
<?php
?}
?>
? ? ? ? ? ? ?<tr>
? ? ? ? ? ? ? ?<td class="main"><?php echo ENTRY_FIRST_NAME; ?></td>
? ? ? ? ? ? ? ?<td class="main"><?php echo tep_draw_input_field('firstname') . ' ' . (tep_not_null(ENTRY_FIRST_NAME_TEXT) ? '<span class="inputRequirement">' . ENTRY_FIRST_NAME_TEXT . '</span>': ''); ?></td>
? ? ? ? ? ? ?</tr>
? ? ? ? ? ? ?<tr>
? ? ? ? ? ? ? ?<td class="main"><?php echo ENTRY_LAST_NAME; ?></td>
? ? ? ? ? ? ? ?<td class="main"><?php echo tep_draw_input_field('lastname') . ' ' . (tep_not_null(ENTRY_LAST_NAME_TEXT) ? '<span class="inputRequirement">' . ENTRY_LAST_NAME_TEXT . '</span>': ''); ?></td>
? ? ? ? ? ? ?</tr>
<?php
?if (ACCOUNT_DOB == 'true') {
?>
? ? ? ? ? ? ?<tr>
? ? ? ? ? ? ? ?<td class="main"><?php echo ENTRY_DATE_OF_BIRTH; ?></td>
? ? ? ? ? ? ? ?<td class="main"><?php echo tep_draw_input_field('dob') . ' ' . (tep_not_null(ENTRY_DATE_OF_BIRTH_TEXT) ? '<span class="inputRequirement">' . ENTRY_DATE_OF_BIRTH_TEXT . '</span>': ''); ?></td>
? ? ? ? ? ? ?</tr>
<?php
?}
?>
? ? ? ? ? ? ?<tr>
? ? ? ? ? ? ? ?<td class="main"><?php echo ENTRY_EMAIL_ADDRESS; ?></td>
? ? ? ? ? ? ? ?<td class="main"><?php echo tep_draw_input_field('email_address') . ' ' . (tep_not_null(ENTRY_EMAIL_ADDRESS_TEXT) ? '<span class="inputRequirement">' . ENTRY_EMAIL_ADDRESS_TEXT . '</span>': ''); ?></td>
? ? ? ? ? ? ?</tr>
? ? ? ? ? ?</table></td>
? ? ? ? ?</tr>
? ? ? ?</table></td>
? ? ?</tr>
<?php
?if (ACCOUNT_COMPANY == 'true') {
?>
? ? ?<tr>
? ? ? ?<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td class="main"><b><?php echo CATEGORY_COMPANY; ?></b></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
? ? ? ? ?<tr class="infoBoxContents">
? ? ? ? ? ?<td><table border="0" cellspacing="2" cellpadding="2">
? ? ? ? ? ? ?<tr>
? ? ? ? ? ? ? ?<td class="main"><?php echo ENTRY_COMPANY; ?></td>
? ? ? ? ? ? ? ?<td class="main"><?php echo tep_draw_input_field('company') . ' ' . (tep_not_null(ENTRY_COMPANY_TEXT) ? '<span class="inputRequirement">' . ENTRY_COMPANY_TEXT . '</span>': ''); ?></td>
? ? ? ? ? ? ?</tr>
? ? ? ? ? ?</table></td>
? ? ? ? ?</tr>
? ? ? ?</table></td>
? ? ?</tr>
<?php
?}
?>
? ? ?<tr>
? ? ? ?<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td class="main"><b><?php echo CATEGORY_ADDRESS; ?></b></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
? ? ? ? ?<tr class="infoBoxContents">
? ? ? ? ? ?<td><table border="0" cellspacing="2" cellpadding="2">
? ? ? ? ? ? ?<tr>
? ? ? ? ? ? ? ?<td class="main"><?php echo ENTRY_STREET_ADDRESS; ?></td>
? ? ? ? ? ? ? ?<td class="main"><?php echo tep_draw_input_field('street_address') . ' ' . (tep_not_null(ENTRY_STREET_ADDRESS_TEXT) ? '<span class="inputRequirement">' . ENTRY_STREET_ADDRESS_TEXT . '</span>': ''); ?></td>
? ? ? ? ? ? ?</tr>
<?php
?if (ACCOUNT_SUBURB == 'true') {
?>
? ? ? ? ? ? ?<tr>
? ? ? ? ? ? ? ?<td class="main"><?php echo ENTRY_SUBURB; ?></td>
? ? ? ? ? ? ? ?<td class="main"><?php echo tep_draw_input_field('suburb') . ' ' . (tep_not_null(ENTRY_SUBURB_TEXT) ? '<span class="inputRequirement">' . ENTRY_SUBURB_TEXT . '</span>': ''); ?></td>
? ? ? ? ? ? ?</tr>
<?php
?}
?>
? ? ? ? ? ? ?<tr>
? ? ? ? ? ? ? ?<td class="main"><?php echo ENTRY_POST_CODE; ?></td>
? ? ? ? ? ? ? ?<td class="main"><?php echo tep_draw_input_field('postcode') . ' ' . (tep_not_null(ENTRY_POST_CODE_TEXT) ? '<span class="inputRequirement">' . ENTRY_POST_CODE_TEXT . '</span>': ''); ?></td>
? ? ? ? ? ? ?</tr>
? ? ? ? ? ? ?<tr>
? ? ? ? ? ? ? ?<td class="main"><?php echo ENTRY_CITY; ?></td>
? ? ? ? ? ? ? ?<td class="main"><?php echo tep_draw_input_field('city') . ' ' . (tep_not_null(ENTRY_CITY_TEXT) ? '<span class="inputRequirement">' . ENTRY_CITY_TEXT . '</span>': ''); ?></td>
? ? ? ? ? ? ?</tr>
<?php
if (ACCOUNT_STATE == 'true') {
?>

? ? ? ? ? ?<tr>
? ? ? ? ? ?<td class="main"> <?php echo ENTRY_STATE; ?></td>
? ? ? ? ? ?<td class="main"> 

<?php
? ? ?$zones_array[] = array('id' => '', 'text' => 'Please Select');
? ? ?$zones_query = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_country_id = '223' order by zone_name");
? ? ?while ($zones_values = tep_db_fetch_array($zones_query)) {
? ? ? ?$zones_array[] = array('id' => $zones_values['zone_name'], 'text' => $zones_values['zone_name']);
? ? ?}
? ? ?echo tep_draw_pull_down_menu('state', $zones_array);
? ? ?
?if (tep_not_null(ENTRY_STATE_TEXT)) echo ' <span class="inputRequirement">' . ENTRY_STATE_TEXT;
?>

? ? ? ? ? ? ?</td>
? ? ? ? ? ?</tr>

<?php
}
?> 
? ? ? ? ? ? ?<tr>
? ? ? ? ? ? ? ?<td class="main"><?php echo ENTRY_COUNTRY; ?></td>
? ? ? ? ? ? ? ?<td class="main"><?php echo tep_get_country_list('country') . ' ' . (tep_not_null(ENTRY_COUNTRY_TEXT) ? '<span class="inputRequirement">' . ENTRY_COUNTRY_TEXT . '</span>': ''); ?></td>
? ? ? ? ? ? ?</tr>
? ? ? ? ? ?</table></td>
? ? ? ? ?</tr>
? ? ? ?</table></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td class="main"><b><?php echo CATEGORY_CONTACT; ?></b></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
? ? ? ? ?<tr class="infoBoxContents">
? ? ? ? ? ?<td><table border="0" cellspacing="2" cellpadding="2">
? ? ? ? ? ? ?<tr>
? ? ? ? ? ? ? ?<td class="main"><?php echo ENTRY_TELEPHONE_NUMBER; ?></td>
? ? ? ? ? ? ? ?<td class="main"><?php echo tep_draw_input_field('telephone') . ' ' . (tep_not_null(ENTRY_TELEPHONE_NUMBER_TEXT) ? '<span class="inputRequirement">' . ENTRY_TELEPHONE_NUMBER_TEXT . '</span>': ''); ?></td>
? ? ? ? ? ? ?</tr>
? ? ? ? ? ? ?<tr>
? ? ? ? ? ? ? ?<td class="main"><?php echo ENTRY_FAX_NUMBER; ?></td>
? ? ? ? ? ? ? ?<td class="main"><?php echo tep_draw_input_field('fax') . ' ' . (tep_not_null(ENTRY_FAX_NUMBER_TEXT) ? '<span class="inputRequirement">' . ENTRY_FAX_NUMBER_TEXT . '</span>': ''); ?></td>
? ? ? ? ? ? ?</tr>
? ? ? ? ? ?</table></td>
? ? ? ? ?</tr>
? ? ? ?</table></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td class="main"><b><?php echo CATEGORY_OPTIONS; ?></b></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
? ? ? ? ?<tr class="infoBoxContents">
? ? ? ? ? ?<td><table border="0" cellspacing="2" cellpadding="2">
? ? ? ? ? ? ?<tr>
? ? ? ? ? ? ? ?<td class="main"><?php echo ENTRY_NEWSLETTER; ?></td>
? ? ? ? ? ? ? ?<td class="main"><?php echo tep_draw_checkbox_field('newsletter', '1') . ' ' . (tep_not_null(ENTRY_NEWSLETTER_TEXT) ? '<span class="inputRequirement">' . ENTRY_NEWSLETTER_TEXT . '</span>': ''); ?></td>
? ? ? ? ? ? ?</tr>
? ? ? ? ? ?</table></td>
? ? ? ? ?</tr>
? ? ? ?</table></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td class="main"><b><?php echo CATEGORY_PASSWORD; ?></b></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
? ? ? ? ?<tr class="infoBoxContents">
? ? ? ? ? ?<td><table border="0" cellspacing="2" cellpadding="2">
? ? ? ? ? ? ?<tr>
? ? ? ? ? ? ? ?<td class="main"><?php echo ENTRY_PASSWORD; ?></td>
? ? ? ? ? ? ? ?<td class="main"><?php echo tep_draw_password_field('password') . ' ' . (tep_not_null(ENTRY_PASSWORD_TEXT) ? '<span class="inputRequirement">' . ENTRY_PASSWORD_TEXT . '</span>': ''); ?></td>
? ? ? ? ? ? ?</tr>
? ? ? ? ? ? ?<tr>
? ? ? ? ? ? ? ?<td class="main"><?php echo ENTRY_PASSWORD_CONFIRMATION; ?></td>
? ? ? ? ? ? ? ?<td class="main"><?php echo tep_draw_password_field('confirmation') . ' ' . (tep_not_null(ENTRY_PASSWORD_CONFIRMATION_TEXT) ? '<span class="inputRequirement">' . ENTRY_PASSWORD_CONFIRMATION_TEXT . '</span>': ''); ?></td>
? ? ? ? ? ? ?</tr>
? ? ? ? ? ?</table></td>
? ? ? ? ?</tr>
? ? ? ?</table></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
? ? ?</tr>
? ? ?<tr>
? ? ? ?<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
? ? ? ? ?<tr class="infoBoxContents">
? ? ? ? ? ?<td><table border="0" width="100%" cellspacing="0" cellpadding="2">
? ? ? ? ? ? ?<tr>
? ? ? ? ? ? ? ?<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
? ? ? ? ? ? ? ?<td><?php echo tep_image_submit('button_continue.gif', IMAGE_BUTTON_CONTINUE); ?></td>
? ? ? ? ? ? ? ?<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
? ? ? ? ? ? ?</tr>
? ? ? ? ? ?</table></td>
? ? ? ? ?</tr>
? ? ? ?</table></td>
? ? ?</tr>
? ?</table></form></td>
<!-- body_text_eof //-->
? ?<td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
<!-- right_navigation //-->
<?php include(DIR_WS_INCLUDES . 'column_right.php'); ?>
<!-- right_navigation_eof //-->
? ?</table></td>
?</tr>
</table>
<!-- body_eof //-->

<!-- footer //-->
<?php include(DIR_WS_INCLUDES . 'footer.php'); ?>
<!-- footer_eof //-->
<br>
</body>
</html>
<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>

 

I just copy and pasted what you posted into a fresh create_account.php :D

 

Matti


Matti Ressler

 

We were all once expert at...... nothing

_____

Share this post


Link to post
Share on other sites

Matti,

 

Thanks for the input...That was what I suspected (see below) was causing the problem but I couldn't pinpoint which one was the culprit:

 

<tr>

<td class="main"> <?php echo ENTRY_POST_CODE; ?></td>

<td class="main"> 

<?php

if ($is_read_only) {

echo $account['entry_postcode'];

} elseif ($error) {

if ($entry_post_code_error) {

echo tep_draw_input_field('postcode') . ' ' . ENTRY_POST_CODE_ERROR;

} else {

echo $postcode . tep_draw_hidden_field('postcode');

}

} else {

echo tep_draw_input_field('postcode', $account['entry_postcode']) . ' ' . ENTRY_POST_CODE_TEXT;

}

?></td>

</tr>

<?php

//}

?>

 

Commenting out that last bit fixed the problem. Thank you. :)

Share this post


Link to post
Share on other sites

Matti,

 

Maybe you can help figure this one out too since I'm trying to accomplish the same thing:

 

I have a counties table in my database, "pa_counties", with county_id and county_name as the only two fields. "County" is, of course, still "suburb" in the database and in all files (excluding language files).

How do I go about adding this the same way I just added the state dropdown box?

As it is now, I only have a small text notice next to the [suburb/county] box which states that my states' residents are required to enter their county. I'd much rather have a pulldown box for customers instead, if it's possible.

If you have any advice or suggestions, please let me know. Thanks.

Share this post


Link to post
Share on other sites

This is what I have so far...But, I get THIS:

 

1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'order by county_name' at line 1

 

select county_name from TABLE_COUNTIES where county_id= order by county_name

 

[TEP STOP]

 

From this code:

 

<?php
? ? $counties_array[] = array('id' => '', 'text' => 'Please Select');
? ? $counties_query = tep_db_query("select county_name from " . TABLE_COUNTIES . " where county_id=$county_id order by county_name");
? ? while ($counties_values = tep_db_fetch_array($counties_query)) {
? ? ? $counties_array[] = array('id' => $counties_values['county_name'], 'text' => $counties_values['county_name']);
? ? }
? ? echo tep_draw_pull_down_menu('suburb', $counties_array);
? ? 
if (tep_not_null(ENTRY_SUBURB_TEXT)) echo ' <span class="inputRequirement">' . ENTRY_SUBURB_TEXT;
?>

 

Where is the syntax error? I don't see it...I need to fix this ASAP so I can add it to a small contribution I want to submit. Someone, anyone, please help. Thank you :).

Share this post


Link to post
Share on other sites

Okay,

 

I've now got the box for counties working but no county names are showing in the dropdown...Anyone have any idea why this happening?

Share this post


Link to post
Share on other sites

I seem to have gotten code to work for new accounts, aditing existing addresses, and adding new addresses that works for US and Canada at the same time. All that's left is for someone to figure out an onChange() to have the country menu change to match the state/province selection.

 

in catalog/create_account.php,

replace:

<?php
 if (ACCOUNT_STATE == 'true') {
?>
             <tr>
               <td class="main"><?php echo ENTRY_STATE; ?></td>
               <td class="main">
<?php
   if ($process == true) {
     if ($entry_state_has_zones == true) {
       $zones_array = array();
       $zones_query = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "' order by zone_name");
       while ($zones_values = tep_db_fetch_array($zones_query)) {
         $zones_array[] = array('id' => $zones_values['zone_name'], 'text' => $zones_values['zone_name']);
       }
       echo tep_draw_pull_down_menu('state', $zones_array);
     } else {
       echo tep_draw_input_field('state');
     }
   } else {
     echo tep_draw_input_field('state');
   }

   if (tep_not_null(ENTRY_STATE_TEXT)) echo ' <span class="inputRequirement">' . ENTRY_STATE_TEXT;
?>
               </td>
             </tr>
<?php
 }
?>

with

<?php
if (ACCOUNT_STATE == 'true') {
?>
              <tr>
              <td class="main"><?php echo ENTRY_STATE; ?></td>
              <td class="main">
<?php
      $zones_array[] = array('id' => '', 'text' => 'Please Select');
      $zones_query = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_country_id = '223' order by zone_name");
      while ($zones_values = tep_db_fetch_array($zones_query)) {
        $zones_array[] = array('id' => $zones_values['zone_name'], 'text' => $zones_values['zone_name']);
      }

      $zones_array2[] = array('id' => '', 'text' => '----------');
      $zones_query2 = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_country_id = '38' order by zone_name");
      while ($zones_values = tep_db_fetch_array($zones_query2)) {
        $zones_array2[] = array('id' => $zones_values['zone_name'], 'text' => $zones_values['zone_name']);
      }
      echo tep_draw_pull_down_menu('state', array_merge($zones_array, $zones_array2), 'Please Select');

  if (tep_not_null(ENTRY_STATE_TEXT)) echo ' <span class="inputRequirement">' . ENTRY_STATE_TEXT;
?>
              </td>
            </tr>
<?php
}
?>

and in catalog/includes/modules/address_book_details.php, for edit address [automatically selects the existing state/province], and add address,

replace:

<?php
 if (ACCOUNT_STATE == 'true') {
?>
         <tr>
           <td class="main"><?php echo ENTRY_STATE; ?></td>
           <td class="main">
<?php
   if ($process == true) {
     if ($entry_state_has_zones == true) {
       $zones_array = array();
       $zones_query = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_country_id = '" . (int)$country . "' order by zone_name");
       while ($zones_values = tep_db_fetch_array($zones_query)) {
         $zones_array[] = array('id' => $zones_values['zone_name'], 'text' => $zones_values['zone_name']);
       }
       echo tep_draw_pull_down_menu('state', $zones_array);
     } else {
       echo tep_draw_input_field('state');
     }
   } else {
     echo tep_draw_input_field('state', tep_get_zone_name($entry['entry_country_id'], $entry['entry_zone_id'], $entry['entry_state']));
   }

   if (tep_not_null(ENTRY_STATE_TEXT)) echo ' <span class="inputRequirement">' . ENTRY_STATE_TEXT;
?></td>
         </tr>
<?php
 }
?>

with

<?php
if (ACCOUNT_STATE == 'true') {
?>
              <tr>
              <td class="main"><?php echo ENTRY_STATE; ?></td>
              <td class="main">
<?php
      $zones_array[] = array('id' => '', 'text' => 'Please Select');
      $zones_query = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_country_id = '223' order by zone_name");
      while ($zones_values = tep_db_fetch_array($zones_query)) {
        $zones_array[] = array('id' => $zones_values['zone_name'], 'text' => $zones_values['zone_name']);
      }

      $zones_array2[] = array('id' => '', 'text' => '----------');
      $zones_query2 = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_country_id = '38' order by zone_name");
      while ($zones_values = tep_db_fetch_array($zones_query2)) {
        $zones_array2[] = array('id' => $zones_values['zone_name'], 'text' => $zones_values['zone_name']);
      }
      if (tep_get_zone_name($entry['entry_country_id'], $entry['entry_zone_id'], $entry['entry_state']) == "") {
echo tep_draw_pull_down_menu('state', array_merge($zones_array, $zones_array2), 'Please Select');
} else {
      echo tep_draw_pull_down_menu('state', array_merge($zones_array, $zones_array2), tep_get_zone_name($entry['entry_country_id'], $entry['entry_zone_id'], $entry['entry_state']));
}

  if (tep_not_null(ENTRY_STATE_TEXT)) echo ' <span class="inputRequirement">' . ENTRY_STATE_TEXT;
?>
              </td>
            </tr>
<?php
}
?>

Share this post


Link to post
Share on other sites

That last post by webguy was REALLY helpful. His trick worked!

 

Just wondering thou...how do you change the other files that add addresses to users accounts...like :

 

catalog/checkout_payment_address.php

catalog/modules/checkout_new_address.php

 

 

Should have the drop down thru out the site to maintain consistancy...

 

Anyone?

Share this post


Link to post
Share on other sites

×