要求,从ebay 下载的 csv文件,导入销售订单的系统,成为自己的订单.
首先,上传文件.
第二步,将上传的csv读入系统的一个变量(str_getcsv ,保命函数,本来导入好好地突然 有些导入进去 某些就错了,原来,csv用逗号分割,但是有些字段内,也有逗号,以至于有些位置就错位了.)
根据','来分割成一个数组
$str = file_get_contents($file);//将整个文件内容读入到一个字符串中
$str_encoding = mb_convert_encoding($str, 'UTF-8', 'ASCII');//转换字符集(编码)
$arr = explode("
", $str_encoding);//转换成数组
$goods_list=array();
$Disposable=true;//控制,第一行是逗号分隔,以后的数据,是引号 逗号 引号分隔
$Separator=",";//$Separator 分割符号
foreach ($arr as $k=>$row)
{
if (strlen($row)<1)//如果这一行不为空 继续程序 避免错误文件
{
continue;
}
$rowfen=trim($row);//去除多余的 制表位和空格符号
if (!empty($rowfen))
{
//$hang=explode($Separator,$rowfen);//每一行都分割成数组的元素
//2.0
$hang=str_getcsv($rowfen,',','""');//每一行都分割成数组的元素
foreach ($hang as $var){
$datax[]=trim($var,'"');
}
//一次执行,只有数据的第一行需要逗号分隔 ; 剩余数据需要用引号逗号引号分割
if ($Disposable){
$Separator="","";//变更,分割数组的标志
$Disposable=false;
}
$goods_list[]=$datax;
unset($datax);
}
}
unset($row);
第三步,我根据csv文件的规律,第二行,是每个字段的名,寻找我需要的字段,记录下$key值 ,
$mark['variation']=array_search("Variation Details",$goods_list[0]);//变量 $mark['variation']
$mark['number']=array_search("Item Number",$goods_list[0]);//产品号 $mark['number']
$mark['UserId']=array_search("User Id",$goods_list[0]);//User Id 买家名
开始循环并入数组,每一个数组是一条记录
完整后,写入数据库.
思路是很简单,
但是有很多别的问题,比如合并订单,去除重复订单,冻结库存,统计导入的订单都分布在哪些地址,