1.ThinkPHP可以很好的支持AJAX请求,系统的\Think\Controller 类提供了ajaxReturn方法用于AJAX调用后返回数据给客户端。并且支持JSON、JSONP、XML和EVAL四种方式给客户端接受数据,并且支持配置其他方式的数据格式返回。
//登录类
/*1.首先判断该操作是以get方式提交还是以post提交,post提交会得到页面输入的学号和密码,
2.判断验证码和学号密码是否正确,以ajax方式返回数据,好处是:页面不刷新执行了数据库的查询信息
3.ajaxReturn的三个参数ret:boolean布尔型前台判断条件,msg:前台的消息,url:跳转路径*/
public function login(){
if(IS_GET){
$this->display();
}else if(IS_POST){
// echo "sagg";
// exit;
$where['no'] = I('post.no');
$where['password'] = md5(I('post.password'));
// dump($where);
// exit;
$yzm = I('post.yzm');
$model = M('student');
$student = $model->where($where)->select();
// dump($student);
// exit;
if($student){
$verify = new \Think\Verify();
if(!$verify->check($yzm)){
$this->ajaxReturn(array('ret'=>false,'msg'=>'验证码输入不正确','url'=>U("index/login")));
exit;
}else{
$this->ajaxReturn(array('ret' =>true , 'msg'=>'登录成功','url'=>U("index/studentlist")));
}
}else{
$this->ajaxReturn(array('ret' =>false , 'msg'=>'用户名或密码错误,登录失败','url'=>U("index/login")));
}
}
}
//thinkphp框架中的分页效果
public function studentlist($p='1'){
$pagesize = 10;//每页的记录数
$model = M('student');
$data = $model->field('no,name,sex')->page("{$p},{$pagesize}")->select();//查询数据库中的记录
$count = $model->count();//查询数据库中一共多少条记录
$page = new \Think\Page($count,$pagesize);
$page->lastSuffix=false;
$page->setConfig('prev','上一页');
$page->setConfig('next','下一页');
$page->setConfig('last','末页');
$page->setConfig('first','首页');
$page->setConfig('theme','%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END% %HEADER%');
$show = $page->show();
// $student = $model->field('no,name,sex')->page("{$p},{$pagesize}")->select();
$this->assign('page',$show);
// $this
$this->assign('data',$data);
$this->display('test');
}
//thinkphp框架上传csv文件以及追加数据到数据库中操作方法
public function upload(){
if(IS_GET){
$this->display();
exit;
}
$upload = new \Think\Upload();
$upload->maxSize =0;//上传文件的大小 0是不限制大小
$upload->exts = array('csv','png','jpg','jpge');//设置上传文件格式不是该格式上传失败
$upload->rootPath = './Public/Upload/';
$upload->savePath = '';
$info = $upload->upload();//false上传失败
if(!$info){
$this->error($upload->getError());//上传失败的错误原因
}else{
// $this->success('上传成功!');
echo "上传成功";
$this->import($upload->rootPath . $info['file']['savepath'].$info['file']['savename']);//上传文件保存的完整路径
}
}
public function import($file){
// $file = "./Public/Upload/2018-03-22/5ab365ab3c15f.csv";
$encoding = detect_ecoding($file);//调用detect_ecoding方法得到文件编码格式
// dump($encoding);
// exit;
if($encoding != 'UTF-8'){//对编码格式进行判断以及改为utf-8格式
$contens = file_get_contents($file);
$contens = mb_convert_encoding($contens,'UTF-8',$encoding);
// dump($contens);
// exit;
file_put_contents($file,$contens);
}
$fp = fopen($file,'r');
if($fp){
$fields = array('no','name','sex');
$model = M('newstudent');
$arr = array();
$arrayNo = $model->getField('no',true);//得到数据库中已有的学生学号
// dump($arrayNo);
// exit;
while(($row = fgetcsv($fp,1000,','))!==false){
// $temp =
// dump($row);
// exit;
$row = array_combine($fields, $row);
// dump($row['no']);
// exit;
$ret = in_array($row['no'],$arrayNo);
// dump($ret);
// exit;
if($ret){//得到布尔型值判断数据库中是否已有改学号
// array_push($arrayNo, $row['no']);如果有提示学号已存在
echo $row['no']."已存在";
echo "<br>";
}else{
array_push($arrayNo, $row['no']);//否则放入二维数组中添加数据
$arr[] = $row;
}
// dump($arr['no']);
// exit;
if(count($arr)==1000){
$model->addAll($arr);
unset($arr);
}
}
if(count($arr)>0){
$model->addAll($arr);
}
$this->show('添加成功','utf8');
}
}