当前位置:文档之家› 使用PHP和jQuery制作分页和表格

使用PHP和jQuery制作分页和表格

使用PHP和jQuery制作分页和表格
使用PHP和jQuery制作分页和表格

使用PHP和jQuery制作分页和表格

如果您已经下载了本站提供的baseProject项目源码,后台中列表页面均可作为示例,其中文章列表页面的功能最为丰富。如果您没有下载该源码,相关的js文件可以从

https://www.doczj.com/doc/a94931416.html,/scripts/basic.js获得,示例页面为https://www.doczj.com/doc/a94931416.html,/feedback 页面。以下是后台文章列表页面的截图。

分页和表格功能实例截图

分页功能详解

分页功能用于当目标数据过多时,为提高页面展示速度采用的一种手段。本文中的分页功能借用了Zend Framework中的Zend_Paginator对象,分页适配器为

Zend_Paginator_Adapter_Null。该适配器也是最简单易用的一个。

工作原理

在PHP端,分页功能的基本参数为记录总数($countRows)、每页显示的记录数($rowsPerPage)、当前页码($page 默认值为1),页码数量($items 指每次在页面上显示多少个页码,建议为单数)。其他参数可以通过计算得到:

1.页码合计($countPages)取不小于$countRows/$rowsPerPage的整数;

2.起始页码和结束页码的计算方式太长不写了;

3.页码列表:从起始页码到结束页码的页码组成的数组,如array(4, 5, 6, 7, 8)

在HTML端,必要的参数为PHP端计算得出的数据,同时需要指定一个用于显示分页信息的html元素。然后使用jQuery根据参数动态生成html并将其插入到指定的html元素中就行了。

PHP示例代码详解

1.public function articlesAction() {

2.$pageNumber= $this->getRequest()->getParam('page', 1);//获取当前页码,

如果未指定则设为1

3.$sortBy= $this->getRequest()->getParam('sortby');//获取sortby设置

4.if (empty($sortBy) || ! preg_match('/^[a-z0-9_-]+ (asc|desc)$/i', $sortBy)) {

5.//如果sortBy为空或者不符合格式要求则使用以下的排序方式

6.//注意:一定要进行格式检查,防止sql注入

7.$sortBy= Project_Table::getFullyColumnName('article', 'id') . ' desc';

8.}

9.$mArticle= new Model_Article();

10./* 这部分是处理where子句的,和本文关系不大,略过*/

11.$whereArray = array(

12.'`article`.`article_category_id`'

=>$this->getRequest()->getParam(Project_Table::getFullyColumnName('article',

'article_category_id')),

13.'`article`.`article_status_id`'

=>$this->getRequest()->getParam(Project_Table::getFullyColumnName('article',

'article_status_id')),

14.);

15.$whereString = '';

16.foreach ($whereArray as $key => $value) {

17.if (! empty($value)) {

18.if ($key == '`article`.`article_category_id`' &&$value == '-1') {

19.$whereString .= " AND {$key} IS NULL";

20.} else {

21.$whereString .= " AND {$key} = '{$value}'";

22.}

23.}

24.}

25.if (! empty($whereString)) {

26.$whereString= substr($whereString, strlen(' AND '));

27.} else {

28.$whereString = null;

29.}

30./* 以上是处理where子句的*/

31.$maxGetRows= Project_Config::PAGINATOR_ITEM_COUNT_PER_PAGE;//设置

每页显示的记录数量

32.$articles = $mArticle->getArticles($whereString, $sortBy, $maxGetRows,

($pageNumber - 1) * $maxGetRows);//从数据库中读取数据

33.$countArticles= Project_Table::getLastFoundRows();//获得符合条件的数据

总数

34.if (empty($articles) && ! empty($countArticles)) {

35.//如果没有取到任何记录,而且记录总数不为空,说明当前页码超出范围了,所以处理一下

36.$articles = $mArticle->getArticles($whereString, $sortBy, $maxGetRows, null);

37.$pageNumber = 1;

38.}

39.$pDate= Project_Datetime::getInstance();//时间处理工具,和本文无关

40.foreach ($articles as $key => $article) {

41.$articles[$key][Project_Table::getFullyColumnName('article', 'modified')] = $pDate->getUserTimeFromTime($article[Project_Table::getFullyColumnName('article',

'modified')], true);//把时间戳转换为用户的当地时间,和本文无关

42.}

43.$paginator= Zend_Paginator::factory($countArticles, 'Null');//调用Zend提供的分页适配器,参数1是总记录数,参数2是适配器的名字

44.$paginator->setCurrentPageNumber($pageNumber);//告诉分页器当前页码

45.$pages = $paginator->getPages();//得到了前面提到的所有参数,后面我会打印它,这样你会直观的看到其内容

46.$this->view->articles = $articles;

47.$this->view->pages = $pages;

48.//以下处理是为了页面中的下拉选单提供选项数据,和本文关系不大

49.if(! $this->getRequest()->isPost()) {

50.$mpArticle= new Mapper_Article();

51.$this->view->elementArticleStatusId =

$mpArticle->getElement('article_status_id', array(Project_Mapper::OPTIONS_NULLABLE =>true, Project_Mapper::OPTIONS_DEFAULT =>''));

52.$_categories = $mArticle->getAllowAppendArticleArticleCategories(null, null, null, null, true);

53.$categories = array(

54.$this->view->translate(Model_Article::NO_CATEGORY) =>'-1',

55.);

56.foreach ($_categories as $key => $row) {

57.

$categories[$row[Project_Table::getFullyColumnName('article_category', 'name')]] = $row[Project_Table::getFullyColumnName('article_category', 'id')];

58.}

59.$mpArticle= new Mapper_Article();

60.$this->view->elementArticleCategories =

$mpArticle->getElement('article_category_id', array(Project_Mapper::OPTIONS_IN_ARRAY =>$categories, Project_Mapper::OPTIONS_NULLABLE =>true));

61.}

62.}

$pages中的内容我打印了一下,这样更直观。如下。

63.stdClass Object

64.(

65.[pageCount] => 3

66.[itemCountPerPage] => 10

67.[first] => 1

68.[current] => 2

69.[last] => 3

70.[previous] => 1

71.[next] => 3

72.[pagesInRange] => Array

73.(

74.[1] => 1

75.[2] => 2

76.[3] => 3

77.)

78.

79.[firstPageInRange] => 1

80.[lastPageInRange] => 3

81.[currentItemCount] => 10

82.[totalItemCount] => 21

83.[firstItemNumber] => 11

84.[lastItemNumber] => 20

85.)

Zend Framework的开发人员确实很认真,返回的参数非常充分,不需要任何的补充。

顺便提一下以上代码中未体现的细节,当使用post方式访问该页面时会得到json数据而不是html。这个细节写在init()方法中,代码如下:

1.public function init() {

2.if ($this->getRequest()->isPost()) {

3.$this->_helper

4.->contextSwitch()

5.->addActionContext('articles', 'json') //就是这里咯

6.->addActionContext('trashcategory', 'json')

7.->addActionContext('trasharticle', 'json')

8.->addActionContext('movecategory', 'json')

9.->initContext('json');

10.}

11.}

HTML示例代码详解

这次只贴出关键的内容哦。

1.

8.

9.

10.

11.pagination($this->pages->current, 'articles')?>

12.

13.

14.

15.search_select($this->elementArticleStatusId, array('onchange' =>"pBase.paginator('div.pagination[name=articles]', 'goto', 1);"));?>

16.search_select($this->elementArticleCategories, array('onchange' =>"pBase.paginator('div.pagination[name=articles]', 'goto', 1);"));?>

17.iconButton('add',

$this->actionTitle('createarticle'), "window.open('{$this->url(array('action'

=>'editarticle'))}')", ! Project_Session::getInstance()->isAllow('editarticle'))?>

18.

19.

20.

21.

22.

23.

24.

25.pagination($this->pages->current, 'articles', false)?>

26.

27.

28.

29.

里面用到了一个helper,因为这样可以避免反复去写类似的html内容。带有两个参数,

第一个是当前的页码,第二个用于控制是否输出表单元素(默认为true,输出)。当第二个参数为默认值true时,其输出如下:

1.

value="" />

为false时其输出为:

1.

对于参数为true的输出,您可能会问为什么sortby没有初始值?确实没想过,我也不希望用户在url中手动添加sortby参数。

Javascript代码说明

具体的代码很长,就不贴出来了,可以自行查看,仅列举配置信息和例子。

1.var _configs = {

2.boxClass: 'pagination',//分页的总体样式名称

3.firstClass: 'first',//首页所使用的样式名称

4.firstText: false,//首页使用的文本,false表示使用数字

https://www.doczj.com/doc/a94931416.html,stClass: 'last',//尾页所使用的样式名称

https://www.doczj.com/doc/a94931416.html,stText: false,//尾页使用的文本,false表示使用数字

7.previousClass: 'previous',//上一页使用的样式名称

8.previousText: '<',//上一页所使用的文本

9.nextClass: 'next',//下一页所使用的样式名称

10.nextText: '>',//下一页所使用的文本

11.pageClass: 'page',//每个页面元素所使用的样式名称

12.currentPageClass: 'current',//当前页所使用的样式名称

13.pagesElementClass: 'pages',//所有页码的公共父节点使用的样式名称

https://www.doczj.com/doc/a94931416.html,ElementClass: 'info',//信息节点的公共父节点使用的样式名称

https://www.doczj.com/doc/a94931416.html,ElementCountPageClass: 'countPage',//总页数信息的样式名称

https://www.doczj.com/doc/a94931416.html,ElementCurrentPageClass: 'current',//当前页信息的样式名称

https://www.doczj.com/doc/a94931416.html,ElementCountItemsClass: 'countItems',//总条目数量信息的样式名称

https://www.doczj.com/doc/a94931416.html,ElementPageItemsClass: 'pageItems',//页内条目数量信息的样式名称

https://www.doczj.com/doc/a94931416.html,ElementFirstItemClass: 'first',//本页内第一个条目的序号信息的样式名

https://www.doczj.com/doc/a94931416.html,ElementLastItemClass: 'last',//本页内最后一个条目的序号信息的样式

名称

21.ajaxBoxClass: 'ajaxBox',//ajax读取状态容器的样式名称

22.ajaxLoader: function() {

23.return $('

');

24.},//获取一个ajax读取中的html

25.pageCount: 0,//总页数

26.itemCountPerPage: 0,//页内最大条目数

27.totalItemCount: 0,//总条目数

28.pagesInRange: [],//页码列表

29.firstPageInRange: false,//页码列表中的第一个页码

https://www.doczj.com/doc/a94931416.html,stPageInRange: false,//页码列表中的最后一个页码

31.currentItemCount: 0,//本页条目数

32.firstItemNumber: 1,//第一条的序号

https://www.doczj.com/doc/a94931416.html,stItemNumber: 1,//最后一条的序号

34.previous: false,//上一页的页码

35.first: false,//第一页的页码

https://www.doczj.com/doc/a94931416.html,st: false,//最后一页的页码

37.current: 1,//当前页的页码

38.next: false,//下一页的页码

39.referenceForm: 'form:first',//引用的表单

40.referencePageItem: 'page'//表单中表示页码的表单元素名称

41.};

功能原型:pBase.paginator(string|HtmlElement selector, jsonObject|stringconfigs[, number])

参数说明:

selector: 选择器,分页的Html内容将注入到该选择器指定的元素。

configs: 配置信息,如果是对象,那么利用该对象声明的参数重绘分页(此时忽略第三个参数number),如果是字符串,字符串应为removeItem, addItem或者goto之一。

number: 在configs为字符串时需要该参数。说明如下:

configs为removeItem: number表示当前页内有多少行已经删除;

configs为addItem: number表示当前页内新增了多少行;

configs为goto: number表示目标页码;

分别示例如下。

1.pBase.paginator(‘#pager’, {}); //在$(‘#pager’)内显示分页信息

2.pBase.paginator(‘#pager’, ‘removeItem’, 1); //页内条目数及总条目数-1

3.pBase.paginator(‘#pager’, ‘addItem’, 1); //页内条目数及总条目数+1

4.pBase.paginator(‘#pager’, ‘goto’, 5); //跳转到第5页

表格功能详解

其实就是Grid这个东西咯,设计目标是使用表格的方式展示数据,同时支持动态更新、插入和删除行。表格部分的完整功能截图如下,该截图来自baseProject项目后台的地理信息管理部分(文章管理部分的编辑功能没有使用表格自带的编辑逻辑)。

表格实例截图(行内编辑窗口已弹出)

设计思路

数据源应该是json格式的二维数组。表格分为thead和tbody两部分。我的想法就是在thead中的首行使用属性的方式描述对应的列中的数据的显示逻辑和样式信息,从而实现基于jQuery自动填充表格数据。

HTML源码示例

1.

2.

3.

row_name="">

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

$this->column_name('article', 'id')?>

$this->column_name('article', 'language')?>

column_name('article', 'title')?>

column="getRowDataOfCategoryName">

$this->column_name('article_category', 'name')?>

column_name('article', 'create_by_user_id')?>

td_class="alignCenter">column_name('article',

'article_status_id')?>

column_name('article',

'modified')?>

td_class="clearFloatalignCenter" style="width: 60px;">

在tr中,使用了自定义属性row_id和row_name,row_id是用于标识行内数据的主键

的值,row_name则是标识行内数据的友好名称,通常用于删除前的确认时能够弹出更友好的信息,如“您是否确认删除文档欢迎光临本站?”

对于每一个th,自定义属性包括column,sortby和td_class。column属性用于指明如何显示该列的数据,sortby属性用于指明当用户要求对该字段排序时使用哪个字段排序(可选),td_class用于指明改列使用的样式class名称。th本身的class可以是desc(标识当前列降序),asc(标识当前列为升序),sortable(标识当前列可以被排序,当标识为可排序时,如果column 属性的值是字段名,那么可以省略sortby属性,否则sortby属性是必需的)或unsortable(标识当前列不能被排序,如不能排序则会忽视sortby属性的检查)

tr的row_name属性和th的column属性的值可以是字段名,也可以是javascript函数名。当为函数名时,其值为该函数的返回值。调用该函数时传入的参数为当前的数据行。例如json 数据为varjsonData = [{name: ‘Nick’}];,column指定为column=”getNameColumnString”,那么程序会尝试调用

1.for(vari = 0; i

JS部分源码说明

源码很长,同样只说明配置信息部分,以及应用举例。

1.var _configs = {

2.attributeRowId: 'row_id',//thead>tr声明每行的主键信息时使用的属性名称

3.attributeRowName: 'row_name',//thead>tr声明每行的名称的使用的属性名称

4.rowDataColumn: 'column', //thead>tr>td声明字段数据使用的属性名称

5.rowDataSortByColumn: 'sortby', //thead>tr>td声明排序字段使用的属性名称

6.rowColumnClass: 'td_class', //thead>tr>td声明数据列样式类使用的属性名称

7.rowColumnDescClass: 'desc', //thead>tr>td声明数据列降序排序时的样式类

8.rowColumnAscClass: 'asc', //thead>tr>td声明数据列升序排序时的样式类

9.rowColumnSortableClass: 'sortable', //thead>tr>td声明数据列未排序时的样式类

10.rowColumnDisableSortableClass: 'unsortable', //thead>tr>td声明数据列不能排序时的样式

11.rowAction: false,//tbody>tr被点击时触发的行为

12.autoDisableEventBubbling: true, //自动阻止tbody>tr>td中的鼠标事件冒泡

13.defaultRowClass: false, //默认的tbody>tr样式类

14.evenRowClass: 'even', //tbody中的偶数行的样式类

15.referenceForm: 'form:first', //排序时触发提交的表单

16.referenceSortbyItem: 'sortby', //保存排序参数的表单元素名称

17.referencePageItem: 'page', //保存页码参数的表单元素名称

18.sortable: false, //允许排序

19.paginatorSelector: false, //关联的分页器的元素选择器

20.dialogOverflowY: 'hidden'//当弹出编辑对话框时,如果内容超出对话框高度如何处理

21.};

应用原型说明:

pBase.grid(jQuery选择器(建议为id) table, JSON|HtmlElement data,

jsonObject|stringconfigs[, string url])

table为jQuery选择器,指明目标表格;

data为json数据,可能是{}格式或[{}]格式的json数据、HtmlElement元素或null,视configs 的值而定;

configs为{}格式的json数据或字符串,字符串取值范围为trash, edit, remove, update, reset, even之一;

url:当configs取值为trash或edit时需要指定该参数,值为url地址,当请求该地址时会自动追加参数id/当前行的id,请注意不要冲突。Configs为trash时会发送POST请求,否则会发送GET请求;

应用示例说明:

1.pBase.grid(‘#results’, [{id:1, name:’nick’}], {sortable: true}); //初始化,并将数据显示到表格

#results

2.pBase.grid(‘#results’, [{id:1, name:’nick’}], ‘reset’); //使用指定的数据重绘tbody区域

3.pBase.grid(‘#results’, $(‘#results tbodytr:firsttd:lastbutton:first’), ‘edit’, ‘edit.php’); //第二个

参数表示行中的一个操作按钮,程序会尝试获取该元素的父级中的第一个tr并取得行的编号,然后发送给指定的地址,并将返回的内容显示在对话框中

4.pBase.grid(‘#results’, $(‘#results tbodytr:firsttd:lastbutton:eq(1)’), ‘trash’, ‘trash.php’);//第二

个参数表示行中的一个操作按钮,程序会尝试获取该元素的父级中的第一个tr并取得行的编号,然后发送给指定的地址,并自动调用pBase.grid(‘#results’, ajaxResponseJson, ‘remove’)处理返回的结果。关于ajaxResponseJson的格式要求见后文。

5.pBase.grid(‘#results’, ajaxResponseJson, ‘update’); //根据ajaxResponseJson的值尝试

update相应的行,关于ajaxResponseJson的格式要求见后文。

6.pBase.grid(‘#results’, ajaxResponseJson, ‘remove’); //根据ajaxResponseJson的值尝试

remove相应的行,关于ajaxResponseJson的格式要求见后文。

7.pBase.grid(‘#results’, null, ‘even’); //重置偶数行标记

关于ajaxResponseJson的说明:

对于update,要求ajaxResponseJson包括以下的内容:

如果ajaxResponseJson不是json格式,那么会在弹出的对话框中显示该内容(如果该对话框是由grid的edit行为生成的话,否则什么都不会发生。也就是说,如果您是独立的使用该方法时,应该先确认返回值是json数据才能将其传入pBase.grid)。

否则应形如以下代码:{success: true/false, message: ‘null|string’, row: {…}}。如果未提供success参数则认为success为true,如果success为true而未提供message,那么message 则被认为是’Update Success’的翻译结果。当success为true时,row是必须的,是被编辑的行的json数据,如{id:1, name:’nick’}。程序会尝试在当前表格的tbody区域中寻找主键一致的行,如果找不到则在顶部新增一行,否则更新它。

对于remove,要求ajaxResponseJson必须是json数据,否则不会处理,其格式应形如

{success: true/false, rowId: ‘id’}。success是必须的,如果不是true则认为删除失败。rowId是被删除数据的主键值,程序会在当前表格的tbody区域中寻找主键一致的行并删除它(如果success为true的话)。

分页和表格功能的联合应用

在初始化表格时,通过参数paginatorSelector可以将表格与分页器关联,例如

1.pBase.grid('#articleGridTable', jsonArticles, {sortable: true, paginatorSelector:

'div.pagination[name=articles]'});

当使用表格的update或remove功能增加/删除行成功时,分页器内的数据会相应变化。当表格提交排序申请时,页码也会重置为第一页。

baseProject项目源码中后台的地理信息管理等页面均使用了该方法。

PHP+mysql分页原理和实例应用

PHP+mysql分页原理和实例应用 文章来源:https://www.doczj.com/doc/a94931416.html, 1、SQL语句中的limit用法 SELECT * FROM table …… limit开始位置 , 操作条数 开始位置从0开始 SELECT * FROM table …… limit 0 , 20 取最前面20条 SELECT * FROM table …… limit 10 , 20 11条到20条 2、学习分页的一种公式 (1)分页原理 所谓分页显示,也就是讲数据库中的结果集,一段一段显示出来 (2)需要的条件 怎么分段,当前在第几段 (每页有几条,当前再第几页) 前10条记录:select * from table limit 0,10 第11至20条记录:select * from table limit 10,10 第21至30条记录:select * from table limit 20,10 (3)得到公式 (当前页数 - 1 )X 每页条数 , 每页条数 Select * from table limit ($Page- 1) * $PageSize, $PageSize 3、parse_url()解析URL函数 parse_url() 是讲URL解析成有固定键值的数组的函数 $ua=parse_url("http://username:password@hostname/path?arg=value#anchor"); print_r($ua); 结果: Array ( [scheme] => http [host] => hostname [user] => username [pass] => password [path] => /path [query] => arg=value [fragment] => anchor )

jquery mobile + html5 手机app表单跨域提交实例(手机app开发html5 juqery moblie phonegap系列一)

jquery mobile + html5 手机app表单跨域提交实例(手机app开发html5 juqery moblie phonegap系列一) 第一次写博文,把学习过程记录下来也留个底,免得以后不用都忘了。 确定用html5 +jquery moblie+ phonegap 框架作为app开发的主框架。一开始在网上找了很多资料,跟着学习了一下,然后下了很多代码, 结果发现一个很大的问题,网上的代码很多都tmd有bug,不知道是不是故意的还是怎么地,让我也走了很多弯路。不多废话开始实战。 1、开发工具的准备: 1.1 、jquery mobile :这个不用下载,直接在你的html文件中间加上以下代码就行了, 1.2 、html5 : 下载一个支持html5的浏览器就行了,支持的最好的是 Google Chrome ,这个还可以调试js,不错推荐。 1.3 、myEclipse 版本6.0以上就行,自带jdk 和tomcat ,这个写jsp当做服务器用。 1.4 、editplus 这个是文本编辑器,写html代码用的。 这一节的开发工具就准备这些,我们这节只在浏览器上面看效果,下节讲打包发布到安卓手机上面还需要一些东西。 2、开发流程: 2.1 制作提交用户名和密码的html5表单。 2.2 通过jsonp方式跨域提交到tomcat服务器上的jsp文件。 2.3 服务程序返回ok。 3、开发步骤: 3.1 html5文件,用editplus新建一个html文件,名字随便起。然后copy以下代码: Contact Example

PHP实现分页跳转页面功能

$nextpage=$page+1; $SQL="select * from wyx_class order by wyx_classsort asc limit $offset,$each_page"; $Result=mysql_query($SQL); while($Row=mysql_fetch_array($Result)) { $wyx_id=$Row["wyx_id"]; $wyx_classname=$Row["wyx_classname"]; $wyx_classsort=$Row["wyx_classsort"]; ?> 编辑 删除  

1){ //如果页数大于1,则激活显示“前一页”的按钮 ?>

PHP JQUERY AJAX 提交表单FORM详解

PHP jQuery Ajax Form表单提交实例解析,包括创建一个表单html页面、添加JQuery代码、jquery ajax表单提交、jquery ajax表单验证、反馈信息给用户,php ajax 表单验证,php ajax提交表单,php ajax form验证,php ajax提交form。 本实例用到JQuery类库本身的函数和功能,所有表单信息利用PHPMailer类库邮件的形式发送。 1、创建一个表单html页面 表单部分html代码 这里用一个id为contact_form来包含整个包含信息;这是有意义的,稍后在JavaScript与用户交互信息的时候会用到,这里form标签的属性里面既包含了method和action;这个意义其实不大,因为Javascript直接操作DOM,所以没有这两个属性也是可以的;务必要给用户输入的input标签加独立的id,这和第二点原理类似。否则,无法看到正常的效果。 2、添加JQuery代码 这里假设你已经从JQuery官方网站上下载了JQuery基库,然后上传到了你的WEB服务器,并添加到你要使用的网页中。

现在新建一个JS文件 第1行的function()函数与Jquery的document.ready函数用法和功能相同,都是在DOM准备完毕后自动触发。第2行里面是一个单击触发函数click(),需要注意的是,在HTML一页提交按钮上需要放置一个名为“button”的Class,以模拟实现submit 提交表单的功能,从第二点我们可以看出,JQuery可以很好的将结构和逻辑分离。 3、jquery ajax表单验证 在实际应用中,这一步是必不可少的。在用户漏填,错填某个项目时,及时提示。

PHP Ajax jQuery 无刷新分页

PHP Ajax jQuery 无刷新分页 冰浪辅助:https://www.doczj.com/doc/a94931416.html, demo.php文件 ajax分页演示

php实现简单的分页功能

大家在浏览网页的时候,都会看到每篇文章都会会显示“上一页”“下一页”。下面跟大家分享一下如何用php实现简单的分页功能。 首先,先创建一个mysql表: SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `test` -- ---------------------------- DROP TABLE IF EXISTS `test`; CREATE TABLE `test` ( `id` int(5) NOT NULL AUTO_INCREMENT, `name` varchar(50) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1; 然后在里面插入数据: -- ---------------------------- -- Records of test -- ---------------------------- INSERT INTO `test` VALUES ('1', '张三'); INSERT INTO `test` VALUES ('2', '李四'); INSERT INTO `test` VALUES ('3', '王五'); INSERT INTO `test` VALUES ('4', '赵六');

INSERT INTO `test` VALUES ('5', '阿萨达'); INSERT INTO `test` VALUES ('6', '回火'); INSERT INTO `test` VALUES ('7', 'adada'); 然后新建一个php文件,连接数据库: header("content-type:text/html;charset=UTF-8");//防止页面乱码$link = mysql_connect("localhost","root","") or die("数据库连接失败"); $result = mysql_select_db("test",$link); mysql_query("SET NAMES 'utf8'");//设置数据库连接编码 然后调取数据,并且计算出该表里面总共有多少条数据: function selectdata(){ $sql = "SELECT name FROM `test` ORDER BY id desc"; $arr = array(); $result = mysql_query($sql); while ($array = mysql_fetch_row($result)) { $arr[] = $array; } return $arr; } function selectdatabypages($limit1,$limit2){ $sql = "SELECT name FROM `test` ORDER BY id desc LIMIT $limit1,$limit2";

JQuery提交表单 Form.js官方插件介绍

JQuery提交表单Form.js官方插件介绍 Form插件,支持Ajax,支持Ajax文件上传,功能强大,基本满足日常应用。 1、JQuery框架下载 https://www.doczj.com/doc/a94931416.html,/ 2、Form插件下载 https://www.doczj.com/doc/a94931416.html,/jquery/form/#download 3、Form插件的简单入门 第二步:jquery.js和form.js文件的包含

表单插件API提供了几个方法,让你轻松管理表单数据和进行表单提交。 ajaxForm 增加所有需要的事件监听器,为AJAX提交表单做好准备。ajaxForm不能提交表单。在document的ready函数中,使用ajaxForm来为AJAX提交表单进行准备。ajaxForm接受0个或1个参数。这个单个的参数既可以是一个回调函数,也可以是一个Options对象。 可链接(Chainable):可以。 实例: $('#myFormId').ajaxForm(); ajaxSubmit 马上由AJAX来提交表单。大多数情况下,都是调用ajaxSubmit来对用户提交表单进行响应。ajaxSubmit接受0个或1个参数。这个单个的参数既可以是一个回调函数,也可以是一个Options对象。 可链接(Chainable):可以。 实例: // 绑定表单提交事件处理器 $('#myFormId').submit(function() { // 提交表单 $(this).ajaxSubmit(); // 为了防止普通浏览器进行表单提交和产生页面导航(防止页面刷新?)返回false return false; }); formSerialize 将表单串行化(或序列化)成一个查询字符串。这个方法将返回以下格式的字符串:name1=value1&name2=value2。 可链接(Chainable):不能,这个方法返回一个字符串。 实例: var queryString = $('#myFormId').formSerialize(); // 现在可以使用$.get、$.post、$.ajax等来提交数据 $.post('myscript.php', queryString); fieldSerialize

php试题4

PHP动态网站开发试卷 一,单选题(3分×20,共60分) 1.选择合适的答案填入空白处( ) PHP 是一种______脚本语言,基于______引擎。PHP 最常被用来开发动态的______内容,此外,它同样还可被用来生成______(以及其他)文档。B A.动态,PHP,数据库,HTML B.嵌入式,Zend,HTML,XML C.基于Perl 的,PHP,Web,静态 D.嵌入式,Zend,Docbook 文档,MySQL 2.以下哪种标签不是PHP 起始/结束符?( ) A.<% %> B.// C. D./* */ 3.以下代码哪个不符合PHP 语法?( ) A.$_10 B.${“MyVar”} C.&$something D.$10_somethings 4.如何访问会话变量(session)?( ) A.通过$_GET B.通过$_POST C.通过$_REQUEST D.以上都不对 5.print()和echo()有什么区别?( ) A.print()能作为表达式的一部分,echo()不能B.echo()能作为表达式的一部分,print()不能 C.echo()能在CLI(命令行)版本的PHP 中使用,print()不能 D.print()能在CLI(命令行)版本的PHP 中使用,echo()不能6.配置MySql服务器时可以设置一个管理员账号,其名称是( ) A.admin B.sa C.root D.system 7.如果你的脚本无法正确识别一个存储于另一个平台上的文件的行结尾,你该怎么办?( ) A. 改变auto_detect_line_ending的设置 B. 用正则表达式侦测行的最后一个字母C. 用fpos() D. 用ftok() 8.索引数组的键是______,关联数组的键是______。( ) A. 浮点,字符串 B. 正数,负数 C. 偶数,字符串 D. 整型,字符串 9.如何在类的内部调用mymethod 方法?( ) A. $self=>mymethod(); B. $this->mymethod(); C. $current->mymethod(); D. $this::mymethod(); 10.借助继承,我们可以创建其他类的派生类。那么在PHP 中,子类最多可以继承几个父类?( ) A. 1 个 B. 2 个 C. 取决于系统资源 D. 3 个 11.运行时(run-time)包含一个PHP 脚本使用______,而编译时(compile-time)包含一个PHP 脚本使用______。( ) A. include_once, include B. require, include C. require_once, include D. 以上皆可 12.如果不给cookie 设置过期时间会怎么样?( ) A. 立刻过期 B. 永不过期 C. cookie 无法设置 D. 在浏览器会话结束时过期 13.使用header()函数,它的功能是?( ) A.重定向浏览器 B.页眉函数 C.处理数据头的函数 D.以上都不对 14.下面那个函数是创建一个基于调色板的图像( ) A.imagecreatetruecolor() B.imagecreate() C.imagecolorallocate() D.imagedestroy() 15.输出一个扩展名为.jpg的图片,选用下面那个函数,进行输出( ) A.imagegif() B.imagejpeg() C.imagepng D.以上都不对 16.以下脚本输出什么?$time = strtotime ('2004/01/01');echo date ('H:\i:s', $time); ?> ( ) A. 0:00:00 B. 12:00:00 C. 00:i:00 D. 12:i:00 17.以下脚本在Windows 系统上输出什么?echo strtotime ("November 11, 1952");?> ( ) A. -14462 B. 14462 C.-1 D.0 18.以下代码运行结果( ) A.字符串与整型不可以相加,报错 B.100 C. 101 D.不确定 19.以下代码执行结果为:( )

表单提交中文乱码问题

jquery.form 提交中文时乱码(GBK 乱码)的解决方案 分类:jQuery2009-11-18 21:58 1758人阅读评论(0) 收藏举报 在使用jsp开始时,一不小心就会出现中文乱码的情况。通常可以使用如下方法解决: 第一种解决方法: 从jsp到servlet统一使用utf-8编码.全部使用utf-8编码能省去很多麻烦,但一点不足是utf-8编码对汉字是使用3-4个字节,会加大网络传输量。 第二种方法: 1.jsp页面使用GBK 2.使用servlet过滤器设置request.setCharacterEncoding("GBK");google一下就能找到很多怎么使用过滤器转换编码。 以上两种方法能解决大部分的乱码问题,特别是第一种方法,能解决使用ajax提交时的中文乱码问题。如果采用第二种方法,那么在使用ajax提交表单时仍然会有中文乱码。这是因为ajax方式提交时js使用的是utf-8的编码,过滤器使用gbk进行转码就不正确了,应该使用utf-8进行转码。要解决这个问题,网上也有很多个版本,其中一个是我曾经采用的在客户端使用encodeURI,然后再在服务器端进行URLDecoder.decode,这种方案在偶尔处理一下中文是可行的,但是如果页面有大量数据录入,那么这种方案是不可行的。有没有好的解决方法呢?在经过新一轮的google之后,还是找到了方法。参考 https://www.doczj.com/doc/a94931416.html, /topic/157698?page=1。原理就是根据httpheader中的内容来区分是ajax方式请求还是普通的请求。在jquery1.2.6中,ajaxSettings默认设置contentType 为"application/x-www-form -urlencoded",在ajax方法中设置 xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");,我们只要在servlet中根据这两个参数值来判断是不是通过xmlhttprequest发起的请求。这里值得一提的是jquery 在提交form 时对参数进行了encodeURIComponent调用,参见param方法 [javascript]view plainc opy 1.jQuery .each( a, function(){ 2. s.push( encodeURIComponent(this .name) + "=" + encodeURIComponent( thi s .value ) ); 3.});

php,表格制作

竭诚为您提供优质文档/双击可除 php,表格制作 篇一:使用php和jquery制作分页和表格 使用php和jquery制作分页和表格 如果您已经下载了本站提供的baseproject项目源码,后台中列表页面均可作为示例,其中文章列表页面的功能最为丰富。如果您没有下载该源码,相关的js文件可以从获得,示例页面为页面。以下是后台文章列表页面的截图。 分页和表格功能实例截图分页功能详解 分页功能用于当目标数据过多时,为提高页面展示速度采用的一种手段。本文中的分页功能借用了zendFramework 中的zend_paginator对象,分页适配器为 zend_paginator_adapter_null。该适配器也是最简单 易用的一个。工作原理 在php端,分页功能的基本参数为记录总数($countRows)、每页显示的记录数 ($rowsperpage)、当前页码($page默认值为1),页码 数量($items指每次在页面上显示多少个页码,建议为单数)。其他参数可以通过计算得到:

1.页码合计($countpages)取不小于 $countRows/$rowsperpage的整数; 2.起始页码和结束页码的计算方式太长不写了; 3.页码列表:从起始页码到结束页码的页码组成的数组,如array(4,5,6,7,8) 在html端,必要的参数为php端计算得出的数据,同 时需要指定一个用于显示分页信息的html元素。然后使用jquery根据参数动态生成html并将其插入到指定的html元素中 就行了。 php示例代码详解1. 2.publicfunctionarticlesaction(){$pagenumber=$this- >getRequest()->getparam(page,1);//获取当前页码,如果未指定则设为1 3.$sortby=$this->getRequest()->getparam(sortby);// 获取sortby设置 4.if(empty($sortby)||!preg_match(/^[a-z0-9_-]+(asc| desc)$/i,$sortby)){ 5.//如果sortby为空或者不符合格式要求则使用以下

php分页类代码

php分页类代码 GetPagerContent(); echo $pageStr; */ class Pager { private $pageSize = 10; private $pageIndex; private $totalNum; private $totalPagesCount; private $pageUrl; private static $_instance; public function __construct($p_totalNum, $p_pageIndex, $p_pageSize = 10,$p_initNum=3,$p_initMaxNum=5) { if (! isset ( $p_totalNum ) || !isset($p_pageIndex)) { die ( "pager initial error" ); } $this->totalNum = $p_totalNum; $this->pageIndex = $p_pageIndex; $this->pageSize = $p_pageSize; $this->initNum=$p_initNum; $this->initMaxNum=$p_initMaxNum;

2012年网站开发php试题

一、单项选择题(每题2分,共60分) 1.函数header()不可以被用来(B)。 A、转到指定的url B、引用js文件 C、设置HTTP首部信息状态码 D、提示下载文件 2.下列函数中哪一项不是字符串操作函数(B)。 A、tirm() B、isset() C、explode() D、strlen() 3.在PHP中,error_reporting(0)表示(A)。 A、表示关闭所有的错误报告,除编译错误外。 B、表示打开所有的错误报告。 C、表示关闭所有的错误报告,包括编译错误。 D、表示打开所有的错误包括,不包括编译错误。 4.下列有关获取上传文件的信息的预定义数据变量的写法正确的是(D)。 A、$FILES B、_FILES C、__FILES D、$_FILES 5.在PHP中,有关CMS的说法错误的是(D)。 A、CMS是Content Management System的缩写 B、CMS的中文意思是“内容管理系统” C、CMS可以被用来建立网站 D、CMS是一种PHP的开发框架 6.下列选项中对访问控制符public的说法正确的是(B)。 A、有效范围为类的内部和外部,不能被子类所继承。 B、有效范围为类的内部和外部,可以被子类所继承。 C、有效范围为类的内部,可以被子类所继承。 D、有效范围为类的内部,不能被子类所继承。 7.setcookie("vipname","tom",time()+1000); 有关上述代码的描述错误的是(D)。 A、该代码设置了一个变量名为vipname的cookie B、该代码设置了一个变量值为tom的cookie C、该变量的存活期限为1000秒 D、该变量的存活期限为1秒 8.使用$_FILES获取上传文件的大小,大小的单位是(C)。 A、KB B、MB C、B D、BB 9.下列有关于phpmyadmin的说法中正确的是(B)。 A、是一种php专属的web服务器 B、是一种MySQL的管理工具

js多功能分页组件layPage使用方法详解

这篇文章主要为大家详细分享了laypage分页控件使用实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文的主要目的就是为大家分享layPage 多功能的js分页组件具体操作方法,供大家参考,具体内容如下 php 部分 function index(){   header('Content-Type:text/html;charset=utf-8');   // 获取当前页码,默认第一页,设置每页默认显示条数   $nowpage = I('get.page', 1, 'intval');   $limits = 8;   // 获取总条数   $count = M('Article') -> where(array('status'=>array('egt', 0))) -> count();   // 计算总页面   $allpage = ceil($count / $limits);   $allpage = intval($allpage);   $lists = M('Article') -> where(array('status'=>array('egt', 0)))           -> page($nowpage, $limits) // page 方法分页          -> order('createtime desc')           -> select();   // 跳转分页输出   $this -> assign('lists', $lists);   $this -> assign('allpage', $allpage);   $this -> assign('nowpage', $nowpage);   $this->display();   /*   // ajax 分页输出   $info = array('lists'=>$lists,'allpage'=>$allpage,'nowpage'=>$nowpage);   $this->ajaxReturn($info,'json');   */  } js 中laypage(新版本) 跳转分页 // 分页 laypage({   cont: 'show_pages', // 分页容器   pages: "{$allpage}",   // 总页数   skip: true, //是否开启跳页   curr: function(){     var page = "{$nowpage}"; // 当前页(后台获取到的)     return page ? page : 1; // 返回当前页码值   }(),   jump: function(e, first){ //触发分页后的回调(单击页码后)     if(!first){ //一定要加此判断,否则初始时会无限刷新

jquery.form.js中文API

jquery.form.js中文API 关键字: jquery.form.js 英文原文:https://www.doczj.com/doc/a94931416.html,/jquery/form/#api 表单插件API提供了几个方法,让你轻松管理表单数据和进行表单提交。 ajaxForm 增加所有需要的事件监听器,为AJAX提交表单做好准备。ajaxForm不能提交表单。在document的ready函数中,使用ajaxForm来为AJAX提交表单进行准备。ajaxForm接受0个或1个参数。这个单个的参数既可以是一个回调函数,也可以是一个Options对象。 可链接(Chainable):可以。 实例: Java代码 1$('#myFormId').ajaxForm(); ajaxSubmit 马上由AJAX来提交表单。大多数情况下,都是调用ajaxSubmit来对用户提交表单进行响应。ajaxSubmit接受0个或1个参数。这个单个的参数既可以是一个回调函数,也可以是一个Options对象。 可链接(Chainable):可以。 实例: Java代码 2// 绑定表单提交事件处理器 3$('#myFormId').submit(function() { 4 // 提交表单 5 $(this).ajaxSubmit(); 6 // 为了防止普通浏览器进行表单提交和产生页面导航(防止页面刷新?)返回false 7return false; 8});

formSerialize 将表单串行化(或序列化)成一个查询字符串。这个方法将返回以下格式的字符串:name1=value1&name2=value2。 可链接(Chainable):不能,这个方法返回一个字符串。 实例: Java代码 9var queryString = $('#myFormId').formSerialize(); 10 11// 现在可以使用$.get、$.post、$.ajax等来提交数据 12$.post('myscript.php', queryString); fieldSerialize 将表单的字段元素串行化(或序列化)成一个查询字符串。当只有部分表单字段需要进行串行化(或序列化)时,这个就方便了。这个方法将返回以下格式的字符串:name1=value1&name2=value2。 可链接(Chainable):不能,这个方法返回一个字符串。 实例: Java代码 13var queryString = $('#myFormId .specialFields').fieldSerialize(); fieldV alue 返回匹配插入数组中的表单元素值。从0.91版起,该方法将总是以数组的形式返回数据。如果元素值被判定可能无效,则数组为空,否则它将包含一个或多于一个的元素值。 可链接(Chainable):不能,该方法返回数组。 实例: Java代码

jQuery formValidator使用说明

jQuery formValidator使用说明 说明:jQuery formValidator表单验证插件,它是基于jQuery类库,实现了js 脚本于页面的分离。对一个表单对象,你只需要写一行代码就可以轻松实现20种以上的脚本控制。现支持一个表单元素累加很多种校验方式,采用配置信息的思想,而不是把信息写在表单元素上,能比较完美的实现ajax请求。并结合jquery.boxy实现遮罩提示。 一、所需元素 jquery-1.3.2.js (需要jquery-1.3.2以上版本) formValidator.js (表单验证基础js) formValidatorRegex.js (表单验证所需正则js) jquery.boxy.js (遮罩提示js) validator.css (表单验证样式) boxy.css (遮罩提示样式) 二、使用说明 a)使用方法 i.加载所需js和css文件 ii.初始化验证控件 ($.formValidator.initConfig({formid:"form1",onerror:functi on(msg){Boxy.alert("

"+msg+"
",null,{title: "提示信息"});}});) iii.表单验证 ($("#nl").formValidator({onshow:"请输入的年龄(1-99岁之间)",onfocus:"只能输入1-99之间的数字哦",oncorrect:"恭喜你,你输对了 "}).inputValidator({min:1,max:99,type:"value",onerrormin:"你输入的值必须大于等于1",onerror:"年龄必须在1-99之间,请确认"}).defaultPassed(); });) b)参数说明: i.初始化验证控件:initConfig 1.Formid (form 表单 id) 2.Debug (是否使用debug模式,默认false) 3.Validatorgroup (验证表单分组) 4.Alertmsg (alert输出提示信息,默认false) 5.Boxyalertmsg (boxy.alert输出提示信息,默认false) 6.Validobjectids (多个表单id,用“,”分隔) 7.Onsuccess (成功时回调涵数) 8.Onerror (失败时回调涵数) 9.Submitonce (是否提交表单,默认false) 10.Autotip (是否使用自动验证提示,默认false) ii.表单验证 验证方式有如下几种 1.formValidator (基础验证) 初始参数: validatorgroup : "1",

php代码

PHP常用代码大全 PHP常用代码 1、连接MYSQL数据库代码 2、读取数据库,并实现循环输出 循环的内容......... 3、如何实现分页,包括两个函数,两个调用 1)两个函数

function genpage(&$sql,$page_size=2) { global $prepage,$nextpage,$pages,$sums; //out param $page = $_GET["page"]; $eachpage = $page_size; $pagesql = strstr($sql," from "); $pagesql = "select count(*) as ids ".$pagesql; $conn = mysql_query($pagesql) or die(mysql_error()); if($rs = mysql_fetch_array($conn)) $sums = $rs[0]; $pages = ceil(($sums-0.5)/$eachpage)-1; $pages = $pages>=0?$pages:0; $prepage = ($page>0)?$page-1:0; $nextpage = ($page<$pages)?$page+1:$pages; $startpos = $page*$eachpage; $sql .=" limit $startpos,$eachpage "; } //显示分页 function showpage() { global $page,$pages,$prepage,$nextpage,$queryString; //param from genpage function $shownum =10/2; $startpage = ($page>=$shownum)?$page-$shownum:0; $endpage = ($page+$shownum<=$pages)?$page+$shownum:$pages;

jQuery formValidator表单验证插件

jQuery formValidator表单验证插件是什么? jQuery formValidator表单验证插件,它是基于jQuery类库,实现了js脚本于页面html代码的分离。你可以划分多个校验组,每个组的校验都是互不影响。对一个表单对象,你只需要写一行代码就可以轻松实现无数种(理论上)脚本控制。目前支持5种大的校验方式,分别是:inputValidator(针对input、textarea、select控件的字符长度、值范围、选择个数的控制)、compareValidator(提供2个对象的比较,目前可以比较字符串和数值型)、ajaxValidator(通过ajax到服务器上做数据校验)、regexValidator(提供可扩展的正则表达式库)、functionValidator (可使用外部函数来做校验) 本插件于其他校验控件最大的区别有3点: 1、校验功能可以扩展。 对中文、英文、数字、整数、实数、Email地址格式、基于HTTP协议的网址格式、电话号码格式、手机号码格式、货币格式、邮政编码、身份证号码、QQ号码、日期等等这些控制,别的表单校验控件是代码里写死的,而formValidator是通过外部js文件来扩展的,你可以通过写正则表达式和函数来无限的扩展这些功能。 2、实现了校验代码于html代码的完全分离。 你的所有信息都无需配置在校验表单元素上,你只要在js上配置你的信息。使美工(界面)和javascript工程师的工作不交织在一起 3、你只需写一行代码就能完成一个表单元素的所有校验。你只需要写一行代码就能完成一下所有的控制 ?支持所有类型客户端控件的校验 ?支持jQuery所有的选择器语法,只要控件有唯一ID和type属性 ?支持函数和正则表达式的扩展。提供扩展库formValidatorReg.js,你可以自由的添加、修改里面的内容。 ?支持2种校验模式。第一种:文字提示(showword模式);第二种:弹出窗口提示(showalert模式) ?支持多个校验组。如果一个页面有多个提交按钮,分别做不同得提交,提交前要做不同的校验,所以你得用到校验组的功能。 ?支持4种状态的信息提示功能,可以灵活的控制4种状态是否显示。第一种:刚打开网页的时候进行提示;第二种:获得焦点的时候进行提示;第三种:失去焦点时,校验成功时候的提示;第四种:失去焦点时,校验失败的错误提示。 ?支持自动构建提示层。可以进行精确的定位。 ?支持自定义错误提示信息。

相关主题
文本预览
相关文档 最新文档