Hi all,
I've installed this contri and it's working perfect (RC2.2). BUT.... I've installed "admin create account" too and I can't get the extra fields working in this contri. I think I need to change the admin/includes/modules/account_details.php and I tried to copy stuff from create_account.php but that's not working correctly... the input field i made is shown and I don't have errors, but when I save the new customer, the new field is not saved...
Can anyone help me to fix this please?
Here is the account_details.php code:
the "// start Customers Extra Fields // end Customers Extra Fields" are copied from create_account.php but not on the right spot I guess and the file is completely different...
<?php
/*
$Id: account_details.php,v 1 2003/08/24 23:22:27 frankl Exp $
osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com
Copyright (c) 2002 osCommerce
Released under the GNU General Public License
Admin Create Account
*/
$newsletter_array = array(array('id' => '1',
'text' => ENTRY_NEWSLETTER_YES),
array('id' => '0',
'text' => ENTRY_NEWSLETTER_NO));
function sbs_get_zone_name($country_id, $zone_id) {
$zone_query = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_country_id = '" . $country_id . "' and zone_id = '" . $zone_id . "'");
if (tep_db_num_rows($zone_query)) {
$zone = tep_db_fetch_array($zone_query);
return $zone['zone_name'];
} else {
return $default_zone;
}
}
// Returns an array with countries
// TABLES: countries
function sbs_get_countries($countries_id = '', $with_iso_codes = false) {
$countries_array = array();
if ($countries_id) {
if ($with_iso_codes) {
$countries = tep_db_query("select countries_name, countries_iso_code_2, countries_iso_code_3 from " . TABLE_COUNTRIES . " where countries_id = '" . $countries_id . "' order by countries_name");
$countries_values = tep_db_fetch_array($countries);
$countries_array = array('countries_name' => $countries_values['countries_name'],
'countries_iso_code_2' => $countries_values['countries_iso_code_2'],
'countries_iso_code_3' => $countries_values['countries_iso_code_3']);
} else {
$countries = tep_db_query("select countries_name from " . TABLE_COUNTRIES . " where countries_id = '" . $countries_id . "'");
$countries_values = tep_db_fetch_array($countries);
$countries_array = array('countries_name' => $countries_values['countries_name']);
}
} else {
$countries = tep_db_query("select countries_id, countries_name from " . TABLE_COUNTRIES . " order by countries_name");
while ($countries_values = tep_db_fetch_array($countries)) {
$countries_array[] = array('countries_id' => $countries_values['countries_id'],
'countries_name' => $countries_values['countries_name']);
}
}
return $countries_array;
}
////
function sbs_get_country_list($name, $selected = '', $parameters = '') {
$countries_array = array(array('id' => '', 'text' => PULL_DOWN_DEFAULT));
$countries = sbs_get_countries();
$size = sizeof($countries);
for ($i=0; $i<$size; $i++) {
$countries_array[] = array('id' => $countries[$i]['countries_id'], 'text' => $countries[$i]['countries_name']);
}
return tep_draw_pull_down_menu($name, $countries_array, $selected, $parameters);
}
// start Customers Extra Fields
$extra_fields_query = tep_db_query("select ce.fields_id, ce.fields_input_type, ce.fields_required_status, cei.fields_name, ce.fields_status, ce.fields_input_type, ce.fields_size from " . TABLE_EXTRA_FIELDS . " ce, " . TABLE_EXTRA_FIELDS_INFO . " cei where ce.fields_status=1 and ce.fields_required_status=1 and cei.fields_id=ce.fields_id and cei.languages_id =" . $languages_id);
while($extra_fields = tep_db_fetch_array($extra_fields_query)){
if(strlen($HTTP_POST_VARS['fields_' . $extra_fields['fields_id']])<$extra_fields['fields_size']){
$error = true;
$string_error=sprintf(ENTRY_EXTRA_FIELDS_ERROR,$extra_fields['fields_name'],$extra_fields['fields_size']);
$messageStack->add('create_account', $string_error);
}
}
// end Customers Extra Fields
// start Customers Extra Fields
$customers_id = (int)$customer_id;
$extra_fields_query = tep_db_query("select ce.fields_id from " . TABLE_EXTRA_FIELDS . " ce where ce.fields_status=1 ");
while($extra_fields = tep_db_fetch_array($extra_fields_query))
{
if(isset($HTTP_POST_VARS['fields_' . $extra_fields['fields_id']])){
$sql_data_array = array('customers_id' => (int)$customers_id,
'fields_id' => $extra_fields['fields_id'],
'value' => $HTTP_POST_VARS['fields_' . $extra_fields['fields_id']]);
}
else
{
$sql_data_array = array('customers_id' => (int)$customers_id,
'fields_id' => $extra_fields['fields_id']); } }
// end Customers Extra Fields
////
// Alias function to tep_get_countries, which also returns the countries iso codes
/* function tep_get_countries_with_iso_codes($countries_id) {
return tep_get_countries($countries_id, true);
}*/
?>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr>
<td class="formAreaTitle"><?php echo CATEGORY_PERSONAL; ?></td>
</tr>
<tr>
<td class="main"><table border="0" width="100%" cellspacing="0" cellpadding="2" class="formArea">
<tr>
<td class="main"><table border="0" cellspacing="0" cellpadding="2">
<?php
if (ACCOUNT_GENDER == 'true') {
$male = ($account['customers_gender'] == 'm') ? true : false;
$female = ($account['customers_gender'] == 'f') ? true : false;
?>
<tr>
<td class="main"> <?php echo ENTRY_GENDER; ?></td>
<td class="main">
<?php
if ($is_read_only) {
echo ($account['customers_gender'] == 'm') ? MALE : FEMALE;
} elseif ($error) {
if ($entry_gender_error) {
echo tep_draw_radio_field('gender', 'm', $male) . ' ' . MALE . ' ' . tep_draw_radio_field('gender', 'f', $female) . ' ' . FEMALE . ' ' . ENTRY_GENDER_ERROR;
} else {
echo ($gender == 'm') ? MALE : FEMALE;
echo tep_draw_hidden_field('gender');
}
} else {
echo tep_draw_radio_field('gender', 'm', $male) . ' ' . MALE . ' ' . tep_draw_radio_field('gender', 'f', $female) . ' ' . FEMALE . ' ';
}
?></td>
</tr>
<?php
}
?>
<tr>
<td class="main"> <?php echo ENTRY_FIRST_NAME; ?></td>
<td class="main">
<?php
if ($is_read_only) {
echo $account['customers_firstname'];
} elseif ($error) {
if ($entry_firstname_error) {
echo tep_draw_input_field('firstname') . ' ' . ENTRY_FIRST_NAME_ERROR;
} else {
echo $firstname . tep_draw_hidden_field('firstname');
}
} else {
echo tep_draw_input_field('firstname', $account['customers_firstname']) . ' ';
}
?></td>
</tr>
<tr>
<td class="main"> <?php echo ENTRY_LAST_NAME; ?></td>
<td class="main">
<?php
if ($is_read_only) {
echo $account['customers_lastname'];
} elseif ($error) {
if ($entry_lastname_error) {
echo tep_draw_input_field('lastname') . ' ' . ENTRY_LAST_NAME_ERROR;
} else {
echo $lastname . tep_draw_hidden_field('lastname');
}
} else {
echo tep_draw_input_field('lastname', $account['customers_lastname']) . ' ';
}
?></td>
</tr>
<?php
if (ACCOUNT_DOB == 'true') {
?>
<tr>
<td class="main"> <?php echo ENTRY_DATE_OF_BIRTH; ?></td>
<td class="main">
<?php
if ($is_read_only) {
echo tep_date_short($account['customers_dob']);
} elseif ($error) {
if ($entry_date_of_birth_error) {
echo tep_draw_input_field('dob') . ' ' . ENTRY_DATE_OF_BIRTH_ERROR;
} else {
echo $dob . tep_draw_hidden_field('dob');
}
} else {
echo tep_draw_input_field('dob', tep_date_short($account['customers_dob'])) . ' ';
}
?></td>
</tr>
<?php
}
?>
<tr>
<td class="main"> <?php echo ENTRY_EMAIL_ADDRESS; ?></td>
<td class="main">
<?php
if ($is_read_only) {
echo $account['customers_email_address'];
} elseif ($error) {
if ($entry_email_address_error) {
echo tep_draw_input_field('email_address') . ' ' . ENTRY_EMAIL_ADDRESS_ERROR;
} elseif ($entry_email_address_check_error) {
echo tep_draw_input_field('email_address') . ' ' . ENTRY_EMAIL_ADDRESS_CHECK_ERROR;
} elseif ($entry_email_address_exists) {
echo tep_draw_input_field('email_address') . ' ' . ENTRY_EMAIL_ADDRESS_ERROR_EXISTS;
} else {
echo $email_address . tep_draw_hidden_field('email_address');
}
} else {
echo tep_draw_input_field('email_address', $account['customers_email_address']) . ' ';
}
?></td></tr>
</table></td>
</tr>
</table></td>
</tr>
<?php
if (ACCOUNT_COMPANY == 'true') {
?>
<tr>
<td class="formAreaTitle"><br><?php echo CATEGORY_COMPANY; ?></td>
</tr>
<tr>
<td class="main"><table border="0" width="100%" cellspacing="0" cellpadding="2" class="formArea">
<tr>
<td class="main"><table border="0" cellspacing="0" cellpadding="2">
<tr>
<td class="main"> <?php echo ENTRY_COMPANY; ?></td>
<td class="main">
<?php
if ($is_read_only) {
echo $account['entry_company'];
} elseif ($error) {
if ($entry_company_error) {
echo tep_draw_input_field('company') . ' ' . ENTRY_COMPANY_ERROR;
} else {
echo $company . tep_draw_hidden_field('company');
}
} else {
echo tep_draw_input_field('company', $account['entry_company']) . ' ';
}
?></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<?php
}
?>
<tr>
<td class="formAreaTitle"><br><?php echo CATEGORY_ADDRESS; ?></td>
</tr>
<tr>
<td class="main"><table border="0" width="100%" cellspacing="0" cellpadding="2" class="formArea">
<tr>
<td class="main"><table border="0" cellspacing="0" cellpadding="2">
<tr>
<td class="main"> <?php echo ENTRY_STREET_ADDRESS; ?></td>
<td class="main">
<?php
if ($is_read_only) {
echo $account['entry_street_address'];
} elseif ($error) {
if ($entry_street_address_error) {
echo tep_draw_input_field('street_address') . ' ' . ENTRY_STREET_ADDRESS_ERROR;
} else {
echo $street_address . tep_draw_hidden_field('street_address');
}
} else {
echo tep_draw_input_field('street_address', $account['entry_street_address']) . ' ';
}
?></td>
</tr>
<?php
if (ACCOUNT_SUBURB == 'true') {
?>
<tr>
<td class="main"> <?php echo ENTRY_SUBURB; ?></td>
<td class="main">
<?php
if ($is_read_only) {
echo $account['entry_suburb'];
} elseif ($error) {
if ($entry_suburb_error) {
echo tep_draw_input_field('suburb') . ' ' . ENTRY_SUBURB_ERROR;
} else {
echo $suburb . tep_draw_hidden_field('suburb');
}
} else {
echo tep_draw_input_field('suburb', $account['entry_suburb']) . ' ';
}
?></td>
</tr>
<?php
}
?>
<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']) . ' ';
}
?></td>
</tr>
<tr>
<td class="main"> <?php echo ENTRY_CITY; ?></td>
<td class="main">
<?php
if ($is_read_only) {
echo $account['entry_city'];
} elseif ($error) {
if ($entry_city_error) {
echo tep_draw_input_field('city') . ' ' . ENTRY_CITY_ERROR;
} else {
echo $city . tep_draw_hidden_field('city');
}
} else {
echo tep_draw_input_field('city', $account['entry_city']) . ' ';
}
?></td>
</tr>
<?php
if (ACCOUNT_STATE == 'true') {
?>
<tr>
<td class="main"> <?php echo ENTRY_STATE; ?></td>
<td class="main">
<?php
$state = sbs_get_zone_name($country, $zone_id);
if ($is_read_only) {
echo sbs_get_zone_name($account['entry_country_id'], $account['entry_zone_id']);
} elseif ($error) {
if ($entry_state_error) {
if ($entry_state_has_zones) {
$zones_array = array();
$zones_query = tep_db_query("select zone_name from " . TABLE_ZONES . " where zone_country_id = '" . tep_db_input($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) . ' ' . ENTRY_STATE_ERROR;
} else {
echo tep_draw_input_field('state') . ' ' . ENTRY_STATE_ERROR;
}
} else {
echo $state . tep_draw_hidden_field('zone_id') . tep_draw_hidden_field('state');
}
} else {
echo tep_draw_input_field('state', sbs_get_zone_name($account['entry_country_id'], $account['entry_zone_id'], $account['entry_state'])) . ' ';
}
?></td>
</tr>
<?php
}
?>
<tr>
<td class="main"> <?php echo ENTRY_COUNTRY; ?></td>
<td class="main">
<?php
$account['entry_country_id'] = STORE_COUNTRY;
if ($is_read_only) { echo tep_get_country_name($account['entry_country_id']); }
elseif
($error) {
if ($entry_country_error) {
echo sbs_get_country_list('country') . ' ' . ENTRY_COUNTRY_ERROR;
} else {
echo tep_get_country_name($country) . tep_draw_hidden_field('country');
}
} else {
echo sbs_get_country_list('country', $account['entry_country_id']) . ' ';
}
?></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<tr>
<td class="formAreaTitle"><br><?php echo CATEGORY_CONTACT; ?></td>
</tr>
<tr>
<td class="main"><table border="0" width="100%" cellspacing="0" cellpadding="2" class="formArea">
<tr>
<td class="main"><table border="0" cellspacing="0" cellpadding="2">
<tr>
<td class="main"> <?php echo ENTRY_TELEPHONE_NUMBER; ?></td>
<td class="main">
<?php
if ($is_read_only) {
echo $account['customers_telephone'];
} elseif ($error) {
if ($entry_telephone_error) {
echo tep_draw_input_field('telephone') . ' ' . ENTRY_TELEPHONE_NUMBER_ERROR;
} else {
echo $telephone . tep_draw_hidden_field('telephone');
}
} else {
echo tep_draw_input_field('telephone', $account['customers_telephone']) . ' ';
}
?></td>
</tr>
<tr>
<td class="main"> <?php echo ENTRY_FAX_NUMBER; ?></td>
<td class="main">
<?php
if ($is_read_only) {
echo $account['customers_fax'];
} elseif ($processed) {
echo $fax . tep_draw_hidden_field('fax');
} else {
echo tep_draw_input_field('fax', $account['customers_fax']) . ' ';
}
?></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<tr>
<td class="formAreaTitle"><br><?php echo CATEGORY_OPTIONS; ?></td>
</tr>
<tr>
<td class="main"><table border="0" width="100%" cellspacing="0" cellpadding="2" class="formArea">
<tr>
<td class="main"><table border="0" cellspacing="0" cellpadding="2">
<tr>
<td class="main"> <?php echo ENTRY_NEWSLETTER; ?></td>
<td class="main">
<?php
if ($is_read_only) {
if ($account['customers_newsletter'] == '1') {
echo ENTRY_NEWSLETTER_YES;
} else {
echo ENTRY_NEWSLETTER_NO;
}
} elseif ($processed) {
if ($newsletter == '1') {
echo ENTRY_NEWSLETTER_YES;
} else {
echo ENTRY_NEWSLETTER_NO;
}
echo tep_draw_hidden_field('newsletter');
} else {
echo tep_draw_pull_down_menu('newsletter', $newsletter_array, $account['customers_newsletter']) . ' ';
}
?></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<?php/*
<?php
if (!$is_read_only) {
?>
<tr>
<td class="formAreaTitle"><br><?php echo CATEGORY_PASSWORD; ?></td>
</tr>
<tr>
<td class="main"><table border="0" width="100%" cellspacing="0" cellpadding="2" class="formArea">
<tr>
<td class="main"><table border="0" cellspacing="0" cellpadding="2">
<tr>
<td class="main"> <?php echo ENTRY_PASSWORD; ?></td>
<td class="main">
<?php
if ($error) {
if ($entry_password_error) {
echo tep_draw_password_field('password') . ' ' . ENTRY_PASSWORD_ERROR;
} else {
echo PASSWORD_HIDDEN . tep_draw_hidden_field('password') . tep_draw_hidden_field('confirmation');
}
} else {
echo tep_draw_password_field('password') . ' ' . ENTRY_PASSWORD_TEXT;
}
?></td>
</tr>
<?php
if ( (!$error) || ($entry_password_error) ) {
?>
<tr>
<td class="main"> <?php echo ENTRY_PASSWORD_CONFIRMATION; ?></td>
<td class="main">
<?php
echo tep_draw_password_field('confirmation') . ' ' . ENTRY_PASSWORD_CONFIRMATION_TEXT;
?></td>
</tr>
<?php
}
?>
</table></td>
</tr>
</table></td>
</tr>
*/ ?>
<?php
// }
?>
</table>
Best regards,
Petra