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. ntp服务问题

    原本国内的主机直接指向阿里云就可以时间同步了  但是国外的主机 却有报错  这个报错还没有解决 1 Oct 03:47:30 ntpdate[20969]: no server suitable fo ...

  2. 给VMware下的Linux扩容磁盘空间到根分区(以centos7.0为例)

    一.扩展VMWare硬盘空间 关闭Vmware 的 Linux系统,这样,才能在VMWare菜单中设置: VM -> Settings... -> Hardware -> Hard ...

  3. [UE4]根据名字调用函数(蓝图)

    一.Set Timer by Function Name 二.Set Timer by Event

  4. [UE4]射击起点、终点的计算方法

    一.射击起点,这个简单,一般是以角色的相机位置为作为射击起点,而不是枪口的位置作为起点 二.射击终点,角色朝向 * 射击距离 + 射击起点 角色朝向:单位向量 角色朝向 * 射击距离:向量长度 向量长 ...

  5. 0002 - Spring MVC 拦截器源码简析:拦截器加载与执行

    1.概述 Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理.例如通过拦截器可以进行权限验证.记录请求信息的日 ...

  6. crm 2016 tabstatechange event

    1 tabstatechange事件在窗体中定义 2 问题是如果选项卡默认为折叠的.且选项卡中包含了iFrame网页. 3 在网页内容加载完成之后,点击选项卡 折叠/展开 按钮, iFrame网页没有 ...

  7. Shiro ini配置

    Shiro.ini配置: ini配置文件类似Java中的properties(key = value),不过提供了key/value分类的特性,每个部分的key不重复即可 在eclipse中设置打开方 ...

  8. c# webBrowser全掌握

    一.获取网页源代码 1.不含有框架 string s=WB1.DocumentText;  //webbrowser1命名为WB1,下同 2.含有框架 引用mshtml;          //位置C ...

  9. Java - 31 Java 发送邮件

    Java 发送邮件 使用Java应用程序发送E-mail十分简单,但是首先你应该在你的机器上安装JavaMail API 和Java Activation Framework (JAF) . 你可以在 ...

  10. Android模块化开发、组件化开发;

    模块化开发:优点嘛,项目过大时便于管理: 1.在根目录的gradle.properties文件下添加 isBuildModule=false: 使用isBuildModule来控制这个是Library ...