1. php分页:

要想做php的分页,首先要弄清楚要什么样的分页,关系到哪些参数,参数之间怎么关联:

目标分页效果如下:

分析:

1.主要涉及两个参数:一个是当前输出页面的页码,用变量$p 表示,另一个是待输出的总页数,使用 $page 表示。例如上图中,当前输出页面为 $p = 3 ,总页数:$page = 10 ;

2.点击首页时,页面跳到第1页,即$p = 1 ;当点击尾页时,页面跳到最后一个,即$p = $page;

3.点击上一页时,页面跳到当前页面的上一页,即$p = $p-1 (备注:有一个条件,前提是$p>1);点击下一页时,页面跳到当前页面的下一页,即$p = $p+1(备注:有一个条件,前提是$p<$page);

4.当点击 第1页,第2页,第3页.....................第9页,第10页时,页面跳转到点击的页面

5.当当前页面为第1页时,即$p==1时,上一页按钮不可点击;当当前页面为最大页面时,即$p==$page 时,下一页按钮不可点击;

上面的分析基本上是一个分页的全部效果要求

实现过程:使用php 实现,无非就是在php 环境下,将要实现的效果使用html 标签包裹起来,然后输出;html 标签可以当做是字符串,即把字符串链接起来,然后echo打印出来,就完成了分页的输出

写一个common.php 文件,在此文件中写分页函数:pagination($p,$page);

 <?php
function pagination($p,$page){
// 创建一个变量$a,用来存储传入的分类类别
$a="";
if(isset($_GET['cat_id'])){
$a = "&cat_id=".$_GET['cat_id'];
}
// 创建字符串变量 $str ;用来存储分页的标签
$str = "";
// 创建ul标签,用来包含li标签
$str .= "<ul class='pagination'>";
// 页码的首页
$str .= "<li><a href='?p=1{$a}'>首页</a></li>";
// 如果页码 待显示的页码为1,则上一页按钮不可以点击,这里调用bootstrap 的类disabled 来实现
if($p==1){
// 如果$p ==1 ,则不可点击,输出“上一页”按钮
$str .= "<li class='disabled'><a href='javascript:;'>上一页</a></li>";
}else{
// 如果不为1,直接输出“上一页”按钮
$str .= "<li><a href='?p=".($p-1).$a."'>上一页</a></li>";
};
// 调用bootstrap 的类active来实现选中效果
$active ='';
for($i=1;$i<=$page;$i++){
if($p==$i){
// 如果循环的页码等于待输出的页码,则当前li 添加 类属性,active ='active'
$active ='active';
}else{
// 如果循环的页码不等于待输出的页码,则当前li 清空类active属性
$active ='';
}
// 将循环的页码添加到字符串 $str 中
$str .= "<li class='{$active}'><a href='?p=".$i.$a."'>{$i}</a></li>";
};
// 如果当前页等于页码总数,则说明是最后一页,则“下一页”按钮不可点击.这里调用bootstrap 的类disabled 来实现
if($p==$page){
// 添加下一页按钮(不可点击的情况)
$str .= "<li class='disabled'><a href='javascript:;'>下一页</a></li>";
}else{
// 添加下一页按钮(可点击的情况)
$str .= "<li><a href='?p=".($p+1).$a."'>下一页</a></li>";
}
// 添加尾页按钮
$str .= "<li><a href='?p=".$page.$a."'>尾页</a></li>";
// 添加闭合<ul>标签
$str .= "</ul>";
// 返回字符串 $str, 这一步很关键啊,不返回的话,上面的代码就白干了
return $str;
}
?>

写一个test.php 调用分页函数:

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link href="http://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<title>Document</title>
</head>
<body>
<?
// 引入库函数文件 common.php
require "./lib/common.php";
// 如果有传入全局变量,则将全局变量中的p赋值给$p,这是待显示的页码
if(isset($_GET['p'])){
$p = $_GET['p'];
}else{
$p=1;
}
// 总页码设置为10
$page = 10;
// 调用分页函数
echo pagination($p,$page);
?>
</body>
</html>

调用:

http://localhost/ajax/message/test.php?p=3

运行结果:

二 ..在PHP 中,文件上传时,必须设置enctype 属性,并且属性为 multipart/form-data ,method 为post;

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<title>Document</title>
</head>
<body>
<form action="./uploadfile.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename" id=""><br>
<input type="submit" value="提交">
</form>
</body>
</html>

php 接收文件为:

 <?php

 // 获取上传文件啊对应的字典数组
////接收表单传过来的文件资料
$thisfile = $_FILES['filename'];
print_r($thisfile ); // 获取文件名称
$fileName = $thisfile['name'];
// 获取文件的临时存储路径
$fliePath = $thisfile['tmp_name'];
///获取文件错误状态 0 为上传成功, // 因为文件保存在临时文件夹,所以我们需要把文件移动到目标文件夹中
move_uploaded_file($fliePath,"./img/".$fileName); ?>

运行结果:已经把文件上传到 img 文件夹中了

我们上传一下大文件试试结果:上传一个大小为28M 的文件,结果如下:

上传失败,但是这并不是我们的表单引起的,是因为web 服务器引起的,因为上传文件的大小已经超过了服务器设置的大小,

下面我们要修改服务器的设置,才能解决这个问题:找到 服务器中的 php.ini 文件

修改 php.ini 中的如下配置:

1.  files_uploads = On;                                表示是否允许上传文件,on为允许,off 为禁止,默认为on

2. upload_max_filesize = 2048M ;             上传文件的最大限制

3. post_max_size = 2048M ;                      通过post 提交的最多数据

4. max_execution_time = 30000;               脚本最长的执行时间,单位为毫秒

5. max_input_time = 30000;                      接收提交数据的时间限制,单位为毫秒

6. memory_limit = 2048M;                        最大的内存消耗

修改以上几个参数,就可以上传了

(以上这个修改,没有经过测试,仅仅是理论)

php 分页实现 和 php 大文件上传失败的处理方式的更多相关文章

  1. php大文件上传失败的原因及解决方法

    为什么上传大文件总是失败,上传小文件就没有问题.关于PHP大文件上传失败的原因及解决方法如下: 第1种情况:文件上传时存放文件的临时目录必须是开启的并且是 PHP 进程所有者用户可写的目录.如果未指定 ...

  2. php大文件上传失败的解决方法

    1.打开php.ini 2.查找post_max_size:(修改上传大小限制) 表单提交最大数值,此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的默认为8m,设置为自己需要的值, ...

  3. nginx proxy大文件上传失败问题总结

    问题描述: http://www.syhuo.net ota.apk包上传正常 http://www.syhuo.net:8080 ota.apk包上传不正常 查看nginx error日志 [roo ...

  4. wamp大文件上传

    为什么上传大文件总是失败,但是上传小文件就没有问题.小编也不得其解,网上搜其原因,整理了一篇关于php上传大文件失败的原因和解决办法的文章,分享给大家. 下面分别是各种原因以及解决办法:第1种情况:文 ...

  5. vs文件上传失败--超过最大字符限制

    一.问题 在文件上传时,会遇到大文件上传失败. >F12查看报错网络请求返回结果 >问题分析 由于vs上传文件默认的字符大小控制. 二.解决方法 >在web.config中修改或添加 ...

  6. 百万行mysql数据库优化和10G大文件上传方案

    百万行mysql数据库优化和10G大文件上传方案 最近这几天正在忙这个优化的方案,一直没时间耍,忙碌了一段时间终于还是拿下了这个项目?项目中不要每次都把程序上的问题,让mysql数据库来承担,它只是个 ...

  7. 解决PHP大文件上传问题

    PHP大文件上传问题    今天负责创业计划大赛的老师问我作品上报系统上传不了大文件,我当时纳闷了,做的时候没限制上传文件的大小阿,怎么会传不了呢,自己亲自体验了番,果然不 行,想了好一会儿才有点眉目 ...

  8. 使用commons-fileupload包进行大文件上传注意事项

    项目中使用 commons-fileupload-1.2.1.jar 进行大文件上传. 测试了一把,效果很不错. 总结如下: 必须设置好上传文件的最大阀值 final long MAX_SIZE = ...

  9. 因用了NeatUpload大文件上传控件而导致Nonfile portion > 4194304 bytes错误的解决方法

    今天遇到一个问题,就是“NeatUpload大文件上传控件而导致Nonfile portion > 4194304 bytes错误”,百度后发现了一个解决方法,跟大家分享下: NeatUploa ...

随机推荐

  1. 用gradle打包可运行jar

    参考了 http://www.cnblogs.com/yongtao/p/4104526.html gradle文件加入 apply plugin: 'application' mainClassNa ...

  2. go语言学习--map中键值得删除

    测试 map1 中是否存在 key1: 在例子 8.1 中,我们已经见过可以使用 val1 = map1[key1] 的方法获取 key1 对应的值 val1.如果 map 中不存在 key1,val ...

  3. 996ICU的感悟

     并不只是口头上的支持,吉多·范罗苏姆近日又在 Python 官方论坛发布一篇名为<Can we do something for 996 programmers in China?>(我 ...

  4. 2017湖湘杯复赛writeup

    2017湖湘杯复赛writeup 队伍名:China H.L.B 队伍同时在打 X-NUCA  和 湖湘杯的比赛,再加上周末周末周末啊,陪女朋友逛街吃饭看电影啊.所以精力有点分散,做出来部分题目,现在 ...

  5. FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. com/mongodb/util/JSON

    问题: 将MongoDB数据导入Hive,按照https://blog.csdn.net/thriving_fcl/article/details/51471248文章,在hive建外部表与mongo ...

  6. “javac”不是内部或外部命令的解决办法(JDK1.5 ~ JDK10)

    配置环境变量:计算机 -> 属性 -> 高级系统设置 -> 环境变量 JDK9以后版本(9-10): JAVA_HOME D:\Java\jdk-10 //jdk所在目录 JRE_H ...

  7. ubuntu 手动修改分辨率为1920 X 1080 的两种方式

    方案一(临时性,重启会失效): 1.打开终端.输入:cvt 1920 1080 出现有modeline 的提示. 2.使用 xrandr 创建新的 mode,--newmode 后面跟刚刚 cvt 产 ...

  8. 微信小程序开发踩坑日记

    2017.12.29  踩坑记录 引用图片名称不要使用中文,尽量使用中文命名,IDE中图片显示无异样,手机上图片可能出现不显示的情况. 2018.1.5  踩坑记录 微信小程序设置元素满屏,横向直接w ...

  9. embsysregview 0.26 无法安装的解决方法。

    最近看到一个比较好的 eclipse 插件:embsysregview,于是想装起来用用看.结果安装过程出错,4个 jar 的包下载不下来,并且通过本地安装的方法也不行. 后来终于找到作者的回复,作者 ...

  10. 8.2.1.2-MySQL如何优化 WHERE 语句

    这一章节讨论能够在WHERE处理语句中使用的优化. 样例使用SELECT 语句, 但是同样适用于DELETE,UPDATE语句中的WHERE语句. 注意 因为MYSQL优化器在不断的发展,MySQL执 ...