`
huobengluantiao8
  • 浏览: 1077264 次
文章分类
社区版块
存档分类
最新评论

PHP jqGrid 表格数据更新帮助代码

 
阅读更多

数据操作类:

<?php
	class DBHelper
	{
		public $conn;
		/**
		 * 得到数据库连接 成功返回true,失败返回false
		 * Enter description here ...
		 * @param unknown_type $user
		 * @param unknown_type $pwd
		 * @param unknown_type $dbname
		 * @param unknown_type $host
		 */
		function getConn($user,$pwd,$dbname,$host = "localhost")
		{
		    $this->conn = mysql_connect($host,$user,$pwd);
		    if (!$this->conn)
		    {
		    	return false;
		    }
			mysql_select_db($dbname,$this->conn);	
			return true;	    	
		}
		/**
		 * 返回查询的result
		 * @param unknown_type $table 待查询的表
		 * @param unknown_type $cols 待查询的列的数组 如array("col1","col2");
		 * 如果想给列 重命名 则使用 array("newcol1"=>"col1","newcol2"=>"col2") ; 
		 * null 表示查询所有
		 * @param unknown_type $conditions where后的条件数组按如此格式来 array("col"=>array("> xx"=>"AND","< yy"=>"")) 表示 col 列 大于 xx 
		 * 并且小于yy的结果 。array("col"=>array("LIKE 'xx%'"=>"")) 模糊搜索
		 * 注意xx,yy 为字符串时要用''扩住,中间的条件才能用AND 或者OR,末尾条件用""表示
		 * null 表示无条件
		 * @param unknown_type $order 排序数组 如 array("col1"=>"asc","col2"=>"desc"); null 表示默认排序
		 * @param unknown_type $limit 数据条目,如 array(1=>10) 表示limit 1,10;  null 表示默认
		 */
		function getRow($table,$cols,$conditions,$order,$limit)
		{
			$sql = "SELECT ";
			$tmp = "";
			if($cols != null){
				while((list($k,$v) = each($cols)) !== false)
				{
					$tmp =$tmp.$v.",";
					if(!is_numeric($k)){
						$tmp = substr($tmp, 0,strlen($tmp)-1)." as {$k},";
					}
				}
				$tmp = substr($tmp, 0,strlen($tmp)-1)." FROM {$table}";
			}
			else {
				$tmp = "* FROM {$table}";
			}
			$sql = $sql.$tmp;
			if($conditions != null)
			{
				$tmp = " WHERE ";
				while((list($k,$v) = each($conditions)) !== false)
				{
					if((list($k1,$v1) = each($v)) !== false){
						$tmp = $tmp."{$k} {$k1} {$v1}"; 
					}
				}
				$tmp = rtrim($tmp);
				$sql = $sql.$tmp;
			}
			if($order != null){
				$tmp = " ORDER BY ";
				while((list($k,$v) = each($order)) !== false)
				{
					$tmp = $tmp."{$k} {$v},"; 
				}
				$tmp = substr($tmp, 0,strlen($tmp)-1);
				$sql = $sql.$tmp;
			}
			if($limit != null){
				$tmp = " limit ";
				if((list($k,$v) = each($limit)) !== false){
					$tmp = $tmp."{$k},{$v}";
				}
				$sql = $sql.$tmp;
			}
			//echo $sql;
			$result = mysql_query($sql);
			return $result;
		}
		
		function closeDb(){
			if($this->conn != null)
				mysql_close($this->conn);
		}
		
		/**
		 * 
		 * 返回mysql标准时间字符串
		 * 注意这个date的获得和php的配置有关系,而php默认返回的UTC
		 * 如果不符合你的标准,需要在php.ini中将配置做相应的更改
		 */
		function getDateStr()
		{
			return date("Y-m-d H:i:s");
		}
	}

?>

response封装:

<?php
	include 'dbhelper.php';
	
	class Response{
		
		public $total = 0;
		public $records = 0;
		public $page; // get the requested page
		public $rows =array();
		private  $limit; // get how many rows we want to have into the grid
		private  $sidx; // get index row - i.e. user click to sort
		private  $sord; // get the direction
		
		function Response($page,$rows,$sidx,$sord){
			$this->page = $page;
			$this->limit = $rows;
			$this->sidx = $sidx;
			$this->sord = $sord;
			if(!$this->sidx)
				$this->sidx = 1;
		}
		/**
		 * 通过指定条件查询将结果填入response中
		 * @param unknown_type $table 表名
		 * @param unknown_type $cols 待查询的列的数组 如array("col1","col2");
		 * 如果想给列 重命名 则使用 array("newcol1"=>"col1","newcol2"=>"col2") 为null 表示查询所有
		 * @param unknown_type $conditions where后的条件数组按如此格式来 array("col"=>array("> xx"=>"AND","< yy"=>"")) 表示 col 列 大于 xx 
		 * 并且小于yy的结果。array("col"=>array("LIKE 'xx%'"=>"")) 模糊搜索
		 * 注意xx,yy 为字符串时要用''扩住,中间的条件才能用AND 或者OR,末尾条件用""表示
		 * null 表示无条件
		 *     ;null 表示无条件
		 */
		 
		public function fillResponse($table,$cols,$conditions){
			$helper = new DBHelper();
			if($helper->getConn("root", "root", "dbcd")){
				$result = $helper->getRow($table, null, $conditions,null,null);
				if($result){
					$count = mysql_num_rows($result);
					$this->records = $count;
					if($count > 0){
						$this->total = ceil($count/$this->limit);
					}
					else{
						$this->total = 0;
					}
					if($this->page > $this->total)
						$this->page = $this->total;
					$start = $this->limit*$this->page - $this->limit;
					if($start < 0) $start = 0;
					
					$result = $helper->getRow($table, $cols, $conditions, array($this->sidx=>$this->sord), array($start=>$this->limit));
					$i = 0;
					while(($row=mysql_fetch_array($result,MYSQL_ASSOC))!=false){
						$this->rows[$i] = $row;
						$i++;
					}
				}
				else{
					// 查询失败
					
					
				}
				$helper->closeDb();
			}
			else {
				// 未成功连接数据库
			}
		}	
	}
	

?>

使用:

include 'php/response.php';
	$conditon = null;
	$response = new Response($_GET['page'], $_GET['rows'], $_GET['sidx'], $_GET['sord']);
	if(filter_has_var(INPUT_GET, "searchField")){
		$conditon = array($_GET['searchField']=>array("LIKE '{$_GET['searchString']}%'"=>""));
	}
	$response->fillResponse("factory",null, $conditon);
	print_r(json_encode($response));


As mentioned above posting search data differs from custom and toolbar searching. When the find button is clicked, jqGrid adds three parameters to the url (again with _search=true), in name=value pairs:

  • sField: the 'searchField', the value comes from the index in colModel
  • sValue: the 'searchString', the value is the entered value
  • sOper: the 'searchOper', the value is the type of search - see sopt array

For example if the field index is invid, operation is equal, and the searched value is 123, then the string that is posted to the server look like:

http://localhost/demo35/server.php?...&searchField=invid&searchString=123&searchOper=eq

详见:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:singe_searching




分享到:
评论

相关推荐

    jqGrid 3.5源码+DEMO+DOC

    jqGrid是一款基于jQuery的开源数据网格插件,用于在网页上展示和操作表格数据。它在Web开发领域中被广泛使用,特别是在需要处理大量结构化数据的场景下。jqGrid 3.5版本是该插件的一个较早版本,但仍然具有丰富的...

    table表格样式利用jqgrid实现

    在网页开发中,表格(Table)是展示数据的重要方式,而jqGrid是一个强大的JavaScript库,专门用于创建交互式、功能丰富的表格。本教程将深入探讨如何利用jqGrid来实现美观且功能丰富的表格样式。 首先,我们需要...

    jqGrid中文说明,对jQgrid表格关键使用方法中文说明

    jqGrid中文说明,对jQgrid表格关键使用方法中文说明 jqGrid是基于jQuery的数据表格插件,用于将需要展示的数据动态的展示在页面上,即动态画出表格,并封装了增、删、改、查、分类显示、在线编辑修改等功能。下面将...

    JQGrid系列教程 代码

    JQGrid还有许多其他高级特性,如行选择、行合并、子表格、树形结构、导出数据等。这些可以通过配置相应的参数或使用插件实现。 通过学习这个JQGrid系列教程,您将能够熟练地掌握JQGrid的使用,从而在项目中创建...

    jqgriddemo,样式漂亮,可以直接使用

    2. **操作功能**:用户可以方便地对表格数据进行排序、搜索、分页,同时支持单行或多行选择。此外,jqGrid还支持行内编辑,允许用户直接在表格中修改数据。 3. **数据处理**:jqGrid支持客户端和服务器端的数据过滤...

    jqGrid表格应用之新增与删除数据附源码下载

    jqGrid可以结合fancybox等插件完成超酷的弹出层效果,通过与php后台交互,可以轻松完成数据的添加与详情查看,而这个过程完全是一个ajax异步通信过程,是一个非常友好的富客户端应用。 下面给大家展示了效果图,喜欢...

    jqGrid demo (完整版)

    这个"jqGrid demo (完整版)"提供了一个全面的示例,可以帮助开发者更好地理解和应用 jqGrid,无论是在 PHP 或 JSP 环境中。 1. **jqGrid 简介** jqGrid 提供了丰富的功能,包括分页、排序、搜索、编辑、添加、...

    PHP jqGrid 数据网格显示并分页

    在PHP和jQuery的世界里,jqGrid是一个非常流行的前端数据展示组件,它提供了强大的表格展示、数据操作和分页功能。本实例将详细讲解如何利用PHP和jqGrid来创建一个带有分页功能的数据网格。 首先,jqGrid是一个基于...

    jqGrid3.6中文文档

    jqGrid 是一个基于 jQuery 的数据网格插件,用于在网页中展示和操作表格数据。它遵循 B/S(浏览器/服务器)架构,服务器负责数据管理,而客户端负责数据显示和交互。jqGrid 提供了一种高效的方式来展示数据库中的...

    JqGrid中文API文档

    JqGrid是一款强大的JavaScript数据网格组件,用于在Web应用程序中展示和操作数据。它基于jQuery库,提供了丰富的功能,如分页、排序、过滤、编辑和格式化数据。本中文API文档将帮助开发者深入理解并有效利用JqGrid的...

    jqgrid_codeigniter_library

    在CodeIgniter框架中,`jqGrid`可以作为一个库被集成,以帮助开发者更方便地处理数据表格,实现分页、排序、搜索等功能。`jqgrid_codeigniter_library`可能是这样一个专门用于整合`jqGrid`与CodeIgniter的库。 在`...

    jqgrid后台连接数据库

    jqGrid 是一个高级、响应式、用户友好的 jQuery 表格插件,它允许开发者在网页上显示和编辑来自各种数据源(如 JSON、XML、本地或远程数据库)的数据。jqGrid 提供了丰富的功能,包括排序、搜索、分页、列拖拽、行...

    jqgrid实例保存

    首先,jqGrid的核心功能是展示表格数据,并提供丰富的交互性。它支持Ajax异步加载,可以轻松地从服务器获取数据并动态显示在网格中。在"jqgrid实例保存"中,我们需要关注的是如何处理用户对数据的修改,并将这些变化...

    jqgrid使用

    - **编辑与添加**:启用编辑和新增功能,可以对表格数据进行增删改操作。 - **自定义列**:通过`colModel`配置列的显示属性,如宽度、对齐方式、是否可编辑等。 - **行选择**:提供单选和多选模式,可以获取选中行的...

    jqgrid 简单实例

    本实例将深入介绍如何使用jqGrid来创建一个基本的数据表格。 ### 一、jqGrid安装与引入 首先,你需要在项目中引入jqGrid的相关文件。这通常包括jQuery库、jqGrid的核心JavaScript文件以及其CSS样式表。例如: ```...

    jqgrid.zip

    jqGrid是一款功能强大的JavaScript表格插件,主要用于在Web应用程序中展示和操作数据。它基于jQuery库,因此得名jqGrid,提供了丰富的特性和灵活的配置选项,使得在B/S(Browser/Server)架构中实现数据网格展示变得...

    jquery.jqGrid-4.3.2.zip

    《jQuery.jqGrid 4.3.2:构建高效数据网格的全面解析》 jQuery.jqGrid 是一个基于 jQuery 的开源插件,专为构建功能丰富的数据网格而设计。在4.3.2版本中,它提供了强大的数据展示、排序、筛选、编辑等功能,使得在...

    jqgrid样式

    4. **导出与打印**:利用`gridToExcel`和`jqPrint`等插件,可以将表格数据导出到Excel或打印。 ### 五、jqgrid_demo38与jqgrid子文件 `jqgrid_demo38`和`jqgrid`可能是包含jqGrid示例代码和资源的文件或目录。它们...

    ThinkPHP_JqGrid_Dev_Beginner

    1. JqGrid功能:JqGrid支持表格数据的分页、排序、过滤、编辑等功能,提供多种主题样式,支持AJAX异步数据加载,能实现复杂的数据操作。 2. 安装与引入:在HTML页面中通过CDN或本地引入JqGrid的JavaScript和CSS文件...

    JQGrid例子

    例如,你可以通过AJAX从服务器获取数据,然后利用JQGrid的API动态填充表格,并实现各种交互功能。同时,通过监听JQGrid的事件,可以与后端进行深度集成,实现数据的增删改查。 5. 扩展功能: JQGrid还支持列拖动、...

Global site tag (gtag.js) - Google Analytics