Easy Populate 2.8 231
Installation and Documentation
This documentation is aimed at osCommerce Users using osCommerce Cart Ver. 2.3.1


Easy Populate (EP) was designed to provide a vehicle for moving products from one shop to another or as a means to store product sets for developers. Please keep this in mind before complaining about how it works. :o)

What does EP do now?

EP as progressed to a tool for exporting product details for easy editing in text or with Excel. After, we can import the product detail back into the osCommerce database with changes.

Easy Populate  lets you quickly populate and update thousands of products in many categories for an OSC store with data from an; Excel spreadsheet, OpenOffice spreadsheet, Filemaker database, Access database. Any delimited text file (you can now set a configuration var for the separator character).

Easy Populate can also export sets of products based on a category, manufacturer, or the product's status (visible/not visible) for editing, moving to another site or storing.

Easy Populate supports multiple categories, multiple languages, creates Categories and Manufacturers on the fly, unlimited levels of categories/subcategories are supported, products without pictures can be defaulted to a standard "no picture available" image and file uploading via browser or grab a file from the temp directory.

What does EP *NOT* do well?

So far, EP does not handle attributes well. When viewing product export, it may be difficult to understand how it works. As such, I'do not recommend that anyone use EP for managing attributes. But is can be done if you are patient.

EP does not handle "download" attributes.

The default behavior of EP is to Add & Update. If you download a product, change its category, then upload, EP will add the product to the new category. EP will not remove it from the previous category. EP does not move products from one category to another either.

The code is improved but still needs work. The code will read the entire product database into server memory before producing the export. New features improve the export file building to avoid loading the entire export file in memory also.


Requirements / Points to note BEFORE Installing 

  • osCommerce 2.3.1, is required, it will not work with previous versions of osCommerce
  • If you have made database changes to the products, products_description, or other product or category related tables, you may have some issues running the stock Easy Populate.
  • Easy Populate uses the product_model field (model number) to identify the record to update. It won't work without the model number. Each row should have a unique model number. i.e. you can't give all your products a product_model of "test".
  • Easy Populate will import tab, comma, semi-colon, or any other user-defined-separator delimited files. The default separator for CSV files in the US is a comma. The default separator for your country may vary. If you want to change the separator, there is a variable in the configuration section of easypopulate.php. Whatever you change it to, test it! Remember that  any of those separator characters anywhere in your data will cause Easy Populate to think that's another column of data unless you use double quotes to enclose the data! (see next note)
  • As of Version 2.76d, you may now enable the Excel safe output and input. This will now safely export any data (English test only), edit in excel, and re-import the data safely preserving tabs, commas, and carriage returns in your product’s description.
  • The first line of each Easy Populate file must have be a header row. If you upload a file without the headers, Easy Populate will fail.
  • Easy Populate should work fine on shared servers, servers with safe_mode set, and servers with magic_quotes turned on or off.
  • If you set the quantity of an item to zero, EP will automatically make the item Inactive in the database. To change the behavior, see the Configuration Variables section.
  • Easy Populate does NO formatting or conversion of date formats. It gives you exactly what came out of mysql, and it takes exactly the data  you give Easy Populate and shoves it into mysql. If you use a format that is not the mysql default, you'll push bad data into your date fields  in your database. Use this format and you'll avoid problems: YYYY-MM-DD.
  • Also, be aware that backslashes can confuse EP and the database because the backslash character is the escape character for strings in mysql. If you need a backslash in your data, add a second, so there a two together.
  • If you have problems with text fields you may have to "escape", that is use a backslashes (\), on single quotes (') and double quotes (") in product name and description fields. This issue may have been solved with Excel safe output option.



Installation Instructions 
If you do not know how to backup and restore your SQL database, you should not use this contribution. The potential for great catastrophe is VERY GREAT !! Easy Populate comes with no warranty. If it loses your data, it's not any of the contributors fault. Always test new modifications and contributions on a development or backup store.

Basic Installation

Please Note: The instructions refer to the /catalog/ folder often. This is the default location for osCommerce to be installed. Your installation may not be placed in this folder on your web server. Please adjust to your specific installation.

We will be working with the following files and folders from the contribution package:


STEP #1 - Upload the following files to your osCommerce Store Directory
  • Copy file /catalog/admin/easypopulate.php into /catalog/admin/ or whatever folder you have placed the osCommerce admin.
  • Copy file /catalog/admin/easypopulate_functions.php into /catalog/admin/ folder.
  • Copy the /catalog/admin/EPDocumentation/ folder (3 files) into your /catalog/admin/ folder.

STEP #2 - Setup the "temp" folder
  • The "/catalog/temp/" folder should be uploaded to (or created in) the root of your store (Beside the /admin/, /images/, and /includes/ Directories)
  • Set the CHMOD permissions of this folder to 777, if you do not know how to do this, ask your host to do it for you. It can be done with a free FTP software called FileZilla (Goggle it), and it can be done in DreamWeaver. With FileZilla, right-click the /temp/ folder and select "File Attributes...", then set the permissions. In DreamWeaver, in remote view, right-click the folder and select "Set Permissions...", then set the permissions.
  • If you need to change the location of the "temp" folder to some other location, you will need to edit the below define found near the top of the /admin/easypopulate.php file:

    define ('EP_TEMP_DIRECTORY', DIR_FS_CATALOG . 'temp/');

STEP #3 - Add a link in the Admin Panel. Edit file "/catalog/admin/incudes/boxes/catalog.php"

Find this code (Around Line 25):

Directly AFTER add this:

STEP #4 - Check with your web host about your hosting environment

There are several variables that may affect some with large data files when using Easy Populate. These can usually be adjusted to fit your needs in a Linux/Apache environment by adding a php.ini file in your /admin/ folder. Do check with your host on this to ensure that a) it can be done, and b) you're staying within your Terms of Service. This forum post may help:

When these factors come into play, often the script will simply halt with no error message.

The following php.ini settings are considered to be "default" by most hosts. Adjust higher as needed.

  • max_execution_time = 30 ;(in seconds)
    Change this to allow for more time that PHP can process your import file.
  • max_input_time = 60 ;(in seconds)
    post_max_size = 2M ;
    upload_max_filesize = 2M ;
    These will limit the size of a file you can import using Easy Populate. This can be circumvented by uploading the file via FTP to your /temp/ folder and importing it from there.
  • memory_limit = 8M ;
    Change this to allow PHP to use more memory to process your file. (32M recommended)
  • session.gc_maxlifetime = 1440 ; (in seconds)
    Your session lifetime, should always be longer then the max_execution_time.

STEP #5 - Configuring the file "/catalog/admin/easypopulate.php"

PLEASE DO THIS!!!!!: Go to /catalog/admin/easypopulate.php and read the section marked "Configuration Variables". It will allow you to adjust Easy Populate's operation for your store. I meant what I said, Please, Pretty please, do read the entire configuration stuff. Really. You'll be glad you did since if you don't and come to the support topic asking questions the docs answer, you may simply get asked to read the docs anyway. You'll find all kinds of neat configurable stuff there.

Installation is complete, You did read the entire config section like I suggested in STEP#7 above, right? ;-)



How to Use Easy Populate 
If you do not know how to backup and restore your SQL database, you should not use this contribution. The potential for great catastrophe is VERY GREAT !! Easy Populate comes with no warranty. If it loses your data, it's not any of the contributors fault. Always test new modifications and contributions on a development or backup store.

How to Use

  1. Open up your internet browser and go to your osCommerce Store Admin Panel
    Go to osCommerce Admin -> Catalog -> Easy Populate
  2. Click one of the links at the bottom of the box marked "Create then Download Files" and save the file to your local machine. 
  3. Edit the file in Excel or OpenOffice. Windows users just right click and "Open with" -> Excel. 
  4. After you are done editing, save the file:
    • Windows-Excel users: should Save as... CSV (MS-DOS) in most cases,
      or as a "Text (tab delimited)" file from Excel if a tab delimited file is desired.
      or MAC-Excel users, Save as... Windows-CSV. (see Instructions for MAC Users below)
    • OpenOffice users: as a "Text" file, check the "edit MORE HERE" 
    • Those with special character needs (such as cyrillic), use Open Office
      See Special Instructions for Non-Roman Character Sets (below)
  5. If you have more that 300 items in your store, read the SPECIAL INSTRUCTIONS FOR LARGE STORES 
  6. Now go back to Admin -> Catalog -> Easy Populate and click the upper Browse button, find your file that you want to upload, then click Upload and Insert Into Database.
  7. The file will be uploaded to your store. You should see a display that lists the items you are importing. If the last row appears blank, and complains that it can't import this record, all is fine, it's not unusual to get this error at the end of the file.
  8. If you'd like to use FTP and upload the file, put it in the EP_TEMP_DIRECTORY directory, and then put the filename in the box under "Upload from Temp dir" and click Insert Into Database. Remember the file must be readable by the username that the web server is running as. You might have to chmod 777 the uploaded file to let the script read it.

What does EP do with my data? (How it works)

When you upload a file, this is what EP does:

  • Breaks the file into lines based on the explicit field named "EOREOR". This word "EOREOR" must appear in the last field in each row of your data, or EP won't work.
  • Reads the first row to get the names of the fields you are importing. This is why you must have the header row in the file.
  • Checks to see if there is a valid product_model in the row, if it's not there, throw an error and go on to the next row.
  • Checks to see if the category & Manufacturer given exist in the database. If they do, it updates teh category image. If they do not exist, it creates the category/subcategories as needed, and then puts the product into that category/subcategory.

    If you are using a multilanguage shop, the category name with the language ID that is first in your language Sort Order is used to compare and find the existing cateogry. You can change the language Sort Order in the Admin -> Localization -> Languages. The language with the first Sort Order will always be used to compare existing Categories.

    The remaining category names are updated. If another row is found with the same Model number, but a different category, then that product is added to the second cateogry and all product information is updated again. This is similar to the osCommerce "copy Product" using the Link Product method.
  • Checks to see that the product_model is not too long. Stock OSC comes with just 12 characters available for the product_model. If you need more than 12, change your database and edit easypopulate.php and change the configuration variable EP_MODEL_NUMBER_SIZE. If it is not the right size, the import stops right then.
  • If the product_model does not exist in the database, the product is created with the information given (price, weight, qty). If it does exist, then the database is updated.

Can I add a product to more then one category? Yes!

Duplicate the product row, then change the category name. Each row in the EP upload file
will place the product in a different category the same as the osCommerce Admin does a "link" to multiple categories.


Easy Populate File Format 

This describes the file layout for the "Complete" download
  1. fields are delimited with a single "separator" character.
  2. fields do not need to be enclosed in quotes, unless it contains quotes or the separator character you are using.
  3. Each import file should have a row at the top (header row) that defines each column. The column headings are as follows.
  4. The first product's data follows the header row avoiding any blank lines. Products are setup one line per product.

The names of all the fields in order are:

  • v_products_model
  • v_products_name_N             // where N is the language ID
  • v_products_description_N     // where N is the language ID
  • v_products_url_N                 // where N is the language ID
  • v_products_image
  • v_products_images_image_N // where N is the image number
  • v_products_images_htmlcontent_N // where N is the content number
  • v_products_price
  • v_products_specials_price     // Special Price
  • v_products_weight
  • v_date_added                       //   YYYY-MM-DD
  • v_date_avail                        //   YYYY-MM-DD
  • v_products_quantity
  • v_manufacturers_name
  • v_categories_image_1
  • v_categories_name_1_1       // root category, language ID 1 (English)
  • v_categories_name_1_2       // root category, language ID 2 (Deutsch)
  • v_categories_name_1_3       // root category, language ID 3 (Español)
  • v_categories_image_2
  • v_categories_name_2_1       // second level cateogry (first sub-cat), language ID 1 (English)
  • v_categories_name_2_2       // second level cateogry (first sub-cat), language ID 2 (Deutsch)
  • v_categories_name_2_3       // second level cateogry (first sub-cat), language ID 3 (Español)
  • v_categories_image_3
  • v_categories_name_3_1       // third level category (second sub-cat), language ID 1 (English)
  • v_categories_name_3_2       // third level category (second sub-cat), language ID 2 (Deutsch)
  • v_categories_name_3_3       // third level category (second sub-cat), language ID 3 (Español)
  • v_tax_class_id
  • v_status                             // Active, Inactive, or Delete
  • EOREOR           // ALL ROWS MUST END WITH A "EOREOR" in the last cell

  • The following items are optional and will only be used if you have other contributions installed, and the items enabled in this contribution's settings.

  • # If you have turned on support for Additional Images, the following are available:
  • v_products_image_description   // Primary Image description
  • v_products_image_N   // Where N is a sequential number for each additional image.
  • v_products_image_description_N   // Where N is a sequential number for each description.

    # If you have turned on support for MVS the following is available:
  • v_vendor   // Nane of the Vendor. You must create the vendor manually before import.

    # If you have turned on support for the X-Sell contribution the following is available:
  • v_cross_sell   // Contains a comma separated list of related model numbers.

    # If you have turned on PDF File Upload and Display the following are available:
  • v_products_pdfupload
  • v_products_fileupload

    # If you have turned on support for UltraPics the following are available:
  • v_products_image_med
  • v_products_image_lrg
  • v_products_image_sm_1
  • v_products_image_xl_1
  • v_products_image_sm_2
  • v_products_image_xl_2
  • v_products_image_sm_3
  • v_products_image_xl_3
  • v_products_image_sm_4
  • v_products_image_xl_4
  • v_products_image_sm_5
  • v_products_image_xl_5
  • v_products_image_sm_6
  • v_products_image_xl_6

    # If you have turned on support for More Pics 6 the following 6 are available:
  • v_products_subimage1
  • v_products_subimage2
  • v_products_subimage3
  • v_products_subimage4
  • v_products_subimage5
  • v_products_subimage6

    # If you have turned on support for Header Tags Controller these 3 are available:
  • v_products_head_title_tag_N             // where N is the language ID
  • v_products_head_desc_tag_N           // where N is the language ID
  • v_products_head_keywords_N         // where N is the language ID
    # If you have turned on support for Separate Pricing Per Customer, use these 2:
    # Note: these must appear in pairs!! You cannot have a price without an ID.
  • v_customer_price_N             // where N is the ordinal number of groups/prices
  • v_customer_group_id_N       // match this with the v_customer_price_N "N" from above.


Description of Columns 

  • 'v_products_model' The model number for the product. You must add this to each line and all v_products_model must be unique.
  • 'v_products_image' The name of the image file for the product. May contain subdirectories (i.w. mysubdir/mypic.gif). If left blank, it will default as set in the configuration section of easypopulate.php
  • 'v_products_images_image'osc 2.3.1 additional images - The name of the image file for the product. May contain subdirectories (i.w. mysubdir/mypic.gif).
  • 'v_products_images_htmlcontent'osc 2.3.1 additional images - for use with other content e.g. the YouTube video for the Samsung galaxy tab as shown in the sample file
  • 'v_products_name_1', 'v_products_description_1' and 'v_products_url_1' For each language you have active in your store, you'll get a name, description and url for that product.
  • 'v_products_price' Price you want listed.
  • 'v_products_specials_price' Is this product on special? Use this column for osCommerce Special.
  • 'v_products_weight' Weight. Assumes you're using the default weight
  • 'v_date_avail' When the product will become available. Defaults to today if left blank.
  • 'v_date_added' When the product will be reported as being added to the database. Defaults to today if left blank.
  • 'v_products_quantity' Number of the products you have on hand. If left blank, it defaults to 1000
  • 'v_manufacturers_name' and 'v_categories_image' The name of the manufacturer. If not already in the database, it will be created
  • 'v_categories_image_1'
  • 'v_categories_name_1_1' // root category, language ID 1 (English)
  • 'v_categories_name_1_2' // root category, language ID 2 (Deutsch)
  • 'v_categories_name_1_3' // root category, language ID 3 (Español)
  • 'v_categories_image_2'
  • 'v_categories_name_2_1' // second level cateogry (first sub-cat), language ID 1 (English)
  • 'v_categories_name_2_2' // second level cateogry (first sub-cat), language ID 2 (Deutsch)
  • 'v_categories_name_2_3' // second level cateogry (first sub-cat), language ID 3 (Español)
  • 'v_categories_image_3'
  • 'v_categories_name_3_1' // third level category (second sub-cat), language ID 1 (English)
  • 'v_categories_name_3_2' // third level category (second sub-cat), language ID 2 (Deutsch)
  • 'v_categories_name_3_3' // third level category (second sub-cat), language ID 3 (Español)

    The category hierarchy that this product should be listed under. Note that v_categories_name_1_1 is the Highest level category, in English.

    The first number of the categories name field is the category level. The number 1 is the highest or top category.
    The second number of the categories name field is the language. The number is the language id. In a default osC ship they will be 1 = English, 
    2 = Deutsch, 3 = Español.
    An example: If you are selling cars and you want to list a Pontiac Aztec, you'd have something like this:
    Cars -> General Motors -> Pontiac

    for categories, and the Aztec would be listed in the Pontiac subcategory. 
    So your data would look like this:
    v_categories_name_1_1 = Cars, English
    v_categories_name_2_1 = General Motors, English
    v_cateogries_name_3_1 = Pontiac, English

    See, highest level category to lowest level category.
  • 'v_tax_class_id' The tax status you want to assign to this product
  • 'v_status' The status you want to set for this item. Defaults to Active. To make the product inactive, put the word Inactive in the field. Note: If you set a 
    product with zero quantity active, and the EP_INACTIVATE_ZERO_QUANTITIES flag in the configuration constants section is set to true, it will be inactive in the database. If you want to use different words for Active/Inactive, you can change the configuration variables EP_TEXT_ACTIVE, EP_TEXT_INACTIVE, and EP_DELETE_IT in the configuration constants section of /catalog/admin/easypopulate.php file.
    Valid entries in this column are: Active, Inactive or Delete
  • 'EOREOR' This is a REQUIRED FIELD! It gives an explicit end to the row of data. This must appear on every row of your data.


Special Instructions for Large Stores 

If your store has over 300 products, you will likely run into PHP timeout issues. The maximum time that a script can run is set in the php.ini file. The default is 30 seconds, and it seems that most people can upload about 300 items within that time.

If your store is over 300 items, you must split the file before it can be uploaded. You can do this by hand, or you can use the file-splitting feature of EP. If you split by hand remember that EP expects the first row in every file to be the headers, and will throw this line out. So if you don't have the header row, the code with not work correctly. 

To split a file with EP:
  • Go to Admin -> Catalog -> Easy Populate
  • Click the lower browse button and get the file you want to split.
  • Click the button named "Upload and Split file".

The file will be split into sections, each with 300 products, the last one being shorter as needed. These new files will be saved in the /catalog/temp directory, and will be named like this: EP_Split1.txt, EP_Split2.txt, etc. 

Import each file using the "Import EP file from Temp Dir" section of the EP main page.

If these files are still to large, edit easypopulate.php and change the configuration constant EP_SPLIT_MAX_RECORDS to a smaller number. This controls how many records are put into a single file when you split it. You may also increase that number if your PHP installation will handle the additional records without timing-out.

For those attempting to upload large files, remember, PHP has a limit built in so if your upload simply refreshes the page and nothing happens, no output is provided, then you may have a file that is too large for your PHP settings.


Special Instructions for Mac Users 

MAC Users should be sure to Save as... from Excel and specify "Windows CSV" or "DOS-CSV" format as described above in the general usage help.

If that doesn't work for you, try the following.

Because of the differences in the end-of-line characters used by Apple's operating systems, after editing and saving the file, you'll need to open the file in BBedit or equivalent and change the line endings to "Unix".

When the product name contains characters with accents they are translated to other characters in the database. ó, for example becomes A with a ~ and a superscript 3. Saving the file as ISO-8859-1 solves the problem. (thanks to BenBogart for this!)


Special Instructions for Non-Roman Character Sets 

(Special Thanks to Richard for this!)

If you want to feed your database with Cyrillic characters (or any other ones) I recommend to download Open Office. http://www.openoffice.org/

Open Office gives you the possibility to save a csv-file with the encoding you need! The OpenOffice application which you shall use for that issue is CALC. It's the Open Office equivalent to Microsoft Excel.

Something general to take care about - Be aware that, if you add another language the language ID has most probably the "ID-4", even if you deleted one
of the default languages before. So if you include Cyrillic fonts to a field with ID 3 they might not show up then. The easiest way to check that is to download an easy-populate feed and check the ID like that.

After your Open-Office calc-file contains all the information you need, just choose "save as" and select "Text CSV" in the dropdown menu. Under the dropdown-menu check additionally "Filtereinstellungen bearbeiten" (for German prog-versions) or if you use an english Open Office version, the checkbox might be labeled like "change filter-settings" or something similar.

Then press "save" and a pop-up window appears, telling that parts of the format might be lost. You press "YES" and you'll see a next dialog, where you should choose
# encoding (many options)
# separator for field 
# dividing element for text

If you want to feed your database with Cyrillic letters, "Cyrillic windows-1251" is pretty standard and might work for you from the scratch. If not, you shall experiment and try the other encodings. You will see, that the prog gives you lot's of different encoding options.

For me the dividing element (separator) was in any case "semi-colon" even I had defined "comma" in the easy populate settings! So if you can't upload with your defined separator give that a try.

If you once have your file uploaded and it's successful in the database you shall be aware that if you download the product-file with easy populate you shall open this CSV file in any case by choosing the right encoding in the opening dialog! That's important because otherwise you'll screw up the encoding. 

The process is anyway obvious. Also the right separator shall be easy to select, because you see the result in real-time, by choosing the different options for separator in the opening dialog. Then just make your changes and save it like described above.

This was the only version which worked for me and I hope it will help the one or the other lonely nerd, feeding her/his system in the Russian (or any other) way.



Support Documentation 


Troubleshooting Help

It doesn't work! What should I do?

Check through these common error messages, if they do not reflect your symptoms there are some basic fault steps described later in this section.

First, look for really obvious problems with your file.

  1. Did you download a file via Easy Populate first? If not, do that now.
  2. Compare the file you're trying to upload to the file you downloaded. Look for missing fields. Ignore the quotes, EP won't care about missing quotes. Open it in a text editor instead of excel. Look for odd characters that shouldn't be there.
  3. Copy your import file, trim the copy to only 5 import rows and try again. If it works, you may have a limit to the size of your upload file. See step 5 of the installation and consult your host.
  4. Try uploading the file you just downloaded. If this doesn't work, you've got basic problems, go to the Easy Populate Support Forum and describe your errors. Please search for your error message first, if there is no fix, then post a very specific problem report. Don't just post a message saying "It's broken", or we're likely to say, "Well, fix it!", the more information you can give on the error, the quicker a solution will be found.
  5. If you can upload the unmodified downloaded file, then try adding just one product to it, and upload that. Keep it simple, no fancy stuff in the descriptions or anything.

When I open the export file with Excel, it changes my column data.

The columns that Excel messes with is the model numbers (if there are dashes), and the date columns.

Excel examines the data imported from text type data documents and formats it as Excel sees fit. Luckily there is a fairly easy way to fix that.

With Excel XP there is a Data dropdown menu. Under that menu is a menu option called Import External Data. Use this to import the CSV file into Excel.

This is a multi-step process that lets you define the field separator and column properties. Any column Excel is modifying, you should specify a data type of text.

My products aren't in the right categories! What now?

Previous versions of EP required that the categories be listed from lowest to highest level categories. This has changed, and now the categories are from left to right in the file, highest to lowest level. So if you want your product to end up in:

Rocks -> Sedimentary Rocks -> Limestone Rocks

Then your categories should be set like this in the file:
v_categories_name_1_1 = Rocks - English
v_categories_name_2_1 = Sedimentary Rocks - English
v_categories_name_3_1 = Limestone Rocks - English


My products are going in duplicate categories instead of the one I specify, what now?

The default osCommerce shop has a 32 character limit to the category name. So when EP is importing the products, the cateogry name is truncated. The next products import can't find the existing category because the name in the database is not complete. So EP will create another, and another.

If you categories look like this:
v_categories_name_1_1 = Small Category Name
v_categories_name_2_1 = Longer Then 32 Char Category Name

They will insert like this

Small Category Name ->
Longer Then 32 Char Category Nam -> Product 1
Longer Then 32 Char Category Nam -> Product 2
Longer Then 32 Char Category Nam -> Product 3
Longer Then 32 Char Category Nam -> Product 4
Longer Then 32 Char Category Nam -> Product 5

But should look like this

Small Category Name ->
Longer Then 32 Char Category Name -> Product 1
Product 2
Product 3
Product 4
Product 5

You need to increase the number of characters the category name will allow in the database. Open your database in a SQL management tool such as phpMyAdmin. Go to the categories_description table and look for the categories_name field. Edit the field and increase the size to 64 or more if needed.


EasyPopulate creates a duplicate named category for every product! What now?

If easypopulate is creating multiple categories with one product each, and the
category names are truncated, then you have categories with more characters
the osCommerce allows. You need to increase the number of characters allowed
in your database. Table: categories_description Field: categories_name

I don’t see the Custom Export window, all I see is a tiny little box where is should be.

If you upload the fixed file from /catalog/admin/includes/classes/table_block.php. This should be fixed. If not you may want to try the following: 
open: /catalog/admin/includes/classes/table_block.php

if (isset($contents[$i][$x]['text']) && tep_not_null(isset($contents[$i][$x]['text']))) {

replace line with this:
if (isset($contents[$i][$x]['text']) && tep_not_null($contents[$i][$x]['text'])) {

if (isset($contents[$i][$x]['params']) && tep_not_null(isset($contents[$i][$x]['params']))) {

replace with:
if (isset($contents[$i][$x]['params']) && tep_not_null($contents[$i][$x]['params'])) {

I try to split a file but it leaves it in one big file, and says zero records were found.

Check to be sure that your data includes the 'EOREOR' at the end of every row. EP starts reading the file and looks for this field in order to split it into rows. If this field is missing, EP will never find the end of the row of data.

When I try to upload, I get an error message

Fatal error: Call to undefined function: tep_get_uploaded_file() in /home/www/web19/html/catalog/admin/easypopulate.php on line xxx
The function isn't being found. Did you copy the easypopulate_functions.php to the admin directory? 

I upload a file but it just goes right back to the Easy Populate screen without doing anything.

Chances are your file is too large to import properly. Either split it, or if it's already split, then set EP_SPLIT_MAX_RECORDS in easy populate to something smaller and try again.

The prices in the store are not what I put in the spreadsheet.

Check the EP_PRICE_WITH_TAX configuration constant in the configuration variables section. Change it to the opposite of what it is (i.e if it's false, set true, if true, set to false), and re-import. This variable tells EP that the price includes the tax rate or not.

When I try to upload a file, I get warnings like this:

  • Warning: Unable to create '/home/html/mati/html/catalog/temp/nuevo.txt': No such file or directory in /home/html/mati/html/tienda/admin/includes/functions/general.php on line 789
  • Warning: Unable to move '/tmp/phpz24pMf' to '/home/html/mati/html/catalog/temp/nuevo.txt' in /home/html/mati/html/tienda/admin/includes/functions/general.php on line 789
    File uploaded. Temporary filename: /tmp/phpz24pMf 
    User filename: nuevo.txt
    Size: 98039
  • Warning: file("/home/html/mati/html/catalog/temp/nuevo.txt") - No such file or directory in /home/html/mati/html/tienda/admin/easypopulate.php on line 469
  • Warning: Invalid argument supplied for foreach() in /home/html/mati/html/tienda/admin/easypopulate.php on line 473
    Upload complete

EP can't find the file that you uploaded for some reason. Check to see that you actually have a temp directory at the location shown. 

Does the settings section of the EP screen show it is writeable? Change the setting on the file to 744 (chmod 744 temp) on a *nix box, if that still doesn't work try 777. Directories should not be left at 777, is a potential security loophole. On Windows boxes ensure that IIS has write permission to that directory. 

If you do have a temp directory but it's not under  the catalog directory, then you must go into easypopulate.php and set the EP_TEMP_DIRECTORY constant definition.

If you are doing the "Create txt in temp dir" option and you get errors like this:

Warning: fopen("/usr/local/plesk/apache/vhosts/yourdomain.com/temp/EP1038000963.csv", "w+") 
- No such file or directory in /usr/local/plesk/apache/vhosts/yourdomain/httpsdocs/admin/easypopulate.php on line 273

You have one of two problems:

  • The permissions are not set correctly for your temp directory, CHmod the "temp" directory to 777, verify by using Tools->Files and go to the temp directory, the perms should read like this "drwxrwxrwx"
  • The temp dir path is wrong. First, check the path that you see in Tools->Files. Now compare that to the path in the error message. If they are not the same, edit the EP_TEMP_DIRECTORY constant definition near the top so they will match.

About Special Characters

Special characters should be handled OK by Easy Populate, but it is recommended to use the special control characters as there are some parts of osC that may not properly strip slashes from the data if you use the special character instead of the control codes. Try the Excel Safe Output feature if you haven't already.

Windows users

If you have trouble downloading and opening the file, try downloading the file.
If you encounter errors here trying to dl the file, try using the "Create txt in temp dir" link. This will create a file in the /catalog/temp directory, which you can get to via the Tools/Files in the admin area, and download it there.

If you still have problems at that point, well, there's always ftp. I've beaten my head against this wall too much, and dammed if I'm going to spend more time fussing with a busted browser on a busted 'operating system'. Bill Gates has stolen enough of my life as it is. Get Mozilla. It works.

It's possible this problem is related to sites that have their admin on the https side.

If your problem is not described above and your still having problems?

See this section: How to ask for help.

Froogle Help 

Please Note: This functionality is not up-to-date. This function may be better served with a shopping site feed contribution that is being maintained.

Easy Populate supports the basic froogle format. You'll need to contact Goggle to set up your froogle account. You'll also need to rename the output file as required by goggle


Froogle downloads will include the specials price if one is set and active and applies to today.

To support the froogle export format, you must configure two configuration variables which should not need changing:

The following should be set to the full address that an external person would have to type into their browser to go directly to your product info page. Simplest way to set this is to go look at a product in your store with your browser, then copy/paste the url, and chop off everything after 'product_info.php'. (should not need changing)


The following should be set to the full address to your images directory, with the trailing slash. (Again, should not need changing)


Once you've set these, test by doing a froogle export, and copy/paste the product_info url into your browser. Do the same for the image. Troubleshoot until this works as expected.



Extra Fields Contribution 

(Please ignore if you do not have this contribution installed)
There is no option to download product options using EP. To use EP to add and maintain Extra Fields create a file with the following columns.

'v_products_model' The model number for the product. You must add this to each line and all v_products_model must be unique.
'v_products_extra_fields_name' Case sensitive name of the extra Field. Must be exactly the same as the name of the extra field in the admin area.
'v_products_extra_fields_id' This is the tricky one, it is the extra fields ID. You will probably need to use PHPMyAdmin to find out what it is.
'v_products_extra_fields_value' The value you want for the extra field.

For example, to add information for two extra fields, one called "List Price" and the other "Our Part No" you need a file in this format



Additional Images Contribution 

(Please ignore if you do not have this contribution installed)

Easy Populate will export the large image file name.

Upon import, Easy Populate will be expecting the filename specified to be the large image. It will place the filename in the thumbnail image location (this is the original image location used by osCommerce for the main image) and clear the other image sizes. This allows you to use the Additional Images utility to process the new images for the other images sizes.

if you are exporting data to change the prices or the description of a product, do yourself a favor and don't export the additional images names. You will save yourself trouble in the end. Otherwise, you'll need to reprocess the images sizes again.



Master Product Contribution 

(Please ignore if you do not have this contribution installed)

Easy Populate will export-import master products data.



How to Get Help 

If you don't understand what a setting is or does, please ask.

Remember that this was written by volunteers. If you have questions, post in the forums. Please don't e-mail any of the authors involved since they may not be supporting the script any longer. Lives change and people contribute and move on :)

Before you ask a question, find your answer yourself:

  • Please, please, read the entire docs.
  • Search the support thread (lower left of the support thread page) and read through a few pages of the search results for your problem.
  • Read at least the last 4-5 pages of the support topic (link is below).
  • Goggle your problem. e.g. in Goggle enter extra fields site:forums.oscommerce.com

Only after that, should you ask for help with an error or problem using this contribution. Volunteers' time is just as valuable as yours. (please make a little effort)

How to ask for help

Please gather information we need to help you:

  1. Edit easypopulate.php and ensure EP_SHOW_EP_SETTINGS is set to true, then copy the settings & server info that are displayed on the EP main page into your post.
  2. Include the type of operating system and software you are using to edit the datafile.
    (Windows, MAC, Linux) / (Excel, Open Office, etc.)
  3. Copy of any error message you are receiving or description of problem if no error.
  4. If it is a upload problem, post a link to a sample of any upload file you are trying.
    If it is a download problem, post a link to the file EP is producing.
    ** Please avoid posting the sample data since the forum may modify it:
    This is easy to do. Simply FTP all or a portion of your import file to the root of your shop's hosting space (remember, no spaces in the file name. Then post a link to the file like this: http://www.myshop.com/shop/mycsv.csv. After someone has responded, you can remove it.
  5. Post all the info and your problem description in the support thread: http://forums.oscommerce.com/index.php?showtopic=162244

You won't be saving anyone time by avoiding this plea. Thanks for helping us help you !!