Page 1 of 6 123 ... LastLast
Results 1 to 10 of 138

Hybrid View

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

  8. #8
    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.

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

    Default Re: Add a field into create account

    thank you for the quick reply. I will do the alterations this weekend.

  10. #10
    Join Date
    Dec 2006
    Posts
    19
    Plugin Contributions
    0

    Default Re: Add a field into create account

    Thanks for the clear directions on getting this field added. It's exactly what we wanted ourselves!

    This works great for new customers and for admins looking at customer records. However, we also needed to allow existing customers the ability to edit their tax id number (or add it if they've never done so).

    Here are the steps we followed to allow an existing customer to edit his/her tax ID. Hopefully it's helpful as well.

    1) In the file \includes\templates\<YOUR TEMPLATE>\templates\tpl_account_edit_default.php (it wasn't there for us so we copy-pasted it from the template_default folder)


    Right after:

    <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>': ''); ?>
    <br class="clearBoth" />
    Inserted:

    <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_TAXID_TEXT) ? '<span class="alert">' . ENTRY_TAXID_TEXT . '</span>': ''); ?>
    <br class="clearBoth" />
    **BY THE WAY: the variables ENTRY_TAXID_TEXT weren't in our english.php file, so we added them right after ENTRY_FAX_NUMBER_TEXT. As has been stated in a previous post, you could leave the TAXID out of it and just use the FAX_NUMBER there, but we wanted to be thorough even though it probably makes little difference.
    2) In the file \includes\modules\pages\account_edit\header_php.php:
    a) After:

    $fax = zen_db_prepare_input($_POST['fax']);
    Inserted:

    $taxid = zen_db_prepare_input($_POST['taxid']);
    b) After:

    array('fieldName'=>'customers_fax', 'value'=>$fax, 'type'=>'string'),
    Inserted:

    array('fieldName'=>'customers_taxid', 'value'=>$taxid, 'type'=>'string'),
    c) Within the array:

    $account_query = "SELECT customers_gender, customers_firstname, customers_lastname,

    customers_dob, customers_email_address, customers_telephone,

    customers_fax, customers_email_format, customers_referral

    FROM " . TABLE_CUSTOMERS . "

    WHERE customers_id = :customersID";
    Added customers_taxid, as follows:

    $account_query = "SELECT customers_gender, customers_firstname, customers_lastname,

    customers_dob, customers_email_address, customers_telephone,

    customers_fax, customers_taxid, customers_email_format, customers_referral

    FROM " . TABLE_CUSTOMERS . "

    WHERE customers_id = :customersID";


    That should do it. BTW, we created these instructions after we implemented the change, so hopefully we didn't overlook something.

    jbhansen

 

 
Page 1 of 6 123 ... 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