bahia Posted January 31, 2006 Share Posted January 31, 2006 Hi all, Sorry if this has been asked before (I'm sure it has :rolleyes: ) but for 3 days I've searched and found no answer. After inserting each of my split files into the database I keep getting a 'duplicate entry' error such as: 1062 - Duplicate entry '303-0' for key 1 INSERT INTO products_to_categories (products_id, categories_id) VALUES ("303.092", "0") Each time I receive this error I go into php Admin and clear out the following tables: products, products_description, categories and categories_description. I've also cleared my tab delimited file of all quotation marks and apostrophes. What could be going wrong? Quote Link to comment Share on other sites More sharing options...
xao Posted January 31, 2006 Share Posted January 31, 2006 Well I fixed it with a little trial and error, here is the code I ended up using... $query = "INSERT INTO ".TABLE_PRODUCTS." ( products_image, products_image_med, products_image_lrg, products_image_sm_1, products_image_xl_1, products_image_sm_2, products_image_xl_2, products_image_sm_3, products_image_xl_3, products_image_sm_4, products_image_xl_4, products_image_sm_5, products_image_xl_5, products_image_sm_6, products_image_xl_6, products_model, products_price, products_status, products_last_modified, products_date_added, products_date_available, products_tax_class_id, products_weight, products_quantity, manufacturers_id) VALUES ( '$v_products_image' , '$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' , "; Well it worked like a champ until I went to add a new product then it failed. Any insight would be appreciated. I'm using the EP v2.6 that came with Ultrapics. When I add a new product I get: Notice the "VALUES" the first image and the second do not have the appropriate quotes around them. I can't seem to figure out the proper code for this. I think it's in the easypopulate.php file in between lines 1041 and 1075 but I've tried all sorts of combinations and just can't get it to work. Quote Link to comment Share on other sites More sharing options...
edukes Posted February 1, 2006 Share Posted February 1, 2006 I have a couple of questions concerning EP. I just uploaded over 2800 items without a problem. 1) I'm not clear on what to set the temp directory. Does EP get some of this from the Dpcumnet root in the config.php files and append it to that? I do not have the 'catalog' directory. 2) What is the best way to add the image files to the csv files? I had to manually enter over 2800 paths and extensions to the image name. :( Took me 4 days! Thanks, this is a great contrib!!! Quote Link to comment Share on other sites More sharing options...
scheistermeister Posted February 1, 2006 Share Posted February 1, 2006 nevermind my question! i got it figured out! Quote Link to comment Share on other sites More sharing options...
RollingStone Posted February 2, 2006 Share Posted February 2, 2006 I keep getting this error when I am trying to upload the easy populate Complete file from my computer into my database. Any help would be appreciated! The temp directory has been created under /catalog/ and it is set to 777 so it should have no problems writing to it. For the easypopulate.php in /catalog/admin i have the temp dir set like this: $tempdir = "/home/motox/public_html/catalog/temp/"; $tempdir2 = "/home/motox/public_html/catalog/temp/"; I used to have them just like "temp/" but that didnt work either. These are the errors I get when trying to upload: Warning: move_uploaded_file($DOCUMENT_ROOT/home/motox/public_html/catalog/temp/EP2006Feb02-1301.txt): failed to open stream: No such file or directory in /home/motox/public_html/catalog/admin/easypopulate_functions.php on line 32 Warning: move_uploaded_file(): Unable to move '/tmp/phpxuCvZS' to '$DOCUMENT_ROOT/home/motox/public_html/catalog/temp/EP2006Feb02-1301.txt' in /home/motox/public_html/catalog/admin/easypopulate_functions.php on line 32 File uploaded. Temporary filename: /tmp/phpxuCvZS User filename: EP2006Feb02-1301.txt SIZE_EP1380741 Warning: file($DOCUMENT_ROOT/home/motox/public_html/catalog/temp/EP2006Feb02-1301.txt): failed to open stream: No such file or directory in /home/motox/public_html/catalog/admin/easypopulate.php on line 735 Warning: Invalid argument supplied for foreach() in /home/motox/public_html/catalog/admin/easypopulate.php on line 758 Quote Link to comment Share on other sites More sharing options...
Guest Posted February 2, 2006 Share Posted February 2, 2006 Well I fixed it with a little trial and error, here is the code I ended up using... Mind sharing your complete easypopulate.php? I am still having problems using it with the current MAXDVD multipics contrib. Quote Link to comment Share on other sites More sharing options...
Guest Posted February 2, 2006 Share Posted February 2, 2006 Mind sharing your complete easypopulate.php? I am still having problems using it with the current MAXDVD multipics contrib. I'm getting the error: Parse error: parse error, unexpected '.' in C:\Program Files\Apache Group\Apache2\htdocs\osc\vals\catalog\admin\easypopulate.php on line 1715 Here is the easypopulate.php I'm using: <?php // Current EP Version$curver = '2.76-MS2'; /* $Id: easypopulate.php,v 2.75 2005/04/05 AL Exp $*/ ////*******************************//*******************************// C O N F I G U R A T I O N// V A R I A B L E S//*******************************//******************************* // **** Temp directory ****// if you changed your directory structure from stock and do not have /catalog/temp/, then you'll need to change this accordingly.//$tempdir = "temp/";$tempdir2 = "temp/"; //**** File Splitting Configuration ****// we attempt to set the timeout limit longer for this script to avoid having to split the files// NOTE: If your server is running in safe mode, this setting cannot override the timeout set in php.ini// uncomment this if you are not on a safe mode server and you are getting timeouts// set_time_limit(330); // if you are splitting files, this will set the maximum number of records to put in each file.// if you set your php.ini to a long time, you can make this number biggerglobal $maxrecs;$maxrecs = 300; // default, seems to work for most people. Reduce if you hit timeouts//$maxrecs = 4; // for testing //**** Image Defaulting ****global $default_images, $default_image_manufacturer, $default_image_product, $default_image_category; // set them to your own default "We don't have any picture" gif//$default_image_manufacturer = 'no_image_manufacturer.gif';//$default_image_product = 'no_image_product.gif';//$default_image_category = 'no_image_category.gif'; // or let them get set to nothing$default_image_manufacturer = '';$default_image_product = '';$default_image_category = ''; //**** Status Field Setting ****// Set the v_status field to "Inactive" if you want the status=0 in the system// Set the v_status field to "Delete" if you want to remove the item from the system <- THIS IS NOT WORKING YET!// If zero_qty_inactive is true, then items with zero qty will automatically be inactive in the store.global $active, $inactive, $zero_qty_inactive, $deleteit;$active = 'Active';$inactive = 'Inactive';//$deleteit = 'Delete'; // not functional yet$zero_qty_inactive = true; //**** Size of products_model in products table ****// set this to the size of your model number field in the db. We check to make sure all models are no longer than this value.// this prevents the database from getting fubared. Just making this number bigger won't help your database! They must match!global $modelsize;$modelsize = 25; //**** Price includes tax? ****// Set the v_price_with_tax to// 0 if you want the price without the tax included// 1 if you want the price to be defined for import & export including tax.global $price_with_tax;$price_with_tax =true; // **** Quote -> Escape character conversion ****// If you have extensive html in your descriptions and it's getting mangled on upload, turn this off// set to 1 = replace quotes with escape characters// set to 0 = no quote replacementglobal $replace_quotes;$replace_quotes = false; // **** Field Separator ****// change this if you can't use the default of tabs// Tab is the default, comma and semicolon are commonly supported by various progs// Remember, if your descriptions contain this character, you will confuse EP!global $separator;$separator = "\t"; // tab is default//$separator = ","; // comma//$separator = ";"; // semi-colon//$separator = "~"; // tilde//$separator = "-"; // dash//$separator = "*"; // splat // **** Max Category Levels ****// change this if you need more or fewer categoriesglobal $max_categories;$max_categories = 3; // 7 is default // VJ product attributes begin// **** Product Attributes ****// change this to false, if do not want to download product attributesglobal $products_with_attributes;$products_with_attributes = true; // change this to true, if you use QTYpro and want to set attributes stock with EP.global $products_attributes_stock;$products_attributes_stock = false; // change this if you want to download selected product options// this might be handy, if you have a lot of product options, and your output file exceeds 256 columns (which is the max. limit MS Excel is able to handle)global $attribute_options_select;//$attribute_options_select = array('Size', 'Model'); // uncomment and fill with product options name you wish to download // comment this line, if you wish to download all product options// VJ product attributes end // ****************************************// Froogle configuration variables// -- YOU MUST CONFIGURE THIS! IT WON'T WORK OUT OF THE BOX!// **************************************** // **** Froogle product info page path ****// We can't use the tep functions to create the link, because the links will point to the admin, since that's where we're at.// So put the entire path to your product_info.php page hereglobal $froogle_product_info_path;$froogle_product_info_path = "http://www.yourdomain.com/catalog/product_info.php"; // **** Froogle product image path ****// Set this to the path to your images directoryglobal $froogle_image_path;$froogle_image_path = "http://www.yourdomain.com/catalog/images/"; // **** Froogle - search engine friendly setting// if your store has SEARCH ENGINE FRIENDLY URLS set, then turn this to true// I did it this way because I'm having trouble with the code seeing the constants// that are defined in other places.global $froogle_SEF_urls;$froogle_SEF_urls = false; // ****************************************// End Froogle configuration variables// **************************************** //*******************************//*******************************// E N D// C O N F I G U R A T I O N// V A R I A B L E S//*******************************//******************************* //*******************************//*******************************// S T A R T// INITIALIZATION//*******************************//******************************* require('includes/application_top.php');require('includes/database_tables.php'); //*******************************// If you are running a pre-Nov1-2002 snapshot of OSC, then we need this include line to avoid// errors like:// undefined function tep_get_uploaded_file if (!function_exists(tep_get_uploaded_file)){ include ('easypopulate_functions.php'); }//******************************* // VJ product attributes beginglobal $attribute_options_array;$attribute_options_array = array(); if ($products_with_attributes == true) { if (is_array($attribute_options_select) && (count($attribute_options_select) > 0)) { foreach ($attribute_options_select as $value) { $attribute_options_query = "select distinct products_options_id from " . TABLE_PRODUCTS_OPTIONS . " where products_options_name = '" . $value . "'"; $attribute_options_values = tep_db_query($attribute_options_query); if ($attribute_options = tep_db_fetch_array($attribute_options_values)){ $attribute_options_array[] = array('products_options_id' => $attribute_options['products_options_id']); } } } else { $attribute_options_query = "select distinct products_options_id from " . TABLE_PRODUCTS_OPTIONS . " order by products_options_id"; $attribute_options_values = tep_db_query($attribute_options_query); while ($attribute_options = tep_db_fetch_array($attribute_options_values)){ $attribute_options_array[] = array('products_options_id' => $attribute_options['products_options_id']); } }}// VJ product attributes end global $filelayout, $filelayout_count, $filelayout_sql, $langcode, $fileheaders; // these are the fields that will be defaulted to the current values in the database if they are not found in the incoming fileglobal $default_these;$default_these = array( 'v_products_image', 'v_products_mimage', 'v_products_bimage', 'v_products_subimage1', 'v_products_bsubimage1', 'v_products_subimage2', 'v_products_bsubimage2', 'v_products_subimage3', 'v_products_bsubimage3', 'v_categories_id', 'v_products_price', 'v_products_quantity', 'v_products_weight', 'v_date_avail', 'v_instock', 'v_tax_class_title', 'v_manufacturers_name', 'v_manufacturers_id', 'v_products_dim_type', 'v_products_length', 'v_products_width', 'v_products_height', 'v_products_upc' ); //elari check default language_id from configuration table DEFAULT_LANGUAGE$epdlanguage_query = tep_db_query("select languages_id, name from " . TABLE_LANGUAGES . " where code = '" . DEFAULT_LANGUAGE . "'");if (tep_db_num_rows($epdlanguage_query)) { $epdlanguage = tep_db_fetch_array($epdlanguage_query); $epdlanguage_id = $epdlanguage['languages_id']; $epdlanguage_name = $epdlanguage['name'];} else { Echo 'Strange but there is no default language to work... That may not happen, just in case... ';} $langcode = ep_get_languages(); if ( $dltype != '' ){ // if dltype is set, then create the filelayout. Otherwise it gets read from the uploaded file ep_create_filelayout($dltype); // get the right filelayout for this download} //*******************************//*******************************// E N D// INITIALIZATION//*******************************//******************************* if ( $download == 'stream' or $download == 'tempfile' ){ //******************************* //******************************* // DOWNLOAD FILE //******************************* //******************************* $filestring = ""; // this holds the csv file we want to download $result = tep_db_query($filelayout_sql); $row = tep_db_fetch_array($result); // Here we need to allow for the mapping of internal field names to external field names // default to all headers named like the internal ones // the field mapping array only needs to cover those fields that need to have their name changed if ( count($fileheaders) != 0 ){ $filelayout_header = $fileheaders; // if they gave us fileheaders for the dl, then use them } else { $filelayout_header = $filelayout; // if no mapping was spec'd use the internal field names for header names } //We prepare the table heading with layout values foreach( $filelayout_header as $key => $value ){ $filestring .= $key . $separator; } // now lop off the trailing tab $filestring = substr($filestring, 0, strlen($filestring)-1); // set the type if ( $dltype == 'froogle' ){ $endofrow = "\n"; } else { // default to normal end of row $endofrow = $separator . 'EOREOR' . "\n"; } $filestring .= $endofrow; $num_of_langs = count($langcode); while ($row){ // if the filelayout says we need a products_name, get it // build the long full froogle image path $row['v_products_fullpath_image'] = $froogle_image_path . $row['v_products_image']; // Other froogle defaults go here for now $row['v_froogle_instock'] = 'Y'; $row['v_froogle_shipping'] = ''; $row['v_froogle_upc'] = ''; $row['v_froogle_color'] = ''; $row['v_froogle_size'] = ''; $row['v_froogle_quantitylevel'] = ''; $row['v_froogle_manufacturer_id'] = ''; $row['v_froogle_exp_date'] = ''; $row['v_froogle_product_type'] = 'OTHER'; $row['v_froogle_delete'] = ''; $row['v_froogle_currency'] = 'USD'; $row['v_froogle_offer_id'] = $row['v_products_model']; $row['v_froogle_product_id'] = $row['v_products_model']; // names and descriptions require that we loop thru all languages that are turned on in the store foreach ($langcode as $key => $lang){ $lid = $lang['id']; // for each language, get the description and set the vals $sql2 = "SELECT * FROM ".TABLE_PRODUCTS_DESCRIPTION." WHERE products_id = " . $row['v_products_id'] . " AND language_id = '" . $lid . "' "; $result2 = tep_db_query($sql2); $row2 = tep_db_fetch_array($result2); // I'm only doing this for the first language, since right now froogle is US only.. Fix later! // adding url for froogle, but it should be available no matter what if ($froogle_SEF_urls){ // if only one language if ($num_of_langs == 1){ $row['v_froogle_products_url_' . $lid] = $froogle_product_info_path . '/products_id/' . $row['v_products_id']; } else { $row['v_froogle_products_url_' . $lid] = $froogle_product_info_path . '/products_id/' . $row['v_products_id'] . '/language/' . $lid; } } else { if ($num_of_langs == 1){ $row['v_froogle_products_url_' . $lid] = $froogle_product_info_path . '?products_id=' . $row['v_products_id']; } else { $row['v_froogle_products_url_' . $lid] = $froogle_product_info_path . '?products_id=' . $row['v_products_id'] . '&language=' . $lid; } } $row['v_products_name_' . $lid] = $row2['products_name']; $row['v_products_description_' . $lid] = $row2['products_description']; $row['v_products_url_' . $lid] = $row2['products_url']; // froogle advanced format needs the quotes around the name and desc $row['v_froogle_products_name_' . $lid] = '"' . strip_tags(str_replace('"','""',$row2['products_name'])) . '"'; $row['v_froogle_products_description_' . $lid] = '"' . strip_tags(str_replace('"','""',$row2['products_description'])) . '"'; // support for Linda's Header Controller 2.0 here if(isset($filelayout['v_products_head_title_tag_' . $lid])){ $row['v_products_head_title_tag_' . $lid] = $row2['products_head_title_tag']; $row['v_products_head_desc_tag_' . $lid] = $row2['products_head_desc_tag']; $row['v_products_head_keywords_tag_' . $lid] = $row2['products_head_keywords_tag']; } // end support for Header Controller 2.0 } // for the categories, we need to keep looping until we find the root category // start with v_categories_id // Get the category description // set the appropriate variable name // if parent_id is not null, then follow it up. // we'll populate an aray first, then decide where it goes in the $thecategory_id = $row['v_categories_id']; $fullcategory = ''; // this will have the entire category stack for froogle for( $categorylevel=1; $categorylevel<$max_categories+1; $categorylevel++){ if ($thecategory_id){ $sql2 = "SELECT categories_name FROM ".TABLE_CATEGORIES_DESCRIPTION." WHERE categories_id = " . $thecategory_id . " AND language_id = " . $epdlanguage_id; $result2 = tep_db_query($sql2); $row2 = tep_db_fetch_array($result2); // only set it if we found something $temprow['v_categories_name_' . $categorylevel] = $row2['categories_name']; // now get the parent ID if there was one $sql3 = "SELECT parent_id FROM ".TABLE_CATEGORIES." WHERE categories_id = " . $thecategory_id; $result3 = tep_db_query($sql3); $row3 = tep_db_fetch_array($result3); $theparent_id = $row3['parent_id']; if ($theparent_id != ''){ // there was a parent ID, lets set thecategoryid to get the next level $thecategory_id = $theparent_id; } else { // we have found the top level category for this item, $thecategory_id = false; } //$fullcategory .= " > " . $row2['categories_name']; $fullcategory = $row2['categories_name'] . " > " . $fullcategory; } else { $temprow['v_categories_name_' . $categorylevel] = ''; } } // now trim off the last ">" from the category stack $row['v_category_fullpath'] = substr($fullcategory,0,strlen($fullcategory)-3); // temprow has the old style low to high level categories. $newlevel = 1; // let's turn them into high to low level categories for( $categorylevel=6; $categorylevel>0; $categorylevel--){ if ($temprow['v_categories_name_' . $categorylevel] != ''){ $row['v_categories_name_' . $newlevel++] = $temprow['v_categories_name_' . $categorylevel]; } } // if the filelayout says we need a manufacturers name, get it if (isset($filelayout['v_manufacturers_name'])){ if ($row['v_manufacturers_id'] != ''){ $sql2 = "SELECT manufacturers_name FROM ".TABLE_MANUFACTURERS." WHERE manufacturers_id = " . $row['v_manufacturers_id'] ; $result2 = tep_db_query($sql2); $row2 = tep_db_fetch_array($result2); $row['v_manufacturers_name'] = $row2['manufacturers_name']; } } // If you have other modules that need to be available, put them here // VJ product attribs begin if (isset($filelayout['v_attribute_options_id_1'])){ $languages = tep_get_languages(); $attribute_options_count = 1; foreach ($attribute_options_array as $attribute_options) { $row['v_attribute_options_id_' . $attribute_options_count] = $attribute_options['products_options_id']; for ($i=0, $n=sizeof($languages); $i<$n; $i++) { $lid = $languages[$i]['id']; $attribute_options_languages_query = "select products_options_name from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id = '" . (int)$attribute_options['products_options_id'] . "' and language_id = '" . (int)$lid . "'"; $attribute_options_languages_values = tep_db_query($attribute_options_languages_query); $attribute_options_languages = tep_db_fetch_array($attribute_options_languages_values); $row['v_attribute_options_name_' . $attribute_options_count . '_' . $lid] = $attribute_options_languages['products_options_name']; } $attribute_values_query = "select products_options_values_id from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_id = '" . (int)$attribute_options['products_options_id'] . "' order by products_options_values_id"; $attribute_values_values = tep_db_query($attribute_values_query); $attribute_values_count = 1; while ($attribute_values = tep_db_fetch_array($attribute_values_values)) { $row['v_attribute_values_id_' . $attribute_options_count . '_' . $attribute_values_count] = $attribute_values['products_options_values_id']; $attribute_values_price_query = "select options_values_price, price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . (int)$row['v_products_id'] . "' and options_id = '" . (int)$attribute_options['products_options_id'] . "' and options_values_id = '" . (int)$attribute_values['products_options_values_id'] . "'"; $attribute_values_price_values = tep_db_query($attribute_values_price_query); $attribute_values_price = tep_db_fetch_array($attribute_values_price_values); $row['v_attribute_values_price_' . $attribute_options_count . '_' . $attribute_values_count] = $attribute_values_price['price_prefix'] . $attribute_values_price['options_values_price']; //// attributes stock add start if ( $products_attributes_stock == true ) { $stock_attributes = $attribute_options['products_options_id'].'-'.$attribute_values['products_options_values_id']; $stock_quantity_query = tep_db_query("select products_stock_quantity from " . TABLE_PRODUCTS_STOCK . " where products_id = '" . (int)$row['v_products_id'] . "' and products_stock_attributes = '" . $stock_attributes . "'"); $stock_quantity = tep_db_fetch_array($stock_quantity_query); $row['v_attribute_values_stock_' . $attribute_options_count . '_' . $attribute_values_count] = $stock_quantity['products_stock_quantity']; } //// attributes stock add end for ($i=0, $n=sizeof($languages); $i<$n; $i++) { $lid = $languages[$i]['id']; $attribute_values_languages_query = "select products_options_values_name from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where products_options_values_id = '" . (int)$attribute_values['products_options_values_id'] . "' and language_id = '" . (int)$lid . "'"; $attribute_values_languages_values = tep_db_query($attribute_values_languages_query); $attribute_values_languages = tep_db_fetch_array($attribute_values_languages_values); $row['v_attribute_values_name_' . $attribute_options_count . '_' . $attribute_values_count . '_' . $lid] = $attribute_values_languages['products_options_values_name']; } $attribute_values_count++; } $attribute_options_count++; } } // VJ product attribs end // this is for the separate price per customer module if (isset($filelayout['v_customer_price_1'])){ $sql2 = "SELECT customers_group_price, customers_group_id FROM ".TABLE_PRODUCTS_GROUPS." WHERE products_id = " . $row['v_products_id'] . " ORDER BY customers_group_id" ; $result2 = tep_db_query($sql2); $ll = 1; $row2 = tep_db_fetch_array($result2); while( $row2 ){ $row['v_customer_group_id_' . $ll] = $row2['customers_group_id']; $row['v_customer_price_' . $ll] = $row2['customers_group_price']; $row2 = tep_db_fetch_array($result2); $ll++; } } if ($dltype == 'froogle'){ // For froogle, we check the specials prices for any applicable specials, and use that price // by grabbing the specials id descending, we always get the most recently added special price // I'm checking status because I think you can turn off specials $sql2 = "SELECT specials_new_products_price FROM ".TABLE_SPECIALS." WHERE products_id = " . $row['v_products_id'] . " and status = 1 and expires_date < CURRENT_TIMESTAMP ORDER BY specials_id DESC" ; $result2 = tep_db_query($sql2); $ll = 1; $row2 = tep_db_fetch_array($result2); if( $row2 ){ // reset the products price to our special price if there is one for this product $row['v_products_price'] = $row2['specials_new_products_price']; } } //elari - //We check the value of tax class and title instead of the id //Then we add the tax to price if $price_with_tax is set to 1 $row_tax_multiplier = tep_get_tax_class_rate($row['v_tax_class_id']); $row['v_tax_class_title'] = tep_get_tax_class_title($row['v_tax_class_id']); $row['v_products_price'] = round($row['v_products_price'] + ($price_with_tax * $row['v_products_price'] * $row_tax_multiplier / 100),2); // Now set the status to a word the user specd in the config vars if ( $row['v_status'] == '1' ){ $row['v_status'] = $active; } else { $row['v_status'] = $inactive; } // remove any bad things in the texts that could confuse EasyPopulate $therow = ''; foreach( $filelayout as $key => $value ){ //echo "The field was $key<br>"; $thetext = $row[$key]; // kill the carriage returns and tabs in the descriptions, they're killing me! $thetext = str_replace("\r",' ',$thetext); $thetext = str_replace("\n",' ',$thetext); $thetext = str_replace("\t",' ',$thetext); // and put the text into the output separated by tabs $therow .= $thetext . $separator; } // lop off the trailing tab, then append the end of row indicator $therow = substr($therow,0,strlen($therow)-1) . $endofrow; $filestring .= $therow; // grab the next row from the db $row = tep_db_fetch_array($result); } #$EXPORT_TIME=time(); $EXPORT_TIME = strftime('%Y%b%d-%H%I'); if ($dltype=="froogle"){ $EXPORT_TIME = "FroogleEP" . $EXPORT_TIME; } else { $EXPORT_TIME = "EP" . $EXPORT_TIME; } // now either stream it to them or put it in the temp directory if ($download == 'stream'){ //******************************* // STREAM FILE //******************************* header("Content-type: application/vnd.ms-excel"); header("Content-disposition: attachment; filename=$EXPORT_TIME.txt");// Changed if using SSL, helps prevent program delay/timeout (add to backup.php also) // header("Pragma: no-cache");if ($request_type== 'NONSSL'){header("Pragma: no-cache"); } else {header("Pragma: ");} header("Expires: 0"); echo $filestring; die(); } else { //******************************* // PUT FILE IN TEMP DIR //******************************* $tmpfname = DIR_FS_DOCUMENT_ROOT . $tempdir . "$EXPORT_TIME.txt"; //unlink($tmpfname); $fp = fopen( $tmpfname, "w+"); fwrite($fp, $filestring); fclose($fp); echo "You can get your file in the Tools/Files under " . $tempdir . "EP" . $EXPORT_TIME . ".txt"; die(); }} // *** END *** download section?> <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"><html <?php echo HTML_PARAMS; ?>><head><meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>"><title><?php echo TITLE; ?></title><link rel="stylesheet" type="text/css" href="includes/stylesheet.css"></head><body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF"><?php require(DIR_WS_INCLUDES . 'header.php'); ?> <table border="0" width="100%" cellspacing="2" cellpadding="2"><tr><td width="<?php echo BOX_WIDTH; ?>" valign="top" height="27"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1" class="columnLeft"><?php require(DIR_WS_INCLUDES . 'column_left.php');?></table></td><td class="pageHeading" valign="top"><?phpecho "Easy Populate $curver - Default Language : " . $epdlanguage_name . '(' . $epdlanguage_id .')';?> <p class="smallText"> <?php if ($localfile or (is_uploaded_file($usrfl) && $split==0)) { //******************************* //******************************* // UPLOAD AND INSERT FILE //******************************* //******************************* if ($usrfl){ // move the file to where we can work with it $file = tep_get_uploaded_file('usrfl'); if (is_uploaded_file($file['tmp_name'])) { tep_copy_uploaded_file($file, DIR_FS_DOCUMENT_ROOT . $tempdir); } echo "<p class=smallText>"; echo "File uploaded. <br>"; echo "Temporary filename: " . $usrfl . "<br>"; echo "User filename: " . $usrfl_name . "<br>"; echo "Size: " . $usrfl_size . "<br>"; // get the entire file into an array $readed = file(DIR_FS_DOCUMENT_ROOT . $tempdir . $usrfl_name); } if ($localfile){ // move the file to where we can work with it $file = tep_get_uploaded_file('usrfl'); $attribute_options_query = "select distinct products_options_id from " . TABLE_PRODUCTS_OPTIONS . " order by products_options_id"; $attribute_options_values = tep_db_query($attribute_options_query); $attribute_options_count = 1; //while ($attribute_options = tep_db_fetch_array($attribute_options_values)){ if (is_uploaded_file($file['tmp_name'])) { tep_copy_uploaded_file($file, DIR_FS_DOCUMENT_ROOT . $tempdir); } echo "<p class=smallText>"; echo "Filename: " . $localfile . "<br>"; // get the entire file into an array $readed = file(DIR_FS_DOCUMENT_ROOT . $tempdir . $localfile); } // now we string the entire thing together in case there were carriage returns in the data $newreaded = ""; foreach ($readed as $read){ $newreaded .= $read; } // now newreaded has the entire file together without the carriage returns. // if for some reason excel put qoutes around our EOREOR, remove them then split into rows $newreaded = str_replace('"EOREOR"', 'EOREOR', $newreaded); $readed = explode( $separator . 'EOREOR',$newreaded); // Now we'll populate the filelayout based on the header row. $theheaders_array = explode( $separator, $readed[0] ); // explode the first row, it will be our filelayout $lll = 0; $filelayout = array(); foreach( $theheaders_array as $header ){ $cleanheader = str_replace( '"', '', $header); // echo "Fileheader was $header<br><br><br>"; $filelayout[ $cleanheader ] = $lll++; // } unset($readed[0]); // we don't want to process the headers with the data // now we've got the array broken into parts by the expicit end-of-row marker. array_walk($readed, 'walk'); } if (is_uploaded_file($usrfl) && $split==1) { //******************************* //******************************* // UPLOAD AND SPLIT FILE //******************************* //******************************* // move the file to where we can work with it $file = tep_get_uploaded_file('usrfl'); //echo "Trying to move file..."; if (is_uploaded_file($file['tmp_name'])) { tep_copy_uploaded_file($file, DIR_FS_DOCUMENT_ROOT . $tempdir); } $infp = fopen(DIR_FS_DOCUMENT_ROOT . $tempdir . $usrfl_name, "r"); //toprow has the field headers $toprow = fgets($infp,32768); $filecount = 1; echo "Creating file EP_Split" . $filecount . ".txt ... "; $tmpfname = DIR_FS_DOCUMENT_ROOT . $tempdir . "EP_Split" . $filecount . ".txt"; $fp = fopen( $tmpfname, "w+"); fwrite($fp, $toprow); $linecount = 0; $line = fgets($infp,32768); while ($line){ // walking the entire file one row at a time // but a line is not necessarily a complete row, we need to split on rows that have "EOREOR" at the end $line = str_replace('"EOREOR"', 'EOREOR', $line); fwrite($fp, $line); if (strpos($line, 'EOREOR')){ // we found the end of a line of data, store it $linecount++; // increment our line counter if ($linecount >= $maxrecs){ echo "Added $linecount records and closing file... <Br>"; $linecount = 0; // reset our line counter // close the existing file and open another; fclose($fp); // increment filecount $filecount++; echo "Creating file EP_Split" . $filecount . ".txt ... "; $tmpfname = DIR_FS_DOCUMENT_ROOT . $tempdir . "EP_Split" . $filecount . ".txt"; //Open next file name $fp = fopen( $tmpfname, "w+"); fwrite($fp, $toprow); } } $line=fgets($infp,32768); } echo "Added $linecount records and closing file...<br><br> "; fclose($fp); fclose($infp); echo "You can download your split files in the Tools/Files under /catalog/temp/"; } ?> </p> <table width="75%" border="2"> <tr> <td width="75%"> <FORM ENCTYPE="multipart/form-data" ACTION="easypopulate.php?split=0" METHOD=POST> <p> <div align = "left"> <p><b>Upload EP File</b></p> <p> <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="100000000"> <p></p> <input name="usrfl" type="file" size="50"> <input type="submit" name="buttoninsert" value="Insert into db"> <br> </p> </div> </form> <FORM ENCTYPE="multipart/form-data" ACTION="easypopulate.php?split=1" METHOD=POST> <p> <div align = "left"> <p><b>Split EP File</b></p> <p> <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000000000"> <p></p> <input name="usrfl" type="file" size="50"> <input type="submit" name="buttonsplit" value="Split file"> <br> </p> </div> </form> <FORM ENCTYPE="multipart/form-data" ACTION="easypopulate.php" METHOD=POST> <p> <div align = "left"> <p><b>Import from Temp Dir (<? echo $tempdir; ?>)</b></p> <p class="smallText"> <INPUT TYPE="text" name="localfile" size="50"> <input type="submit" name="buttoninsert" value="Insert into db"> <br> </p> </div> </form> <p><b>Download EP and Froogle Files</b></p> <!-- Download file links - Add your custom fields here --> <a href="easypopulate.php?download=stream&dltype=full">Download <b>Complete</b> tab-delimited .txt file to edit</a><br> <a href="easypopulate.php?download=stream&dltype=priceqty">Download <b>Model/Price/Qty</b> tab-delimited .txt file to edit</a><br> <a href="easypopulate.php?download=stream&dltype=category">Download <b>Model/Category</b> tab-delimited .txt file to edit</a><br> <a href="easypopulate.php?download=stream&dltype=froogle">Download <b>Froogle</b> tab-delimited .txt file</a><br> <!-- VJ product attributes begin //--><?php if ($products_with_attributes == true) {?> <a href="easypopulate.php?download=stream&dltype=attrib">Download <b>Model/Attributes</b> tab-delimited .txt file</a><br><?php }?> <!-- VJ product attributes end //--> <p><b>Create EP and Froogle Files in Temp Dir (<? echo $tempdir; ?>)</b></p> <a href="easypopulate.php?download=tempfile&dltype=full">Create Complete tab-delimited .txt file in temp dir</a><br> <a href="easypopulate.php?download=tempfile&dltype=priceqty"">Create Model/Price/Qty tab-delimited .txt file in temp dir</a><br> <a href="easypopulate.php?download=tempfile&dltype=category">Create Model/Category tab-delimited .txt file in temp dir</a><br> <a href="easypopulate.php?download=tempfile&dltype=froogle">Create Froogle tab-delimited .txt file in temp dir</a><br> <!-- VJ product attributes begin //--> <a href="easypopulate.php?download=tempfile&dltype=attrib">Create Model/Attributes tab-delimited .txt file in temp dir</a><br> <!-- VJ product attributes end //--> </td> </tr> </table> </td> </tr></table> <?php require(DIR_WS_INCLUDES . 'footer.php'); ?> <p> </p><p> </p><p><br></p></body></html> <?php function ep_get_languages() { $languages_query = tep_db_query("select languages_id, code from " . TABLE_LANGUAGES . " order by sort_order"); // start array at one, the rest of the code expects it that way $ll =1; while ($ep_languages = tep_db_fetch_array($languages_query)) { //will be used to return language_id en language code to report in product_name_code instead of product_name_id $ep_languages_array[$ll++] = array( 'id' => $ep_languages['languages_id'], 'code' => $ep_languages['code'] ); } return $ep_languages_array;}; function tep_get_tax_class_rate($tax_class_id) { $tax_multiplier = 0; $tax_query = tep_db_query("select SUM(tax_rate) as tax_rate from " . TABLE_TAX_RATES . " WHERE tax_class_id = '" . $tax_class_id . "' GROUP BY tax_priority"); if (tep_db_num_rows($tax_query)) { while ($tax = tep_db_fetch_array($tax_query)) { $tax_multiplier += $tax['tax_rate']; } } return $tax_multiplier;}; function tep_get_tax_title_class_id($tax_class_title) { $classes_query = tep_db_query("select tax_class_id from " . TABLE_TAX_CLASS . " WHERE tax_class_title = '" . $tax_class_title . "'" ); $tax_class_array = tep_db_fetch_array($classes_query); $tax_class_id = $tax_class_array['tax_class_id']; return $tax_class_id;} function print_el( $item2 ) { echo " | " . substr(strip_tags($item2), 0, 10);}; function print_el1( $item2 ) { echo sprintf("| %'.4s ", substr(strip_tags($item2), 0, 80));};function ep_create_filelayout($dltype){ global $filelayout, $filelayout_count, $filelayout_sql, $langcode, $fileheaders, $max_categories; // depending on the type of the download the user wanted, create a file layout for it. $fieldmap = array(); // default to no mapping to change internal field names to external. switch( $dltype ){ case 'full': // The file layout is dynamically made depending on the number of languages $iii = 0; $filelayout = array( 'v_products_model' => $iii++, 'v_products_image' => $iii++, ); foreach ($langcode as $key => $lang){ $l_id = $lang['id']; // uncomment the head_title, head_desc, and head_keywords to use // Linda's Header Tag Controller 2.0 //echo $langcode['id'] . $langcode['code']; $filelayout = array_merge($filelayout , array( 'v_products_name_' . $l_id => $iii++, 'v_products_description_' . $l_id => $iii++, 'v_products_url_' . $l_id => $iii++, // 'v_products_head_title_tag_'.$l_id => $iii++, // 'v_products_head_desc_tag_'.$l_id => $iii++, // 'v_products_head_keywords_tag_'.$l_id => $iii++, )); } // uncomment the customer_price and customer_group to support multi-price per product contrib // VJ product attribs begin $header_array = array( 'v_products_price' => $iii++, 'v_products_weight' => $iii++, 'v_date_avail' => $iii++, 'v_date_added' => $iii++, 'v_products_quantity' => $iii++, ); $languages = tep_get_languages(); global $attribute_options_array; $attribute_options_count = 1; foreach ($attribute_options_array as $attribute_options_values) { $key1 = 'v_attribute_options_id_' . $attribute_options_count; $header_array[$key1] = $iii++; for ($i=0, $n=sizeof($languages); $i<$n; $i++) { $l_id = $languages[$i]['id']; $key2 = 'v_attribute_options_name_' . $attribute_options_count . '_' . $l_id; $header_array[$key2] = $iii++; } $attribute_values_query = "select products_options_values_id from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_id = '" . (int)$attribute_options_values['products_options_id'] . "' order by products_options_values_id"; $attribute_values_values = tep_db_query($attribute_values_query); $attribute_values_count = 1; while ($attribute_values = tep_db_fetch_array($attribute_values_values)) { $key3 = 'v_attribute_values_id_' . $attribute_options_count . '_' . $attribute_values_count; $header_array[$key3] = $iii++; for ($i=0, $n=sizeof($languages); $i<$n; $i++) { $l_id = $languages[$i]['id']; $key4 = 'v_attribute_values_name_' . $attribute_options_count . '_' . $attribute_values_count . '_' . $l_id; $header_array[$key4] = $iii++; } $key5 = 'v_attribute_values_price_' . $attribute_options_count . '_' . $attribute_values_count; $header_array[$key5] = $iii++; //// attributes stock add start if ( $products_attributes_stock == true ) { $key6 = 'v_attribute_values_stock_' . $attribute_options_count . '_' . $attribute_values_count; $header_array[$key6] = $iii++; } //// attributes stock add end $attribute_values_count++; } $attribute_options_count++; } $header_array['v_manufacturers_name'] = $iii++; $filelayout = array_merge($filelayout, $header_array); // VJ product attribs end // build the categories name section of the array based on the number of categores the user wants to have for($i=1;$i<$max_categories+1;$i++){ $filelayout = array_merge($filelayout, array('v_categories_name_' . $i => $iii++)); } $filelayout = array_merge($filelayout, array( 'v_tax_class_title' => $iii++, 'v_status' => $iii++, )); $filelayout_sql = "SELECT p.products_id as v_products_id, p.products_model as v_products_model, p.products_image as v_products_image, p.products_price as v_products_price, p.products_weight as v_products_weight, p.products_date_available as v_date_avail, p.products_date_added as v_date_added, p.products_tax_class_id as v_tax_class_id, p.products_quantity as v_products_quantity, p.manufacturers_id as v_manufacturers_id, subc.categories_id as v_categories_id, p.products_status as v_status FROM ".TABLE_PRODUCTS." as p, ".TABLE_CATEGORIES." as subc, ".TABLE_PRODUCTS_TO_CATEGORIES." as ptoc WHERE p.products_id = ptoc.products_id AND ptoc.categories_id = subc.categories_id "; break; case 'priceqty': $iii = 0; // uncomment the customer_price and customer_group to support multi-price per product contrib $filelayout = array( 'v_products_model' => $iii++, 'v_products_price' => $iii++, 'v_products_quantity' => $iii++, #'v_customer_price_1' => $iii++, #'v_customer_group_id_1' => $iii++, #'v_customer_price_2' => $iii++, #'v_customer_group_id_2' => $iii++, #'v_customer_price_3' => $iii++, #'v_customer_group_id_3' => $iii++, #'v_customer_price_4' => $iii++, #'v_customer_group_id_4' => $iii++, ); $filelayout_sql = "SELECT p.products_id as v_products_id, p.products_model as v_products_model, p.products_price as v_products_price, p.products_tax_class_id as v_tax_class_id, p.products_quantity as v_products_quantity FROM ".TABLE_PRODUCTS." as p "; break; case 'category': // The file layout is dynamically made depending on the number of languages $iii = 0; $filelayout = array( 'v_products_model' => $iii++, ); // build the categories name section of the array based on the number of categores the user wants to have for($i=1;$i<$max_categories+1;$i++){ $filelayout = array_merge($filelayout, array('v_categories_name_' . $i => $iii++)); } $filelayout_sql = "SELECT p.products_id as v_products_id, p.products_model as v_products_model, subc.categories_id as v_categories_id FROM ".TABLE_PRODUCTS." as p, ".TABLE_CATEGORIES." as subc, ".TABLE_PRODUCTS_TO_CATEGORIES." as ptoc WHERE p.products_id = ptoc.products_id AND ptoc.categories_id = subc.categories_id "; break; case 'froogle': // this is going to be a little interesting because we need // a way to map from internal names to external names // // Before it didn't matter, but with froogle needing particular headers, // The file layout is dynamically made depending on the number of languages $iii = 0; $filelayout = array( 'v_froogle_products_url_1' => $iii++, ); // // here we need to get the default language and put $l_id = 1; // dummy it in for now.// foreach ($langcode as $key => $lang){// $l_id = $lang['id']; $filelayout = array_merge($filelayout , array( 'v_froogle_products_name_' . $l_id => $iii++, 'v_froogle_products_description_' . $l_id => $iii++, ));// } $filelayout = array_merge($filelayout , array( 'v_products_price' => $iii++, 'v_products_fullpath_image' => $iii++, 'v_category_fullpath' => $iii++, 'v_froogle_offer_id' => $iii++, 'v_froogle_instock' => $iii++, 'v_froogle_ shipping' => $iii++, 'v_manufacturers_name' => $iii++, 'v_froogle_ upc' => $iii++, 'v_froogle_color' => $iii++, 'v_froogle_size' => $iii++, 'v_froogle_quantitylevel' => $iii++, 'v_froogle_product_id' => $iii++, 'v_froogle_manufacturer_id' => $iii++, 'v_froogle_exp_date' => $iii++, 'v_froogle_product_type' => $iii++, 'v_froogle_delete' => $iii++, 'v_froogle_currency' => $iii++, )); $iii=0; $fileheaders = array( 'product_url' => $iii++, 'name' => $iii++, 'description' => $iii++, 'price' => $iii++, 'image_url' => $iii++, 'category' => $iii++, 'offer_id' => $iii++, 'instock' => $iii++, 'shipping' => $iii++, 'brand' => $iii++, 'upc' => $iii++, 'color' => $iii++, 'size' => $iii++, 'quantity' => $iii++, 'product_id' => $iii++, 'manufacturer_id' => $iii++, 'exp_date' => $iii++, 'product_type' => $iii++, 'delete' => $iii++, 'currency' => $iii++, ); $filelayout_sql = "SELECT p.products_id as v_products_id, p.products_model as v_products_model, p.products_image as v_products_image, p.products_price as v_products_price, p.products_weight as v_products_weight, p.products_date_added as v_date_avail, p.products_tax_class_id as v_tax_class_id, p.products_quantity as v_products_quantity, p.manufacturers_id as v_manufacturers_id, subc.categories_id as v_categories_id FROM ".TABLE_PRODUCTS." as p, ".TABLE_CATEGORIES." as subc, ".TABLE_PRODUCTS_TO_CATEGORIES." as ptoc WHERE p.products_id = ptoc.products_id AND ptoc.categories_id = subc.categories_id "; break; // VJ product attributes begin case 'attrib': $iii = 0; $filelayout = array( 'v_products_model' => $iii++ ); $header_array = array(); $languages = tep_get_languages(); global $attribute_options_array; $attribute_options_count = 1; foreach ($attribute_options_array as $attribute_options_values) { $key1 = 'v_attribute_options_id_' . $attribute_options_count; $header_array[$key1] = $iii++; for ($i=0, $n=sizeof($languages); $i<$n; $i++) { $l_id = $languages[$i]['id']; $key2 = 'v_attribute_options_name_' . $attribute_options_count . '_' . $l_id; $header_array[$key2] = $iii++; } $attribute_values_query = "select products_options_values_id from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_id = '" . (int)$attribute_options_values['products_options_id'] . "' order by products_options_values_id"; $attribute_values_values = tep_db_query($attribute_values_query); $attribute_values_count = 1; while ($attribute_values = tep_db_fetch_array($attribute_values_values)) { $key3 = 'v_attribute_values_id_' . $attribute_options_count . '_' . $attribute_values_count; $header_array[$key3] = $iii++; for ($i=0, $n=sizeof($languages); $i<$n; $i++) { $l_id = $languages[$i]['id']; $key4 = 'v_attrib Quote Link to comment Share on other sites More sharing options...
RollingStone Posted February 2, 2006 Share Posted February 2, 2006 Warning: move_uploaded_file($DOCUMENT_ROOT/catalog/temp/EP2006Feb02-1301.txt): failed to open stream: No such file or directory in /home/motox/public_html/catalog/admin/easypopulate_functions.php on line 32 Is there supposted to be the $DOCUMENT_ROOT included in the path like that? Quote Link to comment Share on other sites More sharing options...
RollingStone Posted February 2, 2006 Share Posted February 2, 2006 Ok, fixed that error. I just deleted every instance of FS_DOCUMENT_ROOT in the easypopulate.php file. I am not sure if this is the "correct" way to do it, but it worked for me. For example if a snippet of the code was: $readed = file(DIR_FS_DOCUMENT_ROOT . $tempdir . $usrfl_name); I changed it to: $readed = file($tempdir . $usrfl_name); Hope this help anyone running into the same problem. If this creates more problems for you I am sorry! :D Quote Link to comment Share on other sites More sharing options...
mrgtec Posted February 2, 2006 Share Posted February 2, 2006 (edited) Hi, I am getting these errors at the bottom of my easypopulate.php file - Filename: /home/********/public_html/shop/temp/ Warning: file(/home/********/public_html/temp//home/********/public_html/shop/temp/): failed to open stream: No such file or directory in /home/********/public_html/admin/easypopulate.php on line 753 Warning: Invalid argument supplied for foreach() in /home/********/public_html/admin/easypopulate.php on line 758 Help. Thank you, Michael Edited February 2, 2006 by mrgtec Quote Michael Link to comment Share on other sites More sharing options...
mrgtec Posted February 2, 2006 Share Posted February 2, 2006 (edited) Now after I changed the code to your code RollingStone. I get these errors - Warning: file(temp/): failed to open stream: No such file or directory in /home/********/public_html/admin/easypopulate.php on line 753 Warning: Invalid argument supplied for foreach() in /home/********/public_html/admin/easypopulate.php on line 758 Thank you, Michael Edited February 2, 2006 by mrgtec Quote Michael Link to comment Share on other sites More sharing options...
RollingStone Posted February 2, 2006 Share Posted February 2, 2006 Sorry, it worked for me after fussing with the code for about 3 hours...keep messin with it. Now I am able to upload but the Quote Escape character conversion thing is not doing so well. I had it turned on as default and it replaced all of my quotes in my descrptions (html in my descriptions) and messed up the code. Then I turned it off so it didnt replace the quotes and I am getting the [tep stop] error when uploading and it just stops. Any ideas? Quote Link to comment Share on other sites More sharing options...
Guest Posted February 3, 2006 Share Posted February 3, 2006 yours should have been just /catalog/temp/ for your temp files, not using document_root in it Quote Link to comment Share on other sites More sharing options...
Guest Posted February 3, 2006 Share Posted February 3, 2006 your ititial problem is not having proper file permissions on the temp dir of 777, Now after I changed the code to your code RollingStone. I get these errors - Warning: file(temp/): failed to open stream: No such file or directory in /home/********/public_html/admin/easypopulate.php on line 753 Warning: Invalid argument supplied for foreach() in /home/********/public_html/admin/easypopulate.php on line 758 Thank you, Michael Quote Link to comment Share on other sites More sharing options...
mrgtec Posted February 3, 2006 Share Posted February 3, 2006 The directory, is chmoded to 777 tho? Thank you, Michael Quote Michael Link to comment Share on other sites More sharing options...
jhaustein Posted February 3, 2006 Share Posted February 3, 2006 hi im looking for the possibility to import the field categories_image with ep - greetings j?rg Quote Link to comment Share on other sites More sharing options...
mrgtec Posted February 4, 2006 Share Posted February 4, 2006 (edited) Anyone know the answer to my question? Thank you, Michael Edited February 4, 2006 by mrgtec Quote Michael Link to comment Share on other sites More sharing options...
Unchi Posted February 4, 2006 Share Posted February 4, 2006 HELP!! im using Easy populate 2.78-Ms2 and osCommerce 2.2 Milestone 2 Update 051113 i have a problem uplading similar items if i do them one by one it works fine but if i put all of the items in one TXT i get one that uploads then this File uploaded. Temporary filename: /tmp/phpK3zlm1 User filename: test.txt SIZE_EP20846 | AE-Port-05 | aport2.jpg | Accessport | The powerf | | 645 | 0 | | 02/04/06 0 | 0 | 1 | AP Maps | 1 | 55 | TDC Map | 2 | -45 | Cobb Maps | | Subaru | Legacy GT | Engine Man | --none-- | Active Updated | AE-Port- | AE-Port- | AE-Port- | this is the file im uploading v_products_model AE-Port-05-LGT aport2.jpg Accessport 05 LGT MT 645 0 02/04/06 0:22 0 1 AP Maps 1 55 TDC Map 2 -45 Cobb Maps Subaru Legacy GT Engine Management --none-- Active EOREOR AE-Port-05-LGT-AT aport2.jpg Accessport 05 LGT AT 645 0 02/04/06 0:23 0 1 AP Maps 1 55 TDC Map 2 -45 Cobb Maps Subaru Legacy GT Engine Management --none-- Active EOREOR AE-Port-06-LGT aport2.jpg Accessport 06 LGT MT 645 0 02/04/06 0:24 0 1 AP Maps 1 55 TDC Map 2 -45 Cobb Maps Subaru Legacy GT Engine Management --none-- Active EOREOR AE-Port-06-LGT-AT aport2.jpg Accessport 06 LGT AT 645 0 02/04/06 0:25 0 1 AP Maps 1 55 TDC Map 2 -45 Cobb Maps Subaru Legacy GT Engine Management --none-- Active EOREOR so for whatever reason when uploading it only reads the first 9-10 carachters? HELP! Quote Link to comment Share on other sites More sharing options...
Guest Posted February 4, 2006 Share Posted February 4, 2006 all i see for headers is v_products_model where is everything else? Quote Link to comment Share on other sites More sharing options...
Unchi Posted February 4, 2006 Share Posted February 4, 2006 ooops v_products_model v_products_image v_products_name_1 v_products_description_1 v_products_url_1 v_products_price v_products_weight v_date_avail v_date_added v_products_quantity v_attribute_options_id_1 v_attribute_options_name_1_1 v_attribute_values_id_1_1 v_attribute_values_price_1_1 v_attribute_values_name_1_1_1 v_attribute_values_id_1_2 v_attribute_values_price_1_2 v_attribute_values_name_1_2_1 v_manufacturers_name v_categories_name_1 v_categories_name_2 v_categories_name_3 v_tax_class_title v_status EOREOR AE-Port-05-LGT aport2.jpg Accessport 05 LGT MT 645 0 02/04/06 0:22 0 1 AP Maps 1 55 TDC Map 2 -45 Cobb Maps Subaru Legacy GT Engine Management --none-- Active EOREOR AE-Port-05-LGT-AT aport2.jpg Accessport 05 LGT AT 645 0 02/04/06 0:23 0 1 AP Maps 1 55 TDC Map 2 -45 Cobb Maps Subaru Legacy GT Engine Management --none-- Active EOREOR AE-Port-06-LGT aport2.jpg Accessport 06 LGT MT 645 0 02/04/06 0:24 0 1 AP Maps 1 55 TDC Map 2 -45 Cobb Maps Subaru Legacy GT Engine Management --none-- Active EOREOR AE-Port-06-LGT-AT aport2.jpg Accessport 06 LGT AT 645 0 02/04/06 0:25 0 1 AP Maps 1 55 TDC Map 2 -45 Cobb Maps Subaru Legacy GT Engine Management --none-- Active EOREOR Quote Link to comment Share on other sites More sharing options...
stevenrwoolley Posted February 5, 2006 Share Posted February 5, 2006 I have never had this error happen. When I go to upload a txt file this is the error: File uploaded. Temporary filename: /tmp/phpIqmYQd User filename: electrical.txt Size: 82521 | T-9006M | ELECTRONIC | ROSTRA | | ROSTRA | | 15 Pin Ma | 15 Pin Ma | 15 Pin Ma | Miscellane | 121.25 | 100.32 | 3 | 1000 | Taxable Go | Active | 1/1/2006 1 !New Product! 1048 - Column 'products_date_added' cannot be null INSERT INTO products ( products_retail_price, products_image, products_model, products_price, products_status, products_last_modified, products_date_added, products_date_available, products_tax_class_id, products_weight, products_quantity, manufacturers_id) VALUES ( '', 'T-9006M', '94.6415', '1', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, NULL, '1', '3', '1000', '121.25', '21') And when I try to download a text file this is the error: 1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM products as p, categories as subc, products_to SELECT p.products_id as v_products_id, p.products_model as v_products_model, p.products_image as v_products_image, p.products_price as v_products_price, p.products_weight as v_products_weight, p.products_date_available as v_date_avail, p.products_date_added as v_date_added, p.products_tax_class_id as v_tax_class_id, p.products_quantity as v_products_quantity, p.manufacturers_id as v_manufacturers_id, subc.categories_id as v_categories_id, p.products_status as v_status, p.products_retail_price as v_products_retail_price, FROM products as p, categories as subc, products_to_categories as ptoc WHERE p.products_id = ptoc.products_id AND ptoc.categories_id = subc.categories_id Anyone have any idea? Steven Quote Link to comment Share on other sites More sharing options...
Unchi Posted February 5, 2006 Share Posted February 5, 2006 OK i tried V2.74 as well and it seems that after uploading the first item it just skips all the rest any ideas? Quote Link to comment Share on other sites More sharing options...
Unchi Posted February 6, 2006 Share Posted February 6, 2006 (edited) OK i tried V2.74 as well and it seems that after uploading the first item it just skips all the rest any ideas? so i broke it right down to as easy as it can get this is the file i uploded v_products_model v_categories_name_1 v_status EOREOR a Test active EOREOR b Test active EOREOR and this iswhat i get in return File uploaded. Temporary filename: /tmp/phpr5lWI7 User filename: test2.txt Size: 98 | a | Test | active !New Product! | b Test a | the easypopulate stuff is all as it came from the download HELP! Edited February 6, 2006 by Unchi Quote Link to comment Share on other sites More sharing options...
zxedxz Posted February 6, 2006 Share Posted February 6, 2006 I'm having the same problem. Only the first record gets uploaded and the rest is ignored. What is the problem? Quote Link to comment Share on other sites More sharing options...
Unchi Posted February 6, 2006 Share Posted February 6, 2006 I'm having the same problem. Only the first record gets uploaded and the rest is ignored. What is the problem? GREAT its not just me!! ANYONE BUELLER? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.