在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Part1:实例 1 /** 2 * 取得上次的过滤条件 3 * @param string $param_str 参数字符串,由list函数的参数组成 4 * @return 如果有,返回array('filter' => $filter, 'sql' => $sql);否则返回false 5 */ 6 function get_filter($param_str = '') 7 { 8 $filterfile = basename(PHP_SELF, '.php');//string basename ( string 9 if ($param_str) 10 { 11 $filterfile .= $param_str; 12 } 13 if (isset($_GET['uselastfilter']) && isset($_COOKIE['ECSCP']['lastfilterfile']) 14 && $_COOKIE['ECSCP']['lastfilterfile'] == sprintf('%X', crc32($filterfile))) 15 { 16 return array( 17 'filter' => unserialize(urldecode($_COOKIE['ECSCP']['lastfilter'])), 18 'sql' => base64_decode($_COOKIE['ECSCP']['lastfiltersql']) 19 ); 20 } 21 else 22 { 23 return false; 24 } 25 } 1 /** 2 * 保存过滤条件 3 * @param array $filter 过滤条件 4 * @param string $sql 查询语句 5 * @param string $param_str 参数字符串,由list函数的参数组成 6 */ 7 function set_filter($filter, $sql, $param_str = '') 8 { 9 $filterfile = basename(PHP_SELF, '.php'); 10 if ($param_str) 11 { 12 $filterfile .= $param_str; 13 } 14 setcookie('ECSCP[lastfilterfile]', sprintf('%X', crc32($filterfile)), time() + 600); 15 setcookie('ECSCP[lastfilter]', urlencode(serialize($filter)), time() + 600); 16 setcookie('ECSCP[lastfiltersql]', base64_encode($sql), time() + 600); 17 }
1 /** 2 * 供货商资源管理 3 * @param bool $is_pagtion 4 * @return array $arr 5 */ 6 function suppliers_resource_manage($is_pagtion=true) 7 { 8 global $db,$ecs; 9 $result = get_filter(); 10 if ($result === false) 11 { 12 $aiax = isset($_GET['is_ajax']) ? $_GET['is_ajax'] : 0; 13 /* 过滤信息 */ 14 $filter['sort_by'] = empty($_REQUEST['sort_by']) ? 'r.resource_id' : trim($_REQUEST['sort_by']); 15 $filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'DESC' : trim($_REQUEST['sort_order']); 16 $filter['resource_id'] = empty($_REQUEST['resource_id']) ? '' : $_REQUEST['resource_id']; 17 $filter['admin_name'] = empty($_REQUEST['admin_name']) ? '' : trim($_REQUEST['admin_name']); 18 $filter['resource_name'] = empty($_REQUEST['resource_name']) ? '' : trim($_REQUEST['resource_name']); 19 $filter['admin_id'] = isset($_REQUEST['admin_id'])?intval($_REQUEST['admin_id']):'-1'; 20 $filter['resource_type'] = empty($_REQUEST['resource_type']) ? '-1' : intval($_REQUEST['resource_type']); 21 $filter['resource_status'] = empty($_REQUEST['resource_status']) ? '-1' : intval($_REQUEST['resource_status']); 22 $filter['resource_rank'] = empty($_REQUEST['resource_rank']) ? '-1' : intval($_REQUEST['resource_rank']); 23 $filter['resource_key'] = empty($_REQUEST['resource_key']) ? '' : trim($_REQUEST['resource_key']); 24 $filter['menuid'] = 7; 25 $where = 'WHERE 1 '; 26 /* 分页大小 */ 27 $filter['page'] = empty($_REQUEST['page']) || (intval($_REQUEST['page']) <= 0) ? 1 : intval($_REQUEST['page']); 28 29 if (isset($_REQUEST['page_size']) && intval($_REQUEST['page_size']) > 0) 30 { 31 $filter['page_size'] = intval($_REQUEST['page_size']); 32 } 33 elseif (isset($_COOKIE['ECSCP']['page_size']) && intval($_COOKIE['ECSCP']['page_size']) > 0) 34 { 35 $filter['page_size'] = intval($_COOKIE['ECSCP']['page_size']); 36 } 37 else 38 39 { 40 $filter['page_size'] = 15; 41 } 42 43 if(!empty($filter['resource_id'])) 44 { 45 $resource_id = $filter['resource_id'] == -1 ? 0 : $filter['resource_id']; 46 $where .= " and r.resource_id='".$resource_id."'"; 47 } 48 if($filter['resource_name']){ 49 $where .= " AND r.resource_name like '%".mysql_like_quote($filter['resource_name'])."%' "; 50 } 51 if($filter['admin_id'] > -1) 52 { 53 $where .= " AND r.admin_id = '".$filter['admin_id']."' "; 54 } 55 if ($filter['resource_type'] > -1) 56 { 57 $where .= " AND r.resource_type = '" . $filter['resource_type'] . "'"; 58 } 59 if ($filter['resource_status'] > -1) 60 { 61 $where .= " AND r.resource_status = '" . $filter['resource_status'] . "'"; 62 } 63 if ($filter['resource_rank'] > -1) 64 { 65 $where .= " AND r.resource_rank = '" . $filter['resource_rank'] . "'"; 66 } 67 if($filter['resource_key']){ 68 $where .= " AND r.remark like '%".mysql_like_quote($filter['resource_key'])."%' "; 69 } 70 /* 记录总数 */ 71 $sql = "SELECT COUNT(r.resource_id) FROM " . $ecs->table('suppliers_resource')." as r 72 LEFT JOIN ".$ecs->table('admin_user') . " as u 73 ON u.user_id = r.admin_id " . $where; 74 $filter['record_count'] = $db->getOne($sql); 75 $filter['page_count'] = $filter['record_count'] > 0 ? ceil($filter['record_count'] / $filter['page_size']) : 1; 76 /* 查询 */ 77 $sql = "SELECT r.resource_id, u.user_name as admin_name, r.resource_name, r.resource_link, r.resource_type, r.resource_status, r.resource_rank, r.remark, r.add_time FROM " . $ecs->table('suppliers_resource') . " as r 78 LEFT JOIN " . $ecs->table('admin_user') . " as u ON u.user_id = r.admin_id " . $where; 79 80 $sort_by = $filter['sort_by']; 81 $sort_order = $filter['sort_order']; 82 $sql .="GROUP BY r.resource_id ORDER BY " . $sort_by . " " . $sort_order; 83 if($is_pagtion) 84 { 85 $sql .=" LIMIT ".($filter['page'] - 1)*$filter['page_size'].",".$filter['page_size']; 86 } 87 set_filter($filter, $sql); 88 } 89 else 90 { 91 $sql = $result['sql']; 92 $filter = $result['filter']; 93 } 94 $query=$sql; 95 96 $row = $db->getAll($sql); 97 /* 格式话数据 */ 98 foreach ($row AS $key => $value) 99 { 100 if ($row[$key]['resource_type'] == 1) { 101 $row[$key]['resource_type'] = '中模'; 102 }elseif ($row[$key]['resource_type'] == 2) { 103 $row[$key]['resource_type'] = '泳装'; 104 }elseif ($row[$key]['resource_type'] == 3) { 105 $row[$key]['resource_type'] = '阿里'; 106 }elseif ($row[$key]['resource_type'] == 2) { 107 $row[$key]['resource_type'] = '17网'; 108 } 109 if ($row[$key]['resource_status'] == 1) { 110 $row[$key]['resource_status'] = '已审核'; 111 }elseif ($row[$key]['resource_status'] == 2) { 112 $row[$key]['resource_status'] = '已弃用'; 113 } 114 if ($row[$key]['resource_rank'] == 1) 115 { 116 $row[$key]['resource_rank'] = 'A'; 117 }elseif ($row[$key]['resource_rank'] == 2) { 118 $row[$key]['resource_rank'] = 'B'; 119 }elseif ($row[$key]['resource_rank'] == 3) { 120 $row[$key]['resource_rank'] = 'C'; 121 } 122 if(strpos($row[$key]['resource_link'], 'http://') === false) 123 { 124 if (strpos($row[$key]['resource_link'], 'https://') === false) 125 { 126 $row[$key]['resource_link'] = substr_replace($row[$key]['resource_link'], 'http://', 0, 0); 127 } 128 } 129 } 130 $arr = array('result' => $row, 'filter' => $filter, 'page_count' => $filter['page_count'], 'record_count' => $filter['record_count'],'query'=>$query); 131 return $arr; 132 }
Part2:解码编码 urlencode — 编码 URL 字符串 说明 string urlencode ( string
$str )此函数便于将字符串编码并将其用于 URL 的请求部分,同时它还便于将变量传递给下一页。 参数str
要编码的字符串。返回值
返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与 » RFC3896 编码(参见 rawurlencode())不同。 urldecode — 解码已编码的 URL 字符串 说明 string urldecode ( string $str ) 解码给出的已编码字符串中的任何 %##。 加号('+')被解码成一个空格字符。 参数 str 返回值 返回解码后的字符串。 Warning 超全局变量 $_GET 和 $_REQUEST 已经被解码了。对 $_GET 或 $_REQUEST 里的元素使用 urldecode() 将会导致不可预计和危险的结果。
serialize — 产生一个可存储的值的表示 描述string serialize ( mixed
$value )serialize() 返回字符串,此字符串包含了表示 这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。 想要将已序列化的字符串变回 PHP 的值,可使用 unserialize()。serialize() 可处理除了 resource 之外的任何类型。甚至可以 serialize() 那些包含了指向其自身引用的数组。你正 serialize() 的数组/对象中的引用也将被存储。 当序列化对象时,PHP 将试图在序列动作之前调用该对象的成员函数 __sleep()。这样就允许对象在被序列化之前做任何清除操作。类似的,当使用 unserialize() 恢复对象时, 将调用 __wakeup() 成员函数。
unserialize — 从已存储的表示中创建 PHP 的值 说明 mixed unserialize ( string
$str )unserialize() 对单一的已序列化的变量进行操作,将其转换回 PHP 的值。 参数str
序列化后的字符串.
若被解序列化的变量是一个对象,在成功地重新构造对象之后,PHP 会自动地试图去调用 __wakeup() 成员函数(如果存在的话)。
Note: unserialize_callback_func 指令 如果在解序列化的时候需要实例化一个未定义类,则可以设置回调函数以供调用(以免得到的是不完整的 object"__PHP_Incomplete_Class")。可通过 php.ini、ini_set() 或 .htaccess 定义'unserialize_callback_func'。每次实例化一个未定义类时它都会被调用。若要禁止这个特性,只需置空此设定。 base64_encode — 使用 MIME base64 对数据进行编码 说明string base64_encode ( string
$data )使用 base64 对 设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。 Base64-encoded 数据要比原始数据多占用 33% 左右的空间。 参数
返回值 编码后的字符串数据, 或者在失败时返回
base64_decode — 对使用 MIME base64 编码的数据进行解码
说明
string base64_decode ( string
$data [, bool $strict = false ] )
对 base64 编码的
data 进行解码。参数
data
编码过的数据。strict
如果输入的数据超出了 base64 字母表,则返回 FALSE 。返回值
返回原始数据, 或者在失败时返回
FALSE 。返回的数据可能是二进制的。Part3:分页原理分析 11 |
2022-08-30
2022-08-17
2022-11-06
2022-08-14
2022-08-18
请发表评论