最近*写php,被搞的很郁闷,函数的返回值也不指定,变量的随意性太强,造成调试比较麻烦,oo也不是很好,但是写起来其实比较灵活,上手也比较容易。以后写php也不错哦。
下面是分页类和一个数据库的类。
php 分页类
Code
1<?php
2//检查文件是否已加载
3if(!function_exists(pageft)){
4//定义函数$totle为数据总量,$displaypg为每页显示数
5function pageft($totle,$displaypg,$url=''){
6
7global $page,$firstcount,$pagenav,$_SERVER;
8
9$GLOBALS["displaypg"]=$displaypg;
10//用$_GET来接受页参数
11if (isset($_GET['page'])){
12$page=intval($_GET['page']);
13}else{
14$page=1;
15}
16//$_SERVER["REQUEST_URI"]访问此页面的URI(路径)
17if(!$url){ $url=$_SERVER["REQUEST_URI"];}
18//解析URI,获得数组形式传送给$parse_url
19$parse_url=parse_url($url);
20//$parse_url["query"],获得?后的变量
21$url_query=$parse_url["query"];
22
23if($url_query){
24$url_query=ereg_replace("(^|&)page=$page","",$url_query);
25
26
27$url=str_replace($parse_url["query"],$url_query,$url);
28
29//在URL后加page查询信息,但待赋值:
30if($url_query) $url.="&page"; else $url.="page";
31}else {
32$url.="?page";
33}
34
35$lastpg=ceil($totle/$displaypg); //最下一页,也是总页数
36$page=min($lastpg,$page);
37$prepg=$page-1; //上一页
38$nextpg=($page==$lastpg ? 0 : $page+1); //下一页
39$firstcount=($page-1)*$displaypg;
40
41//开始分页导航条代码:
42/*
43$pagenav="显示第 <B>;".($totle?($firstcount+1):0)."</B>;-<B>;".min($firstcount+$displaypg,$totle)."</B>; 条记录,共 $totle 条记录";*/
44//如果只有一页则跳出函数:
45if($lastpg<=1) return false;
46
47if ($page==1) $pagenav.="<font color=#999999>首页 | </font>"; else $pagenav.="<a href='$url=1'>首页</a> | ";
48if($prepg) $pagenav.="<a href='$url=$prepg'>上一页</a> | "; else $pagenav.="<font color=#999999>上一页 | </font>";
49if($nextpg) $pagenav.="<a href='$url=$nextpg'>下一页</a> | "; else $pagenav.=" <font color=#999999>下一页 | </font>";
50if ($page==$lastpg) $pagenav.="<font color=#999999>末页 | </font>" ; else $pagenav.="<a href='$url=$lastpg'>末页</a> | ";
51
52//下拉跳转列表,循环列出所有页码:
53$pagenav.="转到第<select name='topage' size='1' onchange='window.location=\"$url=\"+this.value'>;\n";
54for($i=1;$i<=$lastpg;$i++){
55if($i==$page) $pagenav.="<option value='$i' selected>$i</option>\n";
56else $pagenav.="<option value='$i'>$i</option>\n";
57}
58$pagenav.="</select>页 ($page/$lastpg 页)";
59}
60}
61?>
1<?php
2//检查文件是否已加载
3if(!function_exists(pageft)){
4//定义函数$totle为数据总量,$displaypg为每页显示数
5function pageft($totle,$displaypg,$url=''){
6
7global $page,$firstcount,$pagenav,$_SERVER;
8
9$GLOBALS["displaypg"]=$displaypg;
10//用$_GET来接受页参数
11if (isset($_GET['page'])){
12$page=intval($_GET['page']);
13}else{
14$page=1;
15}
16//$_SERVER["REQUEST_URI"]访问此页面的URI(路径)
17if(!$url){ $url=$_SERVER["REQUEST_URI"];}
18//解析URI,获得数组形式传送给$parse_url
19$parse_url=parse_url($url);
20//$parse_url["query"],获得?后的变量
21$url_query=$parse_url["query"];
22
23if($url_query){
24$url_query=ereg_replace("(^|&)page=$page","",$url_query);
25
26
27$url=str_replace($parse_url["query"],$url_query,$url);
28
29//在URL后加page查询信息,但待赋值:
30if($url_query) $url.="&page"; else $url.="page";
31}else {
32$url.="?page";
33}
34
35$lastpg=ceil($totle/$displaypg); //最下一页,也是总页数
36$page=min($lastpg,$page);
37$prepg=$page-1; //上一页
38$nextpg=($page==$lastpg ? 0 : $page+1); //下一页
39$firstcount=($page-1)*$displaypg;
40
41//开始分页导航条代码:
42/*
43$pagenav="显示第 <B>;".($totle?($firstcount+1):0)."</B>;-<B>;".min($firstcount+$displaypg,$totle)."</B>; 条记录,共 $totle 条记录";*/
44//如果只有一页则跳出函数:
45if($lastpg<=1) return false;
46
47if ($page==1) $pagenav.="<font color=#999999>首页 | </font>"; else $pagenav.="<a href='$url=1'>首页</a> | ";
48if($prepg) $pagenav.="<a href='$url=$prepg'>上一页</a> | "; else $pagenav.="<font color=#999999>上一页 | </font>";
49if($nextpg) $pagenav.="<a href='$url=$nextpg'>下一页</a> | "; else $pagenav.=" <font color=#999999>下一页 | </font>";
50if ($page==$lastpg) $pagenav.="<font color=#999999>末页 | </font>" ; else $pagenav.="<a href='$url=$lastpg'>末页</a> | ";
51
52//下拉跳转列表,循环列出所有页码:
53$pagenav.="转到第<select name='topage' size='1' onchange='window.location=\"$url=\"+this.value'>;\n";
54for($i=1;$i<=$lastpg;$i++){
55if($i==$page) $pagenav.="<option value='$i' selected>$i</option>\n";
56else $pagenav.="<option value='$i'>$i</option>\n";
57}
58$pagenav.="</select>页 ($page/$lastpg 页)";
59}
60}
61?>
Code
1 <?php
2 class db_Mysql
3 {
4
5 var $dbServer;
6 var $dbDatabase;
7 var $dbbase;
8 var $dbUser;
9 var $dbPwd;
10 var $dbLink;
11 var $result;// 执行query命令的指针
12 var $num_rows;// 返回的条目数
13 var $insert_id;// 传回最后一次使用 INSERT 指令的 ID
14 var $affected_rows;// 传回query命令所影响的列数目
15
16function dbconnect()
17{
18 $this->dbLink=@mysql_connect($this->dbServer,$this->dbUser,$this->dbPwd);
19 if(!$this->dbLink) $this->dbhalt("不能连接数据库!");
20 if($this->dbbase=="") $this->dbbase=$this->dbDatabase;
21 if(!@mysql_select_db($this->dbbase,$this->dbLink))
22 $this->dbhalt("数据库不可用!");
23 mysql_query("SET NAMES 'gbk'");
24}
25
26function execute($sql)
27{
28 $this->result=mysql_query($sql);
29 return $this->result;
30}
31
32function fetch_array($result)
33{
34 return mysql_fetch_array($result);
35}
36
37function get_rows($sql)
38{
39 return mysql_num_rows(mysql_query($sql));
40}
41
42function num_rows($result)
43{
44 return mysql_num_rows($result);
45}
46
47function data_seek($result,$rowNumber)
48{
49 return mysql_data_seek($result,$rowNumber);
50}
51
52function dbhalt($errmsg)
53{
54 $msg="database is wrong!";
55 $msg=$errmsg;
56 echo"$msg";
57 die();
58}
59
60function delete($sql){
61 $result=$this->execute($sql,$dbbase);
62 $this->affected_rows=mysql_affected_rows($this->dbLink);
63 $this->free_result($result);
64 return $this->affected_rows;
65}
66
67function insert($sql){
68$result=$this->execute($sql,$dbbase);
69$this->insert_id=mysql_insert_id($this->dbLink);
70$this->free_result($result);
71 return $this->insert_id;
72}
73
74function update($sql)
75{
76 $result=$this->execute($sql,$dbbase);
77 $this->affected_rows=mysql_affected_rows($this->dbLink);
78 $this->free_result($result);
79 return $this->affected_rows;
80}
81
82function get_num($result)
83{
84 $num=@mysql_numrows($result);
85 return $num;
86}
87 //释放所有与结果标识符 result 所关联的内存
88function free_result($result)
89{
90 @mysql_free_result($result);
91}
92
93function dbclose()
94{
95 mysql_close($this->dbLink);
96}
97
98}// end class
99?>
1 <?php
2 class db_Mysql
3 {
4
5 var $dbServer;
6 var $dbDatabase;
7 var $dbbase;
8 var $dbUser;
9 var $dbPwd;
10 var $dbLink;
11 var $result;// 执行query命令的指针
12 var $num_rows;// 返回的条目数
13 var $insert_id;// 传回最后一次使用 INSERT 指令的 ID
14 var $affected_rows;// 传回query命令所影响的列数目
15
16function dbconnect()
17{
18 $this->dbLink=@mysql_connect($this->dbServer,$this->dbUser,$this->dbPwd);
19 if(!$this->dbLink) $this->dbhalt("不能连接数据库!");
20 if($this->dbbase=="") $this->dbbase=$this->dbDatabase;
21 if(!@mysql_select_db($this->dbbase,$this->dbLink))
22 $this->dbhalt("数据库不可用!");
23 mysql_query("SET NAMES 'gbk'");
24}
25
26function execute($sql)
27{
28 $this->result=mysql_query($sql);
29 return $this->result;
30}
31
32function fetch_array($result)
33{
34 return mysql_fetch_array($result);
35}
36
37function get_rows($sql)
38{
39 return mysql_num_rows(mysql_query($sql));
40}
41
42function num_rows($result)
43{
44 return mysql_num_rows($result);
45}
46
47function data_seek($result,$rowNumber)
48{
49 return mysql_data_seek($result,$rowNumber);
50}
51
52function dbhalt($errmsg)
53{
54 $msg="database is wrong!";
55 $msg=$errmsg;
56 echo"$msg";
57 die();
58}
59
60function delete($sql){
61 $result=$this->execute($sql,$dbbase);
62 $this->affected_rows=mysql_affected_rows($this->dbLink);
63 $this->free_result($result);
64 return $this->affected_rows;
65}
66
67function insert($sql){
68$result=$this->execute($sql,$dbbase);
69$this->insert_id=mysql_insert_id($this->dbLink);
70$this->free_result($result);
71 return $this->insert_id;
72}
73
74function update($sql)
75{
76 $result=$this->execute($sql,$dbbase);
77 $this->affected_rows=mysql_affected_rows($this->dbLink);
78 $this->free_result($result);
79 return $this->affected_rows;
80}
81
82function get_num($result)
83{
84 $num=@mysql_numrows($result);
85 return $num;
86}
87 //释放所有与结果标识符 result 所关联的内存
88function free_result($result)
89{
90 @mysql_free_result($result);
91}
92
93function dbclose()
94{
95 mysql_close($this->dbLink);
96}
97
98}// end class
99?>
测试过都是可以用滴,已经在第一个程序中使用了。