php基于Fleaphp框架实现cvs数据导入MySQL的方法,fleaphpcvs
本文实例讲述了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字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
您可能感兴趣的文章:
- fleaphp rolesNameField bug解决方法
- fleaphp crud操作之find函数的使用方法
- fleaphp crud操作之findByField函数的使用方法
- fleaphp常用方法分页之Pager使用方法
- FleaPHP的安全设置方法
- fleaphp下不确定的多条件查询的巧妙解决方法
- PHP处理excel cvs表格的方法实例介绍
- php导入excel文件到mysql数据库的方法
- PHP导出MySQL数据到Excel文件(fputcsv)
- PHP导入Excel到MySQL的方法
- phpMyAdmin下将Excel中的数据导入MySql的图文方法
- php 将excel导入mysql

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。