Php 如何在Prestashop中实现导出和导入订单数据?
我需要将客户订单的所有数据从旧的Prestashop 1.3迁移到新的Prestashop 1.6 我是一名开发人员,这对我来说不是一个小问题,我没有找到任何模块或教程来管理这个问题。presta mySQL中的订单数据在十几个表中分开,版本1.3和1.6之间的差异导致了额外的兼容性问题。数据量并不是一个小商店的问题 我想知道,你们是如何处理这样的问题的 我的想法不多,但没有一个听起来足够好: 将数据导出到csv,将compabile设置为1.6,然后通过php脚本导入或从csv导入mysql。 制作php脚本,从数据库中读取旧数据,使数据兼容,然后插入到新的数据库中。Php 如何在Prestashop中实现导出和导入订单数据?,php,prestashop,prestashop-1.6,Php,Prestashop,Prestashop 1.6,我需要将客户订单的所有数据从旧的Prestashop 1.3迁移到新的Prestashop 1.6 我是一名开发人员,这对我来说不是一个小问题,我没有找到任何模块或教程来管理这个问题。presta mySQL中的订单数据在十几个表中分开,版本1.3和1.6之间的差异导致了额外的兼容性问题。数据量并不是一个小商店的问题 我想知道,你们是如何处理这样的问题的 我的想法不多,但没有一个听起来足够好: 将数据导出到csv,将compabile设置为1.6,然后通过php脚本导入或从csv导入mysql。
这两个想法都非常耗时,也许有人有更好的想法/链接/解决方案?我还没有看到这样一个免费模块来导入客户订单或。。 我从一个不熟悉的cms向presta shop 1.6导入了我自己的类别和产品 在presta 1.6 back office中,如果您创建了要导入的实体,则它在右侧有一个菜单,其中说明了您生成的csv文件中应包含哪些字段以进行导入。 如果您的csv文件不匹配,您应该使用php等语言获取csv文件,然后解析该文件并生成相应的csv文件以导入到prestashop中 我认为用csv文件导入数据是比较容易的工作。
上传导入presta的csv文件后,请询问csv文件中的每一列与presta系统的哪一列相关。此php脚本有4个函数 getHeader函数将CSV文件的头作为数组获取。 getCategories以数组形式再次从CSV文件中获取类别名称。 getRecords函数以二维数组的形式获取所有记录。
好的,谢谢,我通过在2个prestashop数据库之间直接自定义导入/导出脚本解决了我的问题。你能发布你的脚本吗?
<?php
function getHeader()
{
$filename = "past_cms_csv_file.csv";
$contents = file_get_contents($filename);
$records = explode('EOREOR', $contents);
$header = explode(';', $records[0]);
array_splice($header, count($header)-1, 1);
return $header;
}
function getCategories()
{
$header = getHeader();
$index = array_search('v_categories_name_1_4', $header);
$filename = "past_cms_csv_file.csv";
$contents = file_get_contents($filename);
$records = explode('EOREOR', $contents);
$cats = array();
for($i=1;$i<count($records);$i++)
{
$record = $records[$i];
$items = explode('";"', $record);
array_push($cats,$items[$index] );
}
$newCats = array_unique($cats);
$mycats = [];
foreach($newCats as $cat)
{
array_push($mycats, $cat);
}
array_splice($mycats, count($mycats)-1 , 1);
return $mycats;
}
function getRecords()
{
$filename = "past_cms_csv_file.csv";
$contents = file_get_contents($filename);
$records = explode('EOREOR', $contents);
$header = getHeader();
$index = array_search('v_categories_name_1_4', $header);
$cats = getCategories();
for($i=1;$i<count($records);$i++)
{
$record = $records[$i];
$items = explode('";"', $record);
array_push($cats,$items[$index] );
for($j=0;$j<count($items);$j++)
{
$results[$i][$j] = $items[$j];
}
}
return $results;
}
function makecsvfile($filename , $start_index)
{
$header = getHeader();
$results = getRecords();
$active_index = array_search('v_status', $header);
$name_index = array_search('v_products_name_4', $header);
$desc_index = array_search('v_products_description_4', $header);
$meta_title_index = array_search('v_products_meta_title_4', $header);
$meta_keywords_index = array_search('v_products_meta_keywords_4', $header);
$meta_desc_index = array_search('v_products_meta_description_4', $header);
$price_index = array_search('v_products_price', $header);
$quantity_index = array_search('v_products_quantity', $header);
$category_index = array_search('v_categories_name_1_4', $header);
$subcategory_index = array_search('v_categories_name_2_4', $header);
$string = '';
$string .= '"ID";"Active";"Name";"Description";"Meta_title";"Meta_keywords";"Meta_Description";"Categories";"Quantity";"tax_rule";"Price";"Image URLs"';
$string .= PHP_EOL;
for($i=1;$i<count($results);$i++)
{
if( $results[$i][$category_index] != 'Schoenen en sokjes' &&
$results[$i][$category_index] != 'Accessoires meisjes' &&
$results[$i][$category_index] != 'Accessoires jongens' &&
$results[$i][$category_index] != 'Communie -en doopkleding' &&
$results[$i][$category_index] != 'Aanbiedingen'
)
{
$string .= '"';
$string .= $i+$start_index;
$string .= '";"';
if($results[$i][$active_index] == 'Active')
$string .= 1;
else if($results[$i][$active_index] == 'Inactive')
$string .= 0;
$string .= '";"';
$string .= $results[$i][$name_index];
$string .= '";"';
$string .= $results[$i][$desc_index];
$string .= '";"';
$string .= $results[$i][$meta_title_index];
$string .= '";"';
if(strlen($results[$i][$meta_keywords_index]) < 255)
$string .= $results[$i][$meta_keywords_index];
else
{
$meta_key_words = substr($results[$i][$meta_keywords_index],0,254);
$last_comma_pos = strrpos($meta_key_words , ',');
$meta_key_words = substr($meta_key_words,0,$last_comma_pos);
$string .= $meta_key_words;
}
$string .= '";"';
$string .= $results[$i][$meta_desc_index];
$string .= '";"';
if($results[$i][$subcategory_index] == '' &&
$results[$i][$category_index] != 'Tiara\'s & Kroontjes' &&
$results[$i][$category_index] != 'Feest / Gala jurken' &&
$results[$i][$category_index] != 'Ringkussens' &&
$results[$i][$category_index] != 'Bolero\'s en Jasjes')
$string .= $results[$i][$category_index];
else if($results[$i][$category_index] == 'Tiara\'s & Kroontjes')
$string .= 'Kroontjes, diademen & tiara\'s';
else if($results[$i][$category_index] == 'Feest / Gala jurken')
$string .= 'Feest- en galajurken';
else if($results[$i][$category_index] == 'Ringkussens')
$string .= 'kado kussens';
else if($results[$i][$category_index] == 'Bolero\'s en Jasjes')
$string .= 'Bolero’s & jasjes';
else
$string .= $results[$i][$subcategory_index];
$string .= '";"';
$string .= $results[$i][$quantity_index];
$string .= '";"';
$string .= 53;
$string .= '";"';
$string .= $results[$i][$price_index];
$string .= '";"';
$string .= 'http://example.com/path/to/myimage.jpg';
$string .= '"';
$string .= PHP_EOL;
}
}
file_put_contents($filename, $string);
}
makecsvfile('products.csv' , 100);
?>