说到分页,其实你在Google一搜一大把.大部是通过GET实现,还有的是利用数据库查询的Limit来实现分页.当然表单也可以通过GET方式来提交,实现分页,就得把实现分页需用到参数用GET方式附在URL后面如这样: 
    http://127.0.0.1/search.php?page=1&参数1=参数1值
当然我们有的时候并不想让别人知道我们要提交什么东东,要解决这一问题最简单的方法就是加密要提交内容的值或者改用POST方式提交表单.这里先说一下加密参数值.加密的方法花样百出,就看你发挥了,没有做不到,只有想不到.我最爱用的方法就是最简单的pack()和unpack()来实现加解密字符串,这样不是最好的,但是够简单,提交的内容不再是赤裸裸的,提交时将字符串加密一下,处理时将收到的加密后的字符串解一下密,就OK了.函数如下:
  1. //简单加密字符串函数
  2. function str_encode($str){
  3. $t = implode("",unpack("H*",$str));
  4. return base64_encode($t);
  5. }
  6. //简单解密字符串函数
  7. function str_decrypt($str){
  8. $t = base64_decode($str);
  9. $s = "";
  10. for($i=0;$i <strlen($t);$i+=4)
  11. $s .= @pack("H4",substr($t,$i,4));
  12. return $s;
  13. }
  上面简单的说明了一下GET提交表单,要分页就用下面的分页函数来实现.很简单,不用改什么.重点我来说说当POST提交表单,并分页显示的问题,重点在于当我们POST提交表单后处理,点击第几页怎样才能保存我们原表单的值,不然,可能第一页正常,分页也正常,点第二页结果就什么也没有了,这肯定不是我们想要的结果,怎样才能达到我们所想要的呢,就是增加一个单击事件函数来处理表单的提交.
    分页函数,没什么好说,在网上找个现成的(这函数真是牛人写的写得太牛了),原函数如下:
  1. //分页函数
  2. function multi($num, $perpage, $curpage, $mpurl, $maxpages = 0, $page = 10, $autogoto = true, $simple = false) {
  3. $multipage = '';
  4. $mpurl .= strpos($mpurl, '?') ? '&amp;' : '?';
  5. $realpages = 1;
  6. if ($num > $perpage) {
  7. $offset = 2;
  8. $realpages = @ceil($num / $perpage);
  9. $pages = $maxpages && $maxpages < $realpages ? $maxpages : $realpages;
  10. if ($page > $pages) {
  11. $from = 1;
  12. $to = $pages;
  13. } else {
  14. $from = $curpage - $offset;
  15. $to = $from + $page - 1;
  16. if ($from < 1) {
  17. $to = $curpage + 1 - $from;
  18. $from = 1;
  19. if ($to - $from < $page) {
  20. $to = $page;
  21. }
  22. } elseif ($to > $pages) {
  23. $from = $pages - $page + 1;
  24. $to = $pages;
  25. }
  26. }
  27. $multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="' . $mpurl . 'page=1" class="first"' . $ajaxtarget . '>1 ...</a>' : '') .
  28. ($curpage > 1 && !$simple ? '<a href="' . $mpurl . 'page=' . ($curpage - 1) . '" class="prev"' . $ajaxtarget . '>&lsaquo;&lsaquo;</a>' : '');
  29. for($i = $from; $i <= $to; $i++) {
  30. $multipage .= $i == $curpage ? '<strong>' . $i . '</strong>' :
  31. '<a href="' . $mpurl . 'page=' . $i . ($ajaxtarget && $i == $pages && $autogoto ? '#' : '') . '"' . $ajaxtarget . '>' . $i . '</a>';
  32. }
  33. $multipage .= ($curpage < $pages && !$simple ? '<a href="' . $mpurl . 'page=' . ($curpage + 1) . '" class="next"' . $ajaxtarget . '>&rsaquo;&rsaquo;</a>' : '') .
  34. ($to < $pages ? '<a href="' . $mpurl . 'page=' . $pages . '" class="last"' . $ajaxtarget . '>... ' . $realpages . '</a>' : '') .
  35. (!$simple && $pages > $page && !$ajaxtarget ? '<kbd><input type="text" name="custompage" size="3" onkeydown="if(event.keyCode==13) {window.location=\'' . $mpurl . 'page=\'+this.value; return false;}" /></kbd>' : '');
  36. $multipage = $multipage ? '</div><DIV id="quicklinks">' . (!$simple ? '<em>&nbsp;' . $num . '&nbsp;</em>' : '') . $multipage . '</div>' : '';
  37. }
  38. $maxpage = $realpages;
  39. return $multipage;
  40. }

上面的函数是在网上找的原分页函数,此函数用于GET方法的页面直接使用就OK了,用于POST页面,只需要在函数内的页面链接<A>标签里增加一个onclick事件函数,如下:<A href="#" onclick="gotoPage(1);">第一页</A>,然后在页面里增加一个javascript方法见下:

  1. <script language="javascript">
  2. //函数跳转到指定页面
  3. function gotoPage(page)
  4. {
  5. document.getElementById("page").value = page;  //隐藏表单的页控件
  6. document.getElementById("searchForm").submit();
  7. }
  8. //函数:回来第1页
  9. function gotoFirstPage()
  10. {
  11. document.getElementById("page").value = 1;  //隐藏表单的页控件
  12. }
  13. </script>
  14. <!-- 表单参考如下 -->
  15. <form name="searchForm" id="searchForm" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  16. <!-- 下面是个隐藏页面号码值控件 -->
  17. <input type="hidden" name="page" id="page" size=30 value="<?php echo $page;?>"   />
  18. <!-- 下面是个查找条件值控件 -->
  19. <input type="text" name="photoname" id="photoname" size=30 value="<?php echo $photoname;?>"   />
  20. <!-- 提交控钮,注意id和name不要把值设成"submit",我将其改为"submit1" -->
  21. <!-- 不然在gotoPage()函数里与表单的提交事件submit()有冲突,导至函数不运行 -->
  22. <!-- 这个提交按钮还增加了一个单击事件gotoFirstPage() -->
  23. <!-- 作用就是无论何时当你点击查找按钮后页面都会是第1页,其实就是将隐藏的页面控制值设为1 -->
  24. <input name="submit1" id="submit1" onclick="gotoFirstPage()" type="submit" value="查  找" size=30 />
  25. </form>
  26. <!-- 当然这样改了后,还应该改改原来的分页函数,1.增页分页码链接的单击事件 -->
  27. <!-- 2.让<A>标签href的值为"#",作用当然就是不要<A>标签点击后,页面跳转,只让单击事件来提交表单取得指定页面 -->
  28. <!-- 我尽量在少改动原函数的情况下,只在href后面增加"#?",因为这个原函数在href后面带有"?"号,实际我只要在在最前面增加一个#号就OK,原函数修改如下 -->
  29. <?php
  30. //分页函数
  31. function multi($num, $perpage, $curpage, $mpurl, $maxpages = 0, $page = 10, $autogoto = true, $simple = false) {
  32. $multipage = '';
  33. $mpurl .= strpos($mpurl, '?') ? '&' : '?';
  34. $realpages = 1;
  35. if ($num > $perpage) {
  36. $offset = 2;
  37. $realpages = @ceil($num / $perpage);
  38. $pages = $maxpages && $maxpages < $realpages ? $maxpages : $realpages;
  39. if ($page > $pages) {
  40. $from = 1;
  41. $to = $pages;
  42. } else {
  43. $from = $curpage - $offset;
  44. $to = $from + $page - 1;
  45. if ($from < 1) {
  46. $to = $curpage + 1 - $from;
  47. $from = 1;
  48. if ($to - $from < $page) {
  49. $to = $page;
  50. }
  51. } elseif ($to > $pages) {
  52. $from = $pages - $page + 1;
  53. $to = $pages;
  54. }
  55. }
  56. //注意下面href后面我增加了一个#号,让链接失效,在后面增加onclick函数
  57. $multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="#' . $mpurl . 'page=1"  onclick="gotoPage(1);" class="first"' . $ajaxtarget . '>1 ...</a>' : '') .
  58. ($curpage > 1 && !$simple ? '<a href="#' . $mpurl . 'page=' . ($curpage - 1) . '"  onclick="gotoPage(' . ($curpage - 1) . ');" class="prev"' . $ajaxtarget . '>‹‹</a>' : '');
  59. for($i = $from; $i <= $to; $i++) {
  60. $multipage .= $i == $curpage ? '<strong>' . $i . '</strong>' :
  61. '<a href="#' . $mpurl . 'page=' . $i . ($ajaxtarget && $i == $pages && $autogoto ? '#' : '') . '"' . $ajaxtarget . '  onclick="gotoPage(' . $i .');" target="_blank" target="_blank">' . $i . '</a>';
  62. }
  63. $multipage .= ($curpage < $pages && !$simple ? '<a href="#' . $mpurl . 'page=' . ($curpage + 1) . '"  onclick="gotoPage(' . ($curpage + 1) . ');" class="next"' . $ajaxtarget . '>››</a>' : '') .
  64. ($to < $pages ? '<a href="#' . $mpurl . 'page=' . $pages . '"  onclick="gotoPage(${pages});" class="last"' . $ajaxtarget . '>... ' . $realpages . '</a>' : '') .
  65. //下面这一行注释掉,改了一下超过10页,可以手动输入页码跳转到指定页面函数
  66. //      (!$simple && $pages > $page && !$ajaxtarget ? '<kbd><input type="text" name="custompage" size="3" onkeydown="if(event.keyCode==13) {window.location=\'' . $mpurl . 'page=\'+this.value; return false;}" /></kbd>' : '');
  67. (!$simple && $pages > $page && !$ajaxtarget ? '<kbd><input type="text" name="custompage" size="3" onkeydown="if(event.keyCode==13) {gotoPage(this.value);}" /></kbd>' : '');
  68. $multipage = $multipage ? '</div><DIV id="quicklinks">' . (!$simple ? '<em> ' . $num . ' </em>' : '') . $multipage . '</div>' : '';
  69. }
  70. $maxpage = $realpages;
  71. return $multipage;
  72. }
  73. ?>
  上面的方法就实现了POST表单分页,这是我个人笔记,这里仅贴出了部份代码,仅供参考,有不对的地方还望指正.....

PHP关于表单提交 后 post get分页的更多相关文章

  1. AngularJS 表单提交后显示验证信息与失焦后显示验证信息

    虽然说AngularJS的实时表单验证非常有用,非常高效方便,但是当用户还没有完成输入时便弹出一个错误提示,这种体验是非常糟糕的. 正常的表单验证逻辑应该是在用户提交表单后或完成当前字段中的输入后,再 ...

  2. 怎么实现form表单提交后不重新刷新当前页面

    怎么实现表单提交后不重新刷新当前页面     如何实现表单提交后不重新刷新当前页面 <form name='form1' id='form1' action='/xbcw/cw/xx_xx.ac ...

  3. struts2 jsp表单提交后保留表单中输入框中的值 下拉框select与input

    原文地址:struts2 jsp表单提交后保留表单中输入框中的值 下拉框select与input jsp页面 1     function dosearch() {2         if ($(&q ...

  4. phpcms v9自定义表单提交后返回上一页实现方法

    PHPcms v9中提交自定义表单后默认都是回到首页的,是不是感觉很不爽! 接下来,就说下phpcms v9自定义表单提交后返回上一页实现方法. 1.找到这个文件 phpcms\modules\for ...

  5. DedeCMS实现自定义表单提交后发送指定QQ邮箱法

    https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=monline_3_dg&wd=dedecms 邮箱&oq=d ...

  6. form + iframe 获取表单提交后返回的数据

    原理: submit 提交表单没有回调函数,但是可以用iframe来接收返回结果,最后进行格式转换就ok了: 原文地址: http://blog.csdn.net/simeng_1016/articl ...

  7. flask用宏渲染表单模板时,表单提交后,如果form.validate_on_submit()返回的是false的可能原因

    flask用宏渲染表单模板时,表单提交后,提交的内容符合DataRequired()校验, 但是form.validate_on_submit()返回的是False, 原因可能是表单模板中的<f ...

  8. DedeCMS实现自定义表单提交后发送指定QQ邮箱的方法

    如月cruyue在做DedeCMS自定义表单发送邮箱的教程,发现大部分都是在php文件里写死固定字段内容,这样虽然也能实现自定义表单提交后发送指定邮箱,但是很不智能,如月cruyue想要一个我们自定义 ...

  9. 通过jquery实现form表单提交后不跳转页面,保留当前页面

    jquery代码: <script type="text/javascript" src="../js/jquery-1.8.3.min.js">& ...

随机推荐

  1. 在eclipse中maven web项目部署到tomcat,访问不了

    修改eclipse中tomcat发布路径后,能正常访问

  2. ueditor1.4.3 在IE8下的 BUG

    ueditor1.4.3  .net 版 在IE8 下,多图片上传完成后,点击确认时报错,无法插入图片到编辑器中 原因是 ueditor.all.js 中的 24835 行 if (whitList[ ...

  3. django 安装记录

    1. 下载django安装包,下载个最新的安装包即可. https://www.djangoproject.com/download/ 2. 在本地解压   tar -xvf  安装包名称 3. 安装 ...

  4. lucene 总结收集(url)

    1.倒排索引结构 2.lucene自定义评分域 3.Lucene系列-FieldCache 4.Lucene系列-facet | IT瘾 5.lucene4.7 之排序 6.lucene排序---相关 ...

  5. How to use php serialize() and unserialize()

    A PHP array or object or other complex data structure cannot be transported or stored or otherwise u ...

  6. 在cmd中设置字体

    1.首先在cmd中输入chcp 65001 回车(通过 chcp命令改变代码页,UTF-8的代码页为65001) 2.右击命令提示符的标题栏点击属性. 3.在属性中选择字体后点击确认即可.

  7. 二十四、oracle pl/sql 变量

    一.变量介绍在编写pl/sql程序时,可以定义变量和常量:在pl/sql程序中包括有:1).标量类型(scalar)2).复合类型(composite) --用于操作单条记录3).参照类型(refer ...

  8. Java多线程:线程同步与关键字synchronized

    一.同步的特性1. 不必同步类中所有的方法, 类可以同时拥有同步和非同步方法.2. 如果线程拥有同步和非同步方法, 则非同步方法可以被多个线程自由访问而不受锁的限制. 参见实验1:http://blo ...

  9. 草料生成app自动下载的二维码

    草料官网http://cli.im/app 填写iOS和安卓的appid就好了

  10. hdu_5950_Recursive sequence(矩阵快速幂)

    题目链接:hdu_5950_Recursive sequence 题意:递推求解:F(n) = 2*F(n-2) + F(n-1) + n4 和F(1) = a,F(2) = b: 题解: 一看数据范 ...