当前位置:首页 > PHP教程 > php高级应用 > 列表

php基于Fleaphp框架实现cvs数据导入MySQL的方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-11 12:28:55 浏览: 评论:0 

这篇文章主要介绍了php基于Fleaphp框架实现cvs数据导入MySQL的方法,涉及PHP基于Fleaphp框架针对cvs文件的读取及数据库操作相关技巧,需要的朋友可以参考下

本文实例讲述了php基于Fleaphp框架实现cvs数据导入MySQL的方法,分享给大家供大家参考,具体如下:

  1. <?php 
  2. /* 
  3.  * To change this template, choose Tools | Templates 
  4.  * and open the template in the editor. 
  5.  */ 
  6. class Controller_KaoqinUpload extends FLEA_Controller_Action { 
  7.  var $uploaddir = "./uploadfiles/"
  8.  public function _construct(){ 
  9.   parent::__construct(); 
  10.  } 
  11. // $patch="http://localhost/uploadfiles";/ 
  12.  function actionIndex() { 
  13.   $smarty =& $this->_getView(); 
  14.   $smarty->display("kaoqin_upload.html"); 
  15.  } 
  16.  //显示错误 
  17.  private function showErro(){ 
  18.  error_reporting(E_ALL); 
  19.   ini_set("display_errors","On"); 
  20.  } 
  21.  //判断日期 
  22.  private function isDate($file_name
  23.  { 
  24.   $filename = explode('.',$file_name); 
  25.  $real_name = $filename[count($filename)-2];//得到文件名 
  26.   $format="Y-m-d";//时间格式类型 
  27.   $unixTime=strtotime($real_name); 
  28.   $checkDatedate($format,$unixTime); 
  29.    if($real_name==$checkDate
  30.     return ture; 
  31.    else 
  32.     return false; 
  33.  } 
  34.  public function actionSave(){ 
  35. // $this->showErro(); 
  36.  $upload_file=$_FILES['upload_file']; 
  37.  $file_name = $_FILES['upload_file']['name']; 
  38.  $file_tmp_name = $_FILES['upload_file']['tmp_name']; 
  39.  $file_type = $_FILES['upload_file']['type']; 
  40.  $file_size = $_FILES['upload_file']['size']; 
  41.  $file_error = $_FILES['upload_file']['error']; 
  42.   //检查文件 
  43.   if ($file_name==null) 
  44.    { 
  45.     echo "文件选择出错,请检查上传文件。"
  46.     exit
  47.    } 
  48.   //判断文件大小 
  49.   if ($file_size >=10241024 ) 
  50.    { 
  51.     $file_size = round($file_size/ 1048576 * 100) / 100 . ' mb'
  52.     print_r("上传的文件大小为"."$file_size"); 
  53.   echo "系统只允许上传大小为10M以内的文件。"
  54.   exit
  55.    } 
  56.   //$extention_name = end(explode('.',$_FILES["upload_file"]['name']));//获取扩展名 
  57.   $extention_name=preg_replace('/.*/.(.*[^/.].*)*/iU','//1',$file_name);//获得文件的扩展名 
  58.   //检查文件类型 
  59.   if($file_type!="application/vnd.ms-excel"&& $extention_name!="csv"
  60.    { 
  61.   echo "您上传的文件类型: .",$extention_name,"<br>"
  62.   print_r("系统允许文件类型: .csv"); 
  63.   exit
  64.    } 
  65.   if(file_exists($this->uploaddir.$_FILES['upload_file']['name'])) 
  66.   { 
  67.     print("备份目录同名数据存在"); //文件存在 
  68.     exit
  69.   } 
  70.   if($this->isDate($file_name)==FALSE) 
  71.   { 
  72.     print("文件命名格式不对,正确格式。例:2010-10-28.csv");   //文件存在 
  73.     exit
  74.   } 
  75.   // var_dump(file_exists($this->uploaddir.$_FILES['upload_file']['name'])); //test返回 
  76.   print_r("原始考勤数据文件:".$_FILES['upload_file']['name']."<br>"."<br>"); 
  77.   //数据导入 
  78. //  $fp = fopen($_FILES['upload_file']['tmp_name'], "r"); 
  79. //  $data = fgets($fp, 1000); 
  80. //  $date=setOutputEncoding('utf-8'); 
  81.   $data=file($_FILES['upload_file']['tmp_name']); 
  82.  $attendance =& get_singleton('Model_attendance'); 
  83.   //print_r($data); 
  84.   //数据导入处理 
  85.   for($i=1;$i<count($data)-1;$i++) { 
  86.    $a=explode(";",$data[$i]); 
  87.    //编码格式转换 
  88.    $a[0]=iconv("gb2312""utf-8"$a[0]); 
  89.    $a[1]=iconv("gb2312""utf-8"$a[1]); 
  90.    $a[2]=iconv("gb2312""utf-8"$a[2]); 
  91.    $a[4]=iconv("gb2312""utf-8"$a[4]); 
  92.    $a[5]=iconv("gb2312""utf-8"$a[5]); 
  93.    // print_r($a); 
  94.    $t=array(); 
  95.    $t["ATTENDANCE_FINGERPRINT_ID"]=intval(trim($a[0],"/"")); 
  96.    $t["ATTENDANCE_USER_NAME"]=trim($a[1],"/""); 
  97.    $t["ATTENDANCE_DATE"]=trim($a[2],"/""); 
  98.    // $t["ATTENDANCE_DIVISIONS"]=trim($a[3],"/"");//表中字段ATTENDANCE_DIVISIONS在表中删除 
  99.    $t["ATTENDANCE_GO_WORK"]=trim($a[4],"/""); 
  100.    $t["ATTENDANCE_AFTER_WORK"]=trim($a[5],"/""); 
  101.    //判断打卡情况 
  102.    $go_work = trim($a[4],"/"");//上班时间 
  103.    $after_work = trim($a[5],"/"");//下班时间 
  104.  //   print_r(var_dump($go_work)); 
  105.    // exit(); 
  106.    if(strlen($go_work)==0 && strlen($after_work)!=0) 
  107.     { 
  108.      $t["ATTENDANCE_STATUS"]= "1"//"1"代表正常出勤 
  109.     } 
  110.    if(strlen($go_work)!=0 && strlen($after_work)==0) 
  111.     { 
  112.       $t["ATTENDANCE_STATUS"] ="2"//"2"代表上班为打卡 
  113.     } 
  114.    if(strlen($go_work)!=0 && strlen($after_work)!=0) 
  115.     { 
  116.      $t["ATTENDANCE_STATUS"] ="3"//"3"代表下班未打 
  117.     } 
  118.    if(strlen($go_work)==0 && strlen($after_work)==0) 
  119.     { 
  120.      $t["ATTENDANCE_STATUS"]= "4"//"4"代表未出勤 
  121.     } 
  122.    //按考勤规则重置正常上下班时间 
  123.     if(strlen($go_work) == 0 && strlen($after_work) == 0) 
  124.    { 
  125.     $go_work = "24:00"
  126.     $after_work = "00:00";//未出勤按子时计算 
  127.    } 
  128.    if(strlen($go_work) == 0 && strlen($after_work)!=0) 
  129.    { 
  130.     $t["ATTENDANCE_GO_WORK"] = $go_work = "08:35";//上班未打卡按08:35开始计算 
  131.    } 
  132.    if(strlen($go_work) != 0 && strlen($after_work) == 0) 
  133.    { 
  134.     $t["ATTENDANCE_AFTER_WORK"] = $after_work = "17:30"//下班为打卡按17:30计算 
  135.    } 
  136.    //计算在勤时间 
  137.    $minutes;//保存分钟段 
  138.    $hours;//保存小时段 
  139.    $real_time1 = explode(":",$go_work);//上班时间分割数组 
  140.    $real_time2 = explode(":",$after_work);//下班时间分割数组 
  141.    //开始处理在勤时间 
  142.    $minutes=intval(intval($real_time2[1])-intval($real_time1[1])); 
  143.     if($minutes<0) 
  144.      { 
  145.      $hours=intval(intval(($real_time2[0])-1)-intval($real_time1[0])); 
  146.      if($hours<=0) 
  147.      { 
  148.       $hours=intval((intval($real_time2[0])-1)-intval($real_time1[0])+24); 
  149.       } 
  150.      $minutes=intval(intval($real_time2[1])+60-intval($real_time1[1])); 
  151.      $attendance_time = sprintf("%02d"$hours).":".sprintf("%02d"$minutes); 
  152.      } 
  153.     else 
  154.      { 
  155.      $hours =intval(intval($real_time2[0])-intval($real_time1[0])); 
  156.      if($hours<=0) 
  157.      { 
  158.       $hours = intval(intval($real_time2[0])-intval($real_time1[0])+24); 
  159.      } 
  160.      if($minutes>=10 && $minutes<60) //开始选用strlen判断字符长度补齐位,现在直接用格式化输出,原结构不变。 
  161.      {$attendance_time = sprintf("%02d"$hours).":".sprintf("%02d"$minutes);} 
  162.      else 
  163.      { 
  164.       $attendance_time = sprintf("%02d"$hours).":".sprintf("%02d"$minutes); 
  165.      } 
  166.      } 
  167.     // 更正未出勤时间情况,去除午休时间的在勤时间 
  168.     if($attendance_time=="-1:00"
  169.     { 
  170.      $attendance_time="00:00"
  171.     } 
  172.    $t["ATTENDANCE_TIME"]=$attendance_time;//保存在勤时间 
  173.    $attendance->create($t);//存入数据库 
  174.   } 
  175. //  print_r("数据导入成功")."<br>"; 
  176.   //原始csv文件数据备份,文件保存在系统的./uploadfiles/文件夹下 
  177.   switch ($file_error
  178.   { 
  179.   case 0: 
  180.    Echo "考勤数据更新成功"."<br>"break
  181.   case 1: 
  182.    Echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值."."<br>"break
  183.   case 2: 
  184.    Echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。"."<br>"break
  185.   case 3: 
  186.    Echo "文件只有部分被上传"."<br>";break
  187.   case 4: 
  188.    Echo "没有文件被上传"."<br>";break
  189.   case 6: 
  190.    Echo "找不到临时文件夹"."<br>";break
  191.   case 7: 
  192.    Echo "文件写入失败"."<br>";break
  193.   } 
  194.   echo "<br>"
  195. //  exit(); 
  196. //  $absolutdir=$_SERVER[DOCUMENT_ROOT ].$uploaddir.$file_name; 
  197.   if ($_FILES["upload_file"]['error']==0) 
  198.   { //echo $file_tmp_name; 
  199.    //echo $this->uploaddir.$_FILES['upload_file']['name']; 
  200.    //$name=time(); 
  201.    if( move_uploaded_file($file_tmp_name$this->uploaddir.$_FILES['upload_file']['name'])) 
  202.     { 
  203.     echo '原始数据备份成功'
  204.      } 
  205.    else 
  206.     { 
  207.     echo '备份原始数据失败'
  208.     } 
  209.   } 
  210.  } 
  211. ?>

Tags: Fleaphp cvs数据导入MySQL

分享到: