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

/*

* 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,"
";

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']."
"."
");

//数据导入

// $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

$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("数据导入成功")."
";

//原始csv文件数据备份,文件保存在系统的./uploadfiles/文件夹下

switch ($file_error)

{

case 0:

Echo "考勤数据更新成功"."
"; break;

case 1:

Echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值."."
"; break;

case 2:

Echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。"."
"; break;

case 3:

Echo "文件只有部分被上传"."
";break;

case 4:

Echo "没有文件被上传"."
";break;

case 6:

Echo "找不到临时文件夹"."
";break;

case 7:

Echo "文件写入失败"."
";break;

}

echo "
";

// 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字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

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

php的cvs,php基于Fleaphp框架实现cvs数据导入MySQL的方法相关推荐

  1. STM32G070RBT6基于Arduino框架下串口数据接收使用示例

    STM32G070RBT6基于Arduino框架下串口数据接收使用示例 相关篇<STM32G070RBT6基于Arduino串口的使用>

  2. javaweb课程设计-基于SSM框架的疫情数据统计分析系统源码+数据库,可以进行疫情数据录入、疫情数据查询、图表展示

    疫情数据统计分析系统 完整代码下载地址:基于SSM框架的疫情数据统计分析系统源码+数据库 介绍 疫情数据统计分析系统是一个基于SSM框架的网页端系统,项目中实现的功能如下:用户访问网站可以浏览全国疫情 ...

  3. python flask框架剖析_python flask框架实现传数据到js的方法分析

    本文实例讲述了python flask框架实现传数据到js的方法.分享给大家供大家参考,具体如下: 首先要清楚后台和前端交互所采用的数据格式. 一般选JSON,因为和js完美贴合. 后台返回的数据进行 ...

  4. 基于slurm框架的GPU服务器集群搭建方法

    基于slurm框架的GPU服务器集群搭建操作文档 1. 环境基础 2. 环境配置 2.1 hostname配置 2.2 关闭SELinux (master, slave) 2.3 关闭Firewall ...

  5. php模拟关注微博,PHP基于laravel框架获取微博数据之一 模拟新浪微博登录

    参考资料: http://www.csuldw.com/2016/11/10/2016-11-10-simulate-sina-login/ http://blog.csdn.net/fly_leop ...

  6. php rsa2 微博,PHP 基于laravel框架获取微博数据之一 模拟新浪微博登录

    模拟新浪微博登录是抓取新浪数据的基础,网上的参考资料大多介绍的是用Python开发,有一篇使用php模拟登录的资料还是在phpcms中实现的,也没有太深入分析. PS:网上资料来源比较乱,不知道php ...

  7. 一种基于kafka实现物联网设备数据精细化存取的方法

    一种基于kafka实现物联设备数据精细化存取的方法 摘要: 基于kafka实现物联设备数据精细化存取的方法是指能够缓存物联网平台连接的所有设备的所有数据并且能高效精确地读取指定设备的指定类型数据的一种 ...

  8. 清华大学赵志磊--基于thinkPHP6框架的Excel表格导入和导出

    1.Excel表格导出 先上大图:(可放大查看,当作壁纸再好不过,超高清壁纸) 正题: 首先.thinkPHP6框架内在admin应用下,自定义文件夹,存放公共类,里面封装公共方法. 命名空间写好,记 ...

  9. 基于mui框架读取nfc数据_基于NFC的数据采集软件系统的设计与实现

    哈尔滨工业大学工程硕士学位论文 - IV - 目 录 摘 要 ..................................................................... ...

  10. 基于springboot框架开发的OA办公自动化系统

    OA办公自动化系统,使用Maven进行项目管理,基于springboot框架开发的项目,mysql底层数据库,前端采用freemarker模板引擎,Bootstrap作为前端UI框架, 集成了jpa. ...

最新文章

  1. 组态王图素制作_组态王的图形及动画功能
  2. 按装oracle后 eclips提示jvm版本太低的问题
  3. JavaScript 笔记Day1
  4. 二叉树最大路径和 python_[面试题]二叉树中最大路径和
  5. Morpheus - DNS Spoofing
  6. PAT 1152 Google Recruitment (20 分)- 甲级
  7. 计算机公开课教学反思,语文公开课教学反思
  8. python布局管理_Python基础=== Tkinter Grid布局管理器详解
  9. 网页抢东西插件_强烈推荐一款Chrome插件DownFaster 一键下载网页资源
  10. 51nod 1286 三段子串(树状数组+拓展kmp)
  11. 爆红Github!再来一个小白练手项目,20个项目随你造!
  12. Java毕业设计-医院药品管理系统
  13. mate20pro换鸿蒙系统,鸿蒙2.0下载
  14. 三端稳压管原理、作用、解决发热的问题
  15. java switch语句的升级
  16. java从菜鸟到巨佬的学习目标
  17. BI 工具常用图表用法
  18. Javascript使用三大家族和事件来DIY动画效果相关笔记(六)
  19. 2010年4月2日 晴
  20. 计算机学院刘岗,刘岗-中国科学院大学-UCAS

热门文章

  1. J1939入门(一)
  2. Tampermonkey 油猴脚本,chrome插件
  3. NUAA第四届“节能小屋”大赛工艺组“一等奖”作品——新能源智慧食堂
  4. 【1】Matlab深度学习环境配置-入门
  5. 51单片机 呼吸灯 七彩呼吸灯
  6. 地区与地区编码的相互转换
  7. IDM俄国大神直装注册版INTERNET DOWNLOAD MANAGER 6.36.7
  8. 阶乘的传统流程图 c语言,C语言算法与流程图.ppt
  9. ubuntu录屏软件kazam格式转换+视频裁剪+gif转换
  10. java的swing案例