Page 1 of 14 12311 ... LastLast
Results 1 to 10 of 138
  1. #1
    Join Date
    Feb 2007
    Posts
    15
    Plugin Contributions
    1

    Default 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).

  2. #2
    Join Date
    Jan 2004
    Posts
    66,373
    Blog Entries
    7
    Plugin Contributions
    274

    Default Re: Add a field into create account

    The validation and saving of the collected data is handled by:
    /includes/modules/YOURTEMPLATE/create_account.php
    .

    Zen Cart - putting the dream of business ownership within reach of anyone!
    Donate to: DrByte directly or to the Zen Cart team as a whole

    Remember: Any code suggestions you see here are merely suggestions. You assume full responsibility for your use of any such suggestions, including any impact ANY alterations you make to your site may have on your PCI compliance.
    Furthermore, any advice you see here about PCI matters is merely an opinion, and should not be relied upon as "official". Official PCI information should be obtained from the PCI Security Council directly or from one of their authorized Assessors.

  3. #3
    Join Date
    Feb 2007
    Posts
    15
    Plugin Contributions
    1

    Default 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!

  4. #4
    Join Date
    Feb 2007
    Posts
    15
    Plugin Contributions
    1

    Default 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.

  5. #5
    Join Date
    Jan 2004
    Posts
    66,373
    Blog Entries
    7
    Plugin Contributions
    274

    Default Re: Add a field into create account

    Quote Originally Posted by xlr82quik View Post
    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
    .

    Zen Cart - putting the dream of business ownership within reach of anyone!
    Donate to: DrByte directly or to the Zen Cart team as a whole

    Remember: Any code suggestions you see here are merely suggestions. You assume full responsibility for your use of any such suggestions, including any impact ANY alterations you make to your site may have on your PCI compliance.
    Furthermore, any advice you see here about PCI matters is merely an opinion, and should not be relied upon as "official". Official PCI information should be obtained from the PCI Security Council directly or from one of their authorized Assessors.

  6. #6
    Join Date
    Feb 2007
    Posts
    15
    Plugin Contributions
    1

    Default 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>': ''); ?>

  7. #7
    Join Date
    Feb 2007
    Posts
    15
    Plugin Contributions
    1

    Default 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...

  8. #8
    Join Date
    Jan 2004
    Posts
    66,373
    Blog Entries
    7
    Plugin Contributions
    274

    Default 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.
    .

    Zen Cart - putting the dream of business ownership within reach of anyone!
    Donate to: DrByte directly or to the Zen Cart team as a whole

    Remember: Any code suggestions you see here are merely suggestions. You assume full responsibility for your use of any such suggestions, including any impact ANY alterations you make to your site may have on your PCI compliance.
    Furthermore, any advice you see here about PCI matters is merely an opinion, and should not be relied upon as "official". Official PCI information should be obtained from the PCI Security Council directly or from one of their authorized Assessors.

  9. #9
    Join Date
    Sep 2005
    Location
    Spencer, MA
    Posts
    41
    Plugin Contributions
    0

    Default Re: Add a field into create account

    Quote Originally Posted by xlr82quik View Post
    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

  10. #10
    Join Date
    Feb 2007
    Posts
    15
    Plugin Contributions
    1

    Default 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.

 

 
Page 1 of 14 12311 ... LastLast

Similar Threads

  1. How do I add a custom pulldown field to create account page?
    By margarita in forum Templates, Stylesheets, Page Layout
    Replies: 1
    Last Post: 3 May 2008, 07:48 PM
  2. add a field to "create account"
    By bobio in forum Templates, Stylesheets, Page Layout
    Replies: 0
    Last Post: 26 Jan 2008, 07:35 AM
  3. Create account Form field allign
    By manfer72 in forum Templates, Stylesheets, Page Layout
    Replies: 1
    Last Post: 8 Jan 2008, 12:01 AM
  4. Create a requested field in registration account
    By rosponina in forum Managing Customers and Orders
    Replies: 6
    Last Post: 31 Jul 2006, 09:15 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
disjunctive-egg
Zen-Cart, Internet Selling Services, Klamath Falls, OR