Add a field into create account
Hello, I want to add a field into the create account page (when a customer is creating a new account).
I think I am on the right track but I need some help, this is what I have done so far...
1. I added a column to the customers table in the MySQL database (called customers_taxid)
2. I edited the:
includes/templates/MYTEMPLATE/templates/tpl_modules_create_account.php
and added the field
3. *THIS IS WHERE I AM STUCK* I do not know how to get the new field I just added to write its contents into the database
4. I edited the customers.php file in admin/customers.php to show the new field when I view the customers information (of course at this time the field is always blank since I do not know step 3)
Can someone please help, and explain to me how to make step 3 happen and of course if I am overlooking something else please let me know as well.
Thank you.
P.S. I did try the new add-a-field module but it did not work for me and I had to resort back to my backup files (and I spent hours on trying to get that to work, reading every post in the help forums).
Re: Add a field into create account
The validation and saving of the collected data is handled by:
/includes/modules/YOURTEMPLATE/create_account.php
Re: Add a field into create account
Thank you Dr. Byte, everything works great!
I figured I will now post exactly what I did, in hopes to help anyone else out there looking to add a field into the create account form (this is the form the customer must fill out on the login page, if they do not have a login yet and want to register with your website.)
Please backup everything before trying this and please understand I am posting this in order to help anyone else looking to do what I did, I make no guarantees of any kind and I assume no liability if anything bad happens.
Here we go:
1. Go to PHPMyAdmin and select your database from the pulldown.
2. On the left sidebar of PHPMyAdmin click on the table "customers"
3. On the right side of the screen you will see all the fields like customers_telephone, customers_fax and so-on... Now scroll below this and you should see a way to add a field, in mine I saw:
Add = 1, Fields = At end of table, Then I clicked "GO"
This sent me to another page to name my field and stuff so I named it "customers_taxid" (no quotation marks). Then I selected "VarChar" and a length of "32", Collation = (it was blank and I left it blank), Attributed = (it was blank and I left it blank), Null = NULL
Then I clicked "SAVE"
4. I then saw my new field in the table it was on the bottom of all the other ones that were previously there.
5. Close PHPMyAdmin
6. Open file includes/modules/YOURTEMPLATE/create_account.php
(or if your template did not override this then simply use the one in modules folder)
7a. Now search for the following:
$fax = zen_db_prepare_input($_POST['fax']);
DO NOT ERASE THE ABOVE CODE. PUT THE NEW CODE DIRECTLY UNDER THE CODE ABOVE, HERE IS THE EXTRA LINE OF CODE:
$taxid = zen_db_prepare_input($_POST['taxid']);
7b. Next search for:
'customers_fax' => $fax,
DO NOT ERASE THE ABOVE CODE. PUT THE NEW CODE DIRECTLY UNDER THE CODE ABOVE, HERE IS THE EXTRA LINE OF CODE:
'customers_taxid' => $taxid,
8. Now open file: includes/tamplates/YOURTEMPLATE/templates/tpl_module_create_account.php
9. Search for the following code:
<legend><?php echo TABLE_HEADING_PHONE_FAX_DETAILS; ?></legend>
this is the heading for the section on the form that houses the telephone number and fax number inputs, I changed it to this:
<legend><?php echo 'Additional Information'; ?></legend>
this allowed my heading to say "Additional Information" instead of the original text of "Additional Contact Details" *
*Please note: if you preffer to edit the variable "TABLE_HEADING_PHONE_FAX_DETAILS" go to includes/languages/english.php it is in there
9a. Now search for the following code:
<?php
if (ACCOUNT_FAX_NUMBER == 'true') {
?>
<br class="clearBoth" />
<label class="inputLabel" for="fax"><?php echo ENTRY_FAX_NUMBER; ?></label>
<?php echo zen_draw_input_field('fax', $account->fields['customers_fax'], 'id="fax"') . (zen_not_null(ENTRY_FAX_NUMBER_TEXT) ? '<span class="alert">' . ENTRY_FAX_NUMBER_TEXT . '</span>': ''); ?>
<?php
}
?>
DO NOT ERASE THE ABOVE CODE, ONLY PASTE THE NEW LINES OF CODE BELOW THE CODE ABOVE, here is the new code to paste under the code above:
<br class="clearBoth" />
<label class="inputLabel" for="taxid"><?php echo 'Tax ID Number:'; ?></label>
<?php echo zen_draw_input_field('taxid', $account->fields['customers_taxid'], 'id="taxid"') . (zen_not_null(ENTRY_FAX_NUMBER_TEXT) ? '<span class="alert">' . ENTRY_FAX_NUMBER_TEXT . '</span>': ''); ?>
10. Now go to Admin/customer.php and edit this file.
(editing this file will allow you to see the taxid field when you edit customer information in the administrative section)
11. Search for:
$customers_fax = zen_db_prepare_input($_POST['customers_fax']);
DO NOT ERASE THE ABOVE CODE. PUT THE NEW CODE DIRECTLY UNDER THE CODE ABOVE, HERE IS THE EXTRA LINE OF CODE:
$customers_taxid = zen_db_prepare_input($_POST['customers_taxid']);
11a. Now search for:
'customers_fax' => $customers_fax,
DO NOT ERASE THE ABOVE CODE. PUT THE NEW CODE DIRECTLY UNDER THE CODE ABOVE, HERE IS THE EXTRA LINE OF CODE:
'customers_taxid' => $customers_taxid,
11b. Now search for:
a.entry_country_id, c.customers_telephone, c.customers_fax,
REPLACE THIS CODE WITH THE FOLLOWING CODE BELOW:
a.entry_country_id, c.customers_telephone, c.customers_fax, c.customers_taxid,
(ALL I DID WAS ADD "c.customers_taxid," TO THE END OF THE EXISTING CODE.)
11c. Now search for:
<tr>
<td class="main"><?php echo ENTRY_FAX_NUMBER; ?></td>
<td class="main">
<?php
if ($processed == true) {
echo $cInfo->customers_fax . zen_draw_hidden_field('customers_fax');
} else {
echo zen_draw_input_field('customers_fax', $cInfo->customers_fax, zen_set_field_length(TABLE_CUSTOMERS, 'customers_fax', 15));
}
?>
</td>
DO NOT ERASE THIS CODE SIMPLY GO DIRECTLY UNDER THIS CODE AND ADD IN THE FOLLOWING CODE:
<tr>
<td class="main"><?php echo 'Tax ID:'; ?></td>
<td class="main">
<?php
if ($processed == true) {
echo $cInfo->customers_taxid . zen_draw_hidden_field('customers_taxid');
} else {
echo zen_draw_input_field('customers_taxid', $cInfo->customers_taxid, zen_set_field_length(TABLE_CUSTOMERS, 'customers_taxid', 15));
}
?>
</td>
12. All done it should now work, if it doesnt, that is why you made a backup before doing this.
Good luck I hope this helps!
Re: Add a field into create account
Hello Dr. Byte,
Can you please assist me one more time by letting me know which file writes the data from the address book entries (when a customer clicks on "add address") to the database?
I want to add an additional field in the "add address" form.
Thank You.
Re: Add a field into create account
Quote:
Originally Posted by
xlr82quik
Can you please assist me one more time by letting me know which file writes the data from the address book entries (when a customer clicks on "add address") to the database?
I want to add an additional field in the "add address" form.
There are likely multiple places depending on what you're trying to do.
see the header_php.php in the /includes/modules/pages/address_book_process folder
or maybe /includes/modules/YOURTEMPLATE/checkout_address_book.php
or maybe /includes/modules/YOURTEMPLATE/checkout_new_address.php
and the various template files associated with them
And there's also the admin/customers.php if you want to see/edit via the admin
Re: Add a field into create account
Hello, I appreciate all the help, I did edit all files you mentioned and the data is going into the database but for some reason I can not see the data in the address book overveiw and also when I click through to edit the address book entry the data for the new field appears as blank (but I know it is in the DB since I use PHPMyAdmin to check).
I assume I will need to edit another file to display the data in the address book overview, I just dont know which file...
And I guess I am just missing something in the file:
includes/templates/MYTEMPLATE/templates/tpl_modules_address_book_details.pgp
I was trying to add a fax number field to the address book entry, this is the code I used (in above mentioned file):
<label class="inputLabel" for="fax"><?php echo 'Fax Number:'; ?></label>
<?php echo zen_draw_input_field('fax', $entry->fields['entry_fax'], 'id="fax"') . (zen_not_null(ENTRY_FAX_NUMBER_TEXT) ? '<span class="alert">' . ENTRY_FAX_NUMBER_TEXT . '</span>': ''); ?>
Re: Add a field into create account
Hello, I know you are very busy and appreciate your help very much, just wanted to see if you may have had an answer on my last question...
Re: Add a field into create account
The way I'd find out is to search for TABLE_ADDRESS_BOOK in the files under the includes folder. Look for all the SELECT statements that extract several fields. In the file that relates to the page you're wanting to see this change on, make sure your fax field is included in the select or else your attempts to use that field will show blanks.
Re: Add a field into create account
Quote:
Originally Posted by
xlr82quik
9a. Now search for the following code:
<?php
if (ACCOUNT_FAX_NUMBER == 'true') {
?>
<br class="clearBoth" />
<label class="inputLabel" for="fax"><?php echo ENTRY_FAX_NUMBER; ?></label>
<?php echo zen_draw_input_field('fax', $account->fields['customers_fax'], 'id="fax"') . (zen_not_null(ENTRY_FAX_NUMBER_TEXT) ? '<span class="alert">' . ENTRY_FAX_NUMBER_TEXT . '</span>': ''); ?>
<?php
}
?>
DO NOT ERASE THE ABOVE CODE, ONLY PASTE THE NEW LINES OF CODE BELOW THE CODE ABOVE, here is the new code to paste under the code above:
<br class="clearBoth" />
<label class="inputLabel" for="taxid"><?php echo 'Tax ID Number:'; ?></label>
<?php echo zen_draw_input_field('taxid', $account->fields['customers_taxid'], 'id="taxid"') . (zen_not_null(ENTRY_FAX_NUMBER_TEXT) ? '<span class="alert">' . ENTRY_FAX_NUMBER_TEXT . '</span>': ''); ?>
Hello,
I have a client who needs to add a TAX ID field for reseller authentication purposes. I have read through your example, and I really appreciate your efforts, but I am confused about something.
In the snippet above, you instruct that your suggested code should be added below the provided original code. My question is, why do you repeat the ENTRY_FAX_NUMBER_TEXT portion of the code. It doesn't appear to have anything to do with the TAX ID. Here is the portion I am referring to:
Code:
. (zen_not_null(ENTRY_FAX_NUMBER_TEXT) ? '<span class="alert">' . ENTRY_FAX_NUMBER_TEXT . '</span>':"); ?>
Is this required just as a means to complete the statement? Shouldn't there be a corresponding finishing section similar to:
Code:
. (zen_not_null(ENTRY_TAXID_NUMBER_TEXT) ? '<span class="alert">' . ENTRY_TAXID_NUMBER_TEXT . '</span>':"); ?>
Thanks in advance.
Bob
Re: Add a field into create account
It wont matter, because this portion of the code is irrelevant for our purposes, and since I did not define the text for "ENTRY_TAXID_NUMBER_TEXT" I just left it as is was and didnt change anything.
However you can change it to "ENTRY_TAXID_NUMBER_TEXT" just make sure to define that variable in "includes/languages/english.php" and leave it blank (without any text), because I think this is the variable for the red colored * to let the customer know if it is a mandatory field (and in my example I did not make it mandatory)
Thanks.