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


Posted in PHP onFebruary 23, 2016

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

<?php
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
class Controller_KaoqinUpload extends FLEA_Controller_Action {
 var $uploaddir = "./uploadfiles/";
 public function _construct(){
  parent::__construct();
 }
// $patch="http://localhost/uploadfiles";/
 function actionIndex() {
  $smarty =& $this->_getView();
  $smarty->display("kaoqin_upload.html");
 }
 //显示错误
 private function showErro(){
 error_reporting(E_ALL);
  ini_set("display_errors","On");
 }
 //判断日期
 private function isDate($file_name)
 {
  $filename = explode('.',$file_name);
 $real_name = $filename[count($filename)-2];//得到文件名
  $format="Y-m-d";//时间格式类型
  $unixTime=strtotime($real_name);
  $checkDate= date($format,$unixTime);
   if($real_name==$checkDate)
    return ture;
   else
    return false;
 }
 public function actionSave(){
// $this->showErro();
 $upload_file=$_FILES['upload_file'];
 $file_name = $_FILES['upload_file']['name'];
 $file_tmp_name = $_FILES['upload_file']['tmp_name'];
 $file_type = $_FILES['upload_file']['type'];
 $file_size = $_FILES['upload_file']['size'];
 $file_error = $_FILES['upload_file']['error'];
  //检查文件
  if ($file_name==null)
   {
    echo "文件选择出错,请检查上传文件。";
    exit;
   }
  //判断文件大小
  if ($file_size >=10241024 )
   {
    $file_size = round($file_size/ 1048576 * 100) / 100 . ' mb';
    print_r("上传的文件大小为"."$file_size");
  echo "系统只允许上传大小为10M以内的文件。";
  exit;
   }
  //$extention_name = end(explode('.',$_FILES["upload_file"]['name']));//获取扩展名
  $extention_name=preg_replace('/.*/.(.*[^/.].*)*/iU','//1',$file_name);//获得文件的扩展名
  //检查文件类型
  if($file_type!="application/vnd.ms-excel"&& $extention_name!="csv")
   {
  echo "您上传的文件类型: .",$extention_name,"<br>";
  print_r("系统允许文件类型: .csv");
  exit;
   }
  if(file_exists($this->uploaddir.$_FILES['upload_file']['name']))
  {
    print("备份目录同名数据存在"); //文件存在
    exit;
  }
  if($this->isDate($file_name)==FALSE)
  {
    print("文件命名格式不对,正确格式。例:2010-10-28.csv");   //文件存在
    exit;
  }
  // var_dump(file_exists($this->uploaddir.$_FILES['upload_file']['name'])); //test返回
  print_r("原始考勤数据文件:".$_FILES['upload_file']['name']."<br>"."<br>");
  //数据导入
//  $fp = fopen($_FILES['upload_file']['tmp_name'], "r");
//  $data = fgets($fp, 1000);
//  $date=setOutputEncoding('utf-8');
  $data=file($_FILES['upload_file']['tmp_name']);
 $attendance =& get_singleton('Model_attendance');
  //print_r($data);
  //数据导入处理
  for($i=1;$i<count($data)-1;$i++) {
   $a=explode(";",$data[$i]);
   //编码格式转换
   $a[0]=iconv("gb2312", "utf-8", $a[0]);
   $a[1]=iconv("gb2312", "utf-8", $a[1]);
   $a[2]=iconv("gb2312", "utf-8", $a[2]);
   $a[4]=iconv("gb2312", "utf-8", $a[4]);
   $a[5]=iconv("gb2312", "utf-8", $a[5]);
   // print_r($a);
   $t=array();
   $t["ATTENDANCE_FINGERPRINT_ID"]=intval(trim($a[0],"/""));
   $t["ATTENDANCE_USER_NAME"]=trim($a[1],"/"");
   $t["ATTENDANCE_DATE"]=trim($a[2],"/"");
   // $t["ATTENDANCE_DIVISIONS"]=trim($a[3],"/"");//表中字段ATTENDANCE_DIVISIONS在表中删除
   $t["ATTENDANCE_GO_WORK"]=trim($a[4],"/"");
   $t["ATTENDANCE_AFTER_WORK"]=trim($a[5],"/"");
   //判断打卡情况
   $go_work = trim($a[4],"/"");//上班时间
   $after_work = trim($a[5],"/"");//下班时间
 //   print_r(var_dump($go_work));
   // exit();
   if(strlen($go_work)==0 && strlen($after_work)!=0)
    {
     $t["ATTENDANCE_STATUS"]= "1"; //"1"代表正常出勤
    }
   if(strlen($go_work)!=0 && strlen($after_work)==0)
    {
      $t["ATTENDANCE_STATUS"] ="2"; //"2"代表上班为打卡
    }
   if(strlen($go_work)!=0 && strlen($after_work)!=0)
    {
     $t["ATTENDANCE_STATUS"] ="3"; //"3"代表下班未打
    }
   if(strlen($go_work)==0 && strlen($after_work)==0)
    {
     $t["ATTENDANCE_STATUS"]= "4"; //"4"代表未出勤
    }
   //按考勤规则重置正常上下班时间
    if(strlen($go_work) == 0 && strlen($after_work) == 0)
   {
    $go_work = "24:00";
    $after_work = "00:00";//未出勤按子时计算
   }
   if(strlen($go_work) == 0 && strlen($after_work)!=0)
   {
    $t["ATTENDANCE_GO_WORK"] = $go_work = "08:35";//上班未打卡按08:35开始计算
   }
   if(strlen($go_work) != 0 && strlen($after_work) == 0)
   {
    $t["ATTENDANCE_AFTER_WORK"] = $after_work = "17:30"; //下班为打卡按17:30计算
   }
   //计算在勤时间
   $minutes;//保存分钟段
   $hours;//保存小时段
   $real_time1 = explode(":",$go_work);//上班时间分割数组
   $real_time2 = explode(":",$after_work);//下班时间分割数组
   //开始处理在勤时间
   $minutes=intval(intval($real_time2[1])-intval($real_time1[1]));
    if($minutes<0)
     {
     $hours=intval(intval(($real_time2[0])-1)-intval($real_time1[0]));
     if($hours<=0)
     {
      $hours=intval((intval($real_time2[0])-1)-intval($real_time1[0])+24);
      }
     $minutes=intval(intval($real_time2[1])+60-intval($real_time1[1]));
     $attendance_time = sprintf("%02d", $hours).":".sprintf("%02d", $minutes);
     }
    else
     {
     $hours =intval(intval($real_time2[0])-intval($real_time1[0]));
     if($hours<=0)
     {
      $hours = intval(intval($real_time2[0])-intval($real_time1[0])+24);
     }
     if($minutes>=10 && $minutes<60) //开始选用strlen判断字符长度补齐位,现在直接用格式化输出,原结构不变。
     {$attendance_time = sprintf("%02d", $hours).":".sprintf("%02d", $minutes);}
     else
     {
      $attendance_time = sprintf("%02d", $hours).":".sprintf("%02d", $minutes);
     }
     }
    // 更正未出勤时间情况,去除午休时间的在勤时间
    if($attendance_time=="-1:00")
    {
     $attendance_time="00:00";
    }
   $t["ATTENDANCE_TIME"]=$attendance_time;//保存在勤时间
   $attendance->create($t);//存入数据库
  }
//  print_r("数据导入成功")."<br>";
  //原始csv文件数据备份,文件保存在系统的./uploadfiles/文件夹下
  switch ($file_error)
  {
  case 0:
   Echo "考勤数据更新成功"."<br>"; break;
  case 1:
   Echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值."."<br>"; break;
  case 2:
   Echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。"."<br>"; break;
  case 3:
   Echo "文件只有部分被上传"."<br>";break;
  case 4:
   Echo "没有文件被上传"."<br>";break;
  case 6:
   Echo "找不到临时文件夹"."<br>";break;
  case 7:
   Echo "文件写入失败"."<br>";break;
  }
  echo "<br>";
//  exit();
//  $absolutdir=$_SERVER[DOCUMENT_ROOT ].$uploaddir.$file_name;
  if ($_FILES["upload_file"]['error']==0)
  { //echo $file_tmp_name;
   //echo $this->uploaddir.$_FILES['upload_file']['name'];
   //$name=time();
   if( move_uploaded_file($file_tmp_name, $this->uploaddir.$_FILES['upload_file']['name']))
    {
    echo '原始数据备份成功';
     }
   else
    {
    echo '备份原始数据失败';
    }
  }
 }
}
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 日,周,月点击排行统计
Jan 11 PHP
php mssql扩展SQL查询中文字段名解决方法
Oct 15 PHP
在PHP中使用redis
Nov 04 PHP
PHP empty函数报错解决办法
Mar 06 PHP
使用PHP生成二维码的两种方法(带logo图像)
Mar 14 PHP
在PHP中运行Linux命令并启动SSH服务的例子
Jun 12 PHP
ThinkPHP3.1新特性之Action参数绑定
Jun 19 PHP
PHP中echo和print的区别
Aug 28 PHP
PHP错误机制知识汇总
Mar 24 PHP
Yii视图CGridView实现操作按钮定义地址示例
Jul 14 PHP
详解php实现页面静态化原理
Jun 21 PHP
Laravel事件监听器用法实例分析
Mar 12 PHP
PHP编写RESTful接口
Feb 23 #PHP
PHP实现查询两个数组中不同元素的方法
Feb 23 #PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
Feb 23 #PHP
php读取txt文件并将数据插入到数据库
Feb 23 #PHP
PHP调试的强悍利器之PHPDBG
Feb 22 #PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
Feb 22 #PHP
PHP实现linux命令tail -f
Feb 22 #PHP
You might like
PHP对文件夹递归执行chmod命令的方法
2015/06/19 PHP
php生成过去100年下拉列表的方法
2015/07/20 PHP
超强的IE背景图片闪烁(抖动)的解决办法
2007/09/09 Javascript
自己做的模拟模态对话框实现代码
2012/05/23 Javascript
禁止拷贝网页内容的js代码
2014/01/22 Javascript
JavaScript实现级联菜单的方法
2015/06/29 Javascript
JavaScript判断变量是否为数组的方法(Array)
2016/02/24 Javascript
JS根据生日月份和日期计算星座的简单实现方法
2016/11/24 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
JavaScript中in和hasOwnProperty区别详解
2017/08/04 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
2017/08/11 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
2018/05/08 Javascript
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
go和python调用其它程序并得到程序输出
2014/02/10 Python
Python中使用wxPython开发的一个简易笔记本程序实例
2015/02/08 Python
Python中使用Inotify监控文件实例
2015/02/14 Python
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
2016/05/24 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
python学习入门细节知识点
2018/03/29 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
微软澳洲官方网站:Microsoft Australia
2017/01/10 全球购物
华为c/c++笔试题
2016/01/25 面试题
某IT外企面试题-二分法求方程!看看大家的C++功底
2015/07/04 面试题
赔偿协议书范本
2014/04/15 职场文书
网页美工求职信范文
2014/04/17 职场文书
高中竞选班长演讲稿
2014/04/24 职场文书
岗位职责说明书
2014/05/07 职场文书
客户答谢会活动方案
2014/08/31 职场文书
工厂标语大全
2014/10/06 职场文书
财务工作犯错检讨书
2014/10/07 职场文书
领导班子整改措施
2014/10/24 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书