Lobotaman Posted February 7, 2005 Share Posted February 7, 2005 Two Quick Questions I have more COLUMNS (not rows) than are supported by MSExcel. As you may guess, this is related to the complexity of my attributes. Question #1: Is there a way to work with a file that is wider than MSExcel will accept? I look at others' osCommerce sites and they have these huge product descriptions, but when I upload my stuff in EasyPopulate, it truncates my text (in the description column). Question #2: Where/how do I make a change to accept longer product descriptions? Thanks, Lobo Quote Link to comment Share on other sites More sharing options...
Guest Posted February 7, 2005 Share Posted February 7, 2005 use quattro pro 12 or download certain attribute options and you can lower the count. quattro pro will go out over 18000 columns #2 is an excel limitation Quote Link to comment Share on other sites More sharing options...
Guest Posted February 8, 2005 Share Posted February 8, 2005 Resuming.... There is any contribution who permit completely populate products, for example Categories ( In Portuguese and English ) and Categories Images In my oppinion to be perfect the Easy Populate only need permit create Categories and Subcategories in all stores languages and must permit to set the categories images... Only that it's meassing, i search the web but until now i can's find any EP code to do that.... :'( Quote Link to comment Share on other sites More sharing options...
cYon Posted February 8, 2005 Share Posted February 8, 2005 Anyone came accross this error when trying to import? Warning: Illegal offset type in /home/httpd/vhosts/somedomain.com/httpdocs/shop/admin/easypopulate.php on line 699 Quote Link to comment Share on other sites More sharing options...
WhirlyGirl Posted February 8, 2005 Share Posted February 8, 2005 Hi, I have been searching high and low for an answer to these 2 problems I am having, so I hope somebody can help. I am using EP on a mac, and I have two problems with PHP server timeouts: 1. I can not download the "Complete Tab-delimited File" becuase there are 3,500 products and it's timing out before it downloads. I really need this to work so that when I update the catalogue I know I am working with the latest version. 2. I am unable to split files. When I try it creates only one file in the temp directory. My split value is set at 200 and I am trying to split more product rows than this. I think it is something to do with the fact I am using a mac (I read something about changing the end of the rows to "Unix" but wasn't clear if this meant replacing the EOREOR or adding it after). Which ever way I tried it didn't work anyway. I really hope somebody can help me - this is driving me mad! Thanks in advance, WhirlyGirl <_< Quote Link to comment Share on other sites More sharing options...
phpdistibutor Posted February 8, 2005 Share Posted February 8, 2005 Love Easy Populate! I have some products that are beneath several sub categories. When I import my easy populate it only gives me: v_categories_name, v_categories_name_2, v_categories_name_3. Even if I add a column such as v_categories_name_4, it still does not import correctly. It just starts at the top directory of the catalog and imputs the product into partial sub-category structure. The easy populate file does not export or import more sub-categories than 3. Please help if you know how. Quote Link to comment Share on other sites More sharing options...
yandus Posted February 10, 2005 Share Posted February 10, 2005 Hi everyone, I am having this problem with Easypopulate. Everything works fine with download/upload except 1 colum that downloads but does not upload/updates. This particular colum is 'v_product_cost' This colum is needed after installing the Margin Report contribution. I would like to update all my prices on a fly but since it won't upload... Please someone check my code below. I only modified everywhere you see 'v_product_cost' (you could search with ctrl+F. Thanks to anyone attempting even to look at the code below. (easypopulate.php) <?php // Current EP Version$curver = '2.74-MS2'; /* $Id: easypopulate.php,v 2.74 2004/05/03 VJ 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 = 'CALUWSAF.jpg';$default_image_product = 'No_Image.jpg';$default_image_category = 'CALUWSAF.jpg'; // 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 = 12; //**** 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 = true; // **** 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 = 7; // 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 = 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.stylishbydesign.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.stylishbydesign.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_cost', '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' ); //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 if ( $dltype=='froogle' ){ // set the things froogle wants at the top of the file $filestring .= "# html_escaped=YES\n"; $filestring .= "# updates_only=NO\n"; $filestring .= "# product_type=OTHER\n"; $filestring .= "# quoted=YES\n"; } $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']; 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 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);$row['v_products_cost'] = round($row['v_products_cost'] + ($price_with_tax * $row['v_products_cost'] * $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_cost' => $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++; $key4 = 'v_attribute_values_price_' . $attribute_options_count . '_' . $attribute_values_count; $header_array[$key4] = $iii++; for ($i=0, $n=sizeof($languages); $i<$n; $i++) { $l_id = $languages[$i]['id']; $key5 = 'v_attribute_values_name_' . $attribute_options_count . '_' . $attribute_values_count . '_' . $l_id; $header_array[$key5] = $iii++; } $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_cost as v_products_cost, 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_cost' => $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_cost as v_products_cost, 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_cost' => $iii++, 'v_products_fullpath_image' => $iii++, 'v_c Quote Link to comment Share on other sites More sharing options...
cYon Posted February 10, 2005 Share Posted February 10, 2005 Whenever I try to upload a EP file I get the following error: File uploaded. Temporary filename: /tmp/php8cTE6x User filename: Book2.txt Size: 6540 Warning: Illegal offset type in /home/httpd/vhosts/domain.com/subdomains/store/httpdocs/admin/easypopulate.php on line 691 Quote Link to comment Share on other sites More sharing options...
cYon Posted February 11, 2005 Share Posted February 11, 2005 Whenever I try to upload a EP file I get the following error:File uploaded. Temporary filename: /tmp/php8cTE6x User filename: Book2.txt Size: 6540 Warning: Illegal offset type in /home/httpd/vhosts/domain.com/subdomains/store/httpdocs/admin/easypopulate.php on line 691 <{POST_SNAPBACK}> Problem solved, turns out my PHP was version 4.3.10 and Zend/Ioncube was cauing the problem, upgraded Ioncube to the newest version and all is well. Quote Link to comment Share on other sites More sharing options...
yandus Posted February 11, 2005 Share Posted February 11, 2005 (edited) Hi everyone, I have been having a weird problem lately with easypopulate. I never had problem with till i installed a new field (exactly like it is mentionned in the contribution) Even when importing 1 line it says this: 1064 - You have an error in your SQL syntax near '' at line 3 INSERT INTO products ( products_cost, ` 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 ( '', '1213', '', '1', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, "0000-00-00 00:00:00", '', '', '1', '13.9' 'NULL') [TEP STOP] (Sometimes it says colum doesn't match with row.) The new field is 'products_cost' from the contribution margin reports. When putting a file with about 200 products it will upload correctly for about 100 products then this message above appears again. :'( My intuition says that the `-sign should not be before products_image. But I am not a php guy so could some php guy please help me figure out this problem? Is it possible that the controbution 'new fields in easy populate' has an syntax error? I have compared my code 3 times and I know for sure that I have copied 100% what is mentionned in the contribution. :( <{POST_SNAPBACK}> Edited February 11, 2005 by yandus Quote Link to comment Share on other sites More sharing options...
Guest Posted February 11, 2005 Share Posted February 11, 2005 as sooon as i saw that, yes, that is an error so remove the apostrophe from it. Quote Link to comment Share on other sites More sharing options...
Guest Posted February 11, 2005 Share Posted February 11, 2005 it is not a symptom of easypopulate but your server. try downloading in sections by product options (look in your ep file). your timeout for the scripts is probably very very low. also has nothing to do with your mac. of course, you could also break the sheet out into sections and then ftp to the temp directory Hi, I have been searching high and low for an answer to these 2 problems I am having, so I hope somebody can help. I am using EP on a mac, and I have two problems with PHP server timeouts: 1. I can not download the "Complete Tab-delimited File" becuase there are 3,500 products and it's timing out before it downloads. I really need this to work so that when I update the catalogue I know I am working with the latest version. 2. I am unable to split files. When I try it creates only one file in the temp directory. My split value is set at 200 and I am trying to split more product rows than this. I think it is something to do with the fact I am using a mac (I read something about changing the end of the rows to "Unix" but wasn't clear if this meant replacing the EOREOR or adding it after). Which ever way I tried it didn't work anyway. I really hope somebody can help me - this is driving me mad! Thanks in advance, WhirlyGirl <_< <{POST_SNAPBACK}> Quote Link to comment Share on other sites More sharing options...
ifalu Posted February 12, 2005 Share Posted February 12, 2005 Good Morning Can anyone help me, I did my usual search but haven't found a straight answer. Can I use easypopulate to update stock and prices. I tried that one time and gave me product duplicates Thanks Quote Link to comment Share on other sites More sharing options...
Guest Posted February 12, 2005 Share Posted February 12, 2005 duplicates most likely come from not having categories, and or categories with apostrophies Quote Link to comment Share on other sites More sharing options...
ifalu Posted February 12, 2005 Share Posted February 12, 2005 Thanks I am getting timed out in the download. I can't either create or download the file. I have 11,500 products. What should I do? Thanks Quote Link to comment Share on other sites More sharing options...
aspx_dev Posted February 14, 2005 Share Posted February 14, 2005 I am trying to use easy populate on a website with shared hosting, so have Globals turned off in the php.ini file and can do nothing about it. I have used the register globals contribution, but have found that easy populate does not then work. The buttons appear to become inactive. There is a section of the register globals contribution the assists a little bit, and enables the download button, which seems then to work fine. But the upload button still does nothing. I need to upload 800 products to my Dad's site. Please can anyone advise of the solution. Thanks Guys Quote Link to comment Share on other sites More sharing options...
Andrew J Posted February 14, 2005 Share Posted February 14, 2005 Lot of us have the "nothing uploaded with no errors" thing with the well known message: File uploaded. Temporary filename: /var/tmp/phpXe32zZ User filename: EP2005Feb14-1432.txt Size: 18145 I have this since my isp installed a new server with register globals off for a safety reason on a shared server. I went through 10 pages back in this topic. I have a temp dir with 777. I tried the $tempdir = "/temp/"; $tempdir2 = "/temp/"; with and without a leading slash. and of course the jb fix: // fix by jb 20040815 set the strings to http post/request, since they don't seem to work on the new server, with register globals=off...$dltype=$_REQUEST['dltype']; $download=$_REQUEST['download']; global $HTTP_POST_FILES; foreach( $HTTP_POST_FILES as $varname => $fileinfo ){ $GLOBALS[$varname] = $fileinfo["tmp_name"]; $GLOBALS[$varname.'_name'] = $fileinfo["name"]; } // end fix jb Here is the server info of my page: http://www.eware.hu/index_phpinfo.php I can post my easypopulate.php if needed. Please help me to solve this problem. :rolleyes: Mibble: please include my name in your answer if you referring to me. Thx Quote Link to comment Share on other sites More sharing options...
Lobotaman Posted February 14, 2005 Share Posted February 14, 2005 All, Just a quick inquiry regarding this contribution... My attributes are very likely going to push the database download OVER the 255 column limits of either Microsoft Access or Microsoft Excel. Are there any cost effective means of working around this? What is forcing the problem is the fact that I have one drop down selection box that has exactly 50 items in it. If it weren't for THAT, it would work fine! Every single one of my product_info.php pages (no exceptions) must have this drop down in it with the exact same choices. Can it be hard coded in the product_info.php page? There has GOT to be a better way that will still allow me to upload/download using EasyPop! Thanks (in advance) to anyone who can help. Lobo Quote Link to comment Share on other sites More sharing options...
ScaleCreep Posted February 16, 2005 Share Posted February 16, 2005 HELP! I installed EP but when I try and run it I get the following error: Warning: main(): SAFE MODE Restriction in effect. The script whose uid is 48 is not allowed to access ./includes/application_top.php owned by uid 533 in /home/virtual/site27/fst/var/www/html/oscommerce/admin/easypopulate.php on line 156 Warning: main(includes/application_top.php): failed to open stream: Success in /home/virtual/site27/fst/var/www/html/oscommerce/admin/easypopulate.php on line 156 Fatal error: main(): Failed opening required 'includes/application_top.php' (include_path='.:/php/includes:/usr/share/php') in /home/virtual/site27/fst/var/www/html/oscommerce/admin/easypopulate.php on line 156 Quote Link to comment Share on other sites More sharing options...
ScaleCreep Posted February 16, 2005 Share Posted February 16, 2005 What happened? I downloaded an EP file, edited it and tried to split the edited file. Now I suddenly get this mass of errors: Warning: move_uploaded_file(/home/scalecre/public_html/catalog//catalog/temp/EP2005Feb16-0101.txt): failed to open stream: No such file or directory in /home/scalecre/public_html/catalog/admin/easypopulate_functions.php on line 32 Warning: move_uploaded_file(): Unable to move '/tmp/php7aPN9u' to '/home/scalecre/public_html/catalog//catalog/temp/EP2005Feb16-0101.txt' in /home/scalecre/public_html/catalog/admin/easypopulate_functions.php on line 32 Warning: fopen(/home/scalecre/public_html/catalog//catalog/temp/EP2005Feb16-0101.txt): failed to open stream: No such file or directory in /home/scalecre/public_html/catalog/admin/easypopulate.php on line 719 Warning: fgets(): supplied argument is not a valid stream resource in /home/scalecre/public_html/catalog/admin/easypopulate.php on line 722 Creating file EP_Split1.txt ... Warning: fopen(/home/scalecre/public_html/catalog//catalog/temp/EP_Split1.txt): failed to open stream: No such file or directory in /home/scalecre/public_html/catalog/admin/easypopulate.php on line 728 Warning: fwrite(): supplied argument is not a valid stream resource in /home/scalecre/public_html/catalog/admin/easypopulate.php on line 729 Warning: fgets(): supplied argument is not a valid stream resource in /home/scalecre/public_html/catalog/admin/easypopulate.php on line 732 Added 0 records and closing file... Warning: fclose(): supplied argument is not a valid stream resource in /home/scalecre/public_html/catalog/admin/easypopulate.php on line 758 Warning: fclose(): supplied argument is not a valid stream resource in /home/scalecre/public_html/catalog/admin/easypopulate.php on line 759 You can download your split files in the Tools/Files under /catalog/temp/ Quote Link to comment Share on other sites More sharing options...
Guest Posted February 16, 2005 Share Posted February 16, 2005 Is there a way of making EasyPopulate more manageable? Currently, it's all very condensed and looks quite intimidating! Would the creation of new sheets ruin the CSV file? Also, I downloaded my catalogue and it lists all of the Product Attributes - for example - a whole column of "Iron Shafts" when some products don't have any attributes set. I presume I'd just delete it as appropriate... Quote Link to comment Share on other sites More sharing options...
Guest Posted February 16, 2005 Share Posted February 16, 2005 quattro pro 12 All, Just a quick inquiry regarding this contribution... My attributes are very likely going to push the database download OVER the 255 column limits of either Microsoft Access or Microsoft Excel. Are there any cost effective means of working around this? What is forcing the problem is the fact that I have one drop down selection box that has exactly 50 items in it. If it weren't for THAT, it would work fine! Every single one of my product_info.php pages (no exceptions) must have this drop down in it with the exact same choices. Can it be hard coded in the product_info.php page? There has GOT to be a better way that will still allow me to upload/download using EasyPop! Thanks (in advance) to anyone who can help. Lobo <{POST_SNAPBACK}> Quote Link to comment Share on other sites More sharing options...
Guest Posted February 16, 2005 Share Posted February 16, 2005 if safe mode is on you need to change hosts, or ask them to turn safe mode off. HELP! I installed EP but when I try and run it I get the following error: Warning: main(): SAFE MODE Restriction in effect. The script whose uid is 48 is not allowed to access ./includes/application_top.php owned by uid 533 in /home/virtual/site27/fst/var/www/html/oscommerce/admin/easypopulate.php on line 156 Warning: main(includes/application_top.php): failed to open stream: Success in /home/virtual/site27/fst/var/www/html/oscommerce/admin/easypopulate.php on line 156 Fatal error: main(): Failed opening required 'includes/application_top.php' (include_path='.:/php/includes:/usr/share/php') in /home/virtual/site27/fst/var/www/html/oscommerce/admin/easypopulate.php on line 156 <{POST_SNAPBACK}> Quote Link to comment Share on other sites More sharing options...
Guest Posted February 16, 2005 Share Posted February 16, 2005 dont delete. easypopulate doesnt know whether you are going to turn products attributes on for a certain product or not, thus they are all presented. it is not unmanageable, i have some sheets well over 20000 lines long and all the way across. Is there a way of making EasyPopulate more manageable? Currently, it's all very condensed and looks quite intimidating! Would the creation of new sheets ruin the CSV file? Also, I downloaded my catalogue and it lists all of the Product Attributes - for example - a whole column of "Iron Shafts" when some products don't have any attributes set. I presume I'd just delete it as appropriate... <{POST_SNAPBACK}> Quote Link to comment Share on other sites More sharing options...
Guest Posted February 16, 2005 Share Posted February 16, 2005 dont delete. easypopulate doesnt know whether you are going to turn products attributes on for a certain product or not, thus they are all presented. it is not unmanageable, i have some sheets well over 20000 lines long and all the way across. So does this mean that to assign product attributes to different products I have to use the Product Attributes page online? Perhaps you misunderstood me - I wasn't going to delete the columns - instead, I was going to delete the value in the field and enter in a relevant value. I think I'll have to have a play around with it on my local server. I'm not saying that it is unmanageable - but that it could be more manageable - less cluttered. I'm fine with it personally, but if I was to give such a sheet to someone who was not brilliant with spreadsheets then they might struggle. Therefore, I was saying would seperating the data into different sheets ruin the structure? 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.