• php 分页实现 和 php 大文件上传失败的处理方式


    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);

     1 <?php
     2     function pagination($p,$page){
     3         // 创建一个变量$a,用来存储传入的分类类别
     4         $a="";
     5         if(isset($_GET['cat_id'])){
     6             $a = "&cat_id=".$_GET['cat_id'];
     7         }
     8         // 创建字符串变量 $str ;用来存储分页的标签
     9         $str = "";
    10         // 创建ul标签,用来包含li标签
    11         $str .= "<ul class='pagination'>";
    12         // 页码的首页
    13         $str .= "<li><a href='?p=1{$a}'>首页</a></li>";
    14         // 如果页码 待显示的页码为1,则上一页按钮不可以点击,这里调用bootstrap 的类disabled 来实现
    15         if($p==1){
    16             // 如果$p ==1 ,则不可点击,输出“上一页”按钮
    17             $str .= "<li class='disabled'><a href='javascript:;'>上一页</a></li>";
    18         }else{
    19             // 如果不为1,直接输出“上一页”按钮
    20             $str .= "<li><a href='?p=".($p-1).$a."'>上一页</a></li>";
    21         };
    22         // 调用bootstrap 的类active来实现选中效果
    23          $active ='';
    24          for($i=1;$i<=$page;$i++){
    25              if($p==$i){
    26                  // 如果循环的页码等于待输出的页码,则当前li 添加 类属性,active ='active'
    27                  $active ='active';
    28              }else{
    29                  // 如果循环的页码不等于待输出的页码,则当前li 清空类active属性
    30                  $active ='';
    31              }
    32              // 将循环的页码添加到字符串 $str 中
    33              $str .= "<li class='{$active}'><a href='?p=".$i.$a."'>{$i}</a></li>";
    34          };
    35          // 如果当前页等于页码总数,则说明是最后一页,则“下一页”按钮不可点击.这里调用bootstrap 的类disabled 来实现
    36          if($p==$page){
    37              // 添加下一页按钮(不可点击的情况)
    38              $str .= "<li class='disabled'><a href='javascript:;'>下一页</a></li>";
    39          }else{
    40               // 添加下一页按钮(可点击的情况)
    41              $str .= "<li><a href='?p=".($p+1).$a."'>下一页</a></li>";
    42          }
    43         // 添加尾页按钮
    44          $str .= "<li><a href='?p=".$page.$a."'>尾页</a></li>";
    45          // 添加闭合<ul>标签
    46         $str .= "</ul>";
    47         // 返回字符串 $str, 这一步很关键啊,不返回的话,上面的代码就白干了 
    48         return $str;
    49     }
    50 ?>

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

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

    调用:

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

    运行结果:

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

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

    php 接收文件为:

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

    运行结果:已经把文件上传到 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;                        最大的内存消耗

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

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

    http://www.cnblogs.com/huanying2015 博客随笔大多数文章均属原创,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利
  • 相关阅读:
    python--进程
    python---多线程
    python--上下文管理器
    python中的单例模式
    装饰器
    匿名函数
    python的内置方法
    命名元组
    如何管理我们的项目环境
    启动APP遇到“UiAutomator exited unexpectedly with code 0, signal null”解决
  • 原文地址:https://www.cnblogs.com/huanying2015/p/8434550.html
Copyright © 2020-2023  润新知