<?php
session_start();
/*
* Created on 2010-7-20
* mysql_class
*/
/**
**连接数据库的类
*/
class connect_db{
protected $db_host;
protected $db_psw;
protected $db_user;
protected $db_db;
protected $db_connect;
protected $font;
function __construct($db_host="",$db_user="",$db_psw="",$db_db="",$font="UTF-8"){
$this->db_host=$db_host;
$this->db_user=$db_user;
$this->db_psw=$db_psw;
$this->db_db=$db_db;
$this->font=$font;
$this->db_connect= 0;
}
/**
**连接数据库
*/
protected function connect(){
$link=mysql_connect("$this->db_host","$this->db_user","$this->db_psw")
or die (mysql_error());
mysql_select_db ("$this->db_db",$link) or die (mysql_error());
mysql_query("SET NAMES '$this->font'");
$this->db_connect=$link;
}
/**
* 测试是否连接
* 返回
*/
function test(){
if($this->db_connect) {
}else{
return "$this->db_db---连接失败<br>";
}
}
function __distruct(){
if($this->db_connect){
mysql_close();
}
}
}
/**
**连接数据库的子类
*/
class Mysql extends connect_db{
/**
* 判断是否连接,如果没有连接,则连接数据库
*
*/
protected function panduan_lianjie(){
if(!$this->db_connect){
$this->connect();
}
}
/**
** 添加进数据库
** 格式: insert( 表名,字段名,值 )
** 返回插入语句##——是否成功
*/
function insert($table,$name,$values){
$this->panduan_lianjie();
$this->test();
$insert="INSERT INTO `$table` ($name) VALUES ($values)";
if(mysql_query($insert)){
return "$insert ##——success <br>";
}
return "$insert ##——fail——##".mysql_error()."<br>";
}
/**
** 删除数据库中内容
** 格式: delet( 表名,条件 )
** 返回删除语句##——是否成功
*/
function delete($table,$where){
$this->panduan_lianjie();
$this->test();
$delete="DELETE FROM $table WHERE $where";
if(mysql_query($delete)){
return "$delete ##——success<br>";
}
return "$delete ##——fail——##".mysql_error()."<br>";
}
/**
* 更新数据库
* 格式 update( 表名,字段名,值,where语句,limit语句 )
* 返回更新语句##——是否成功
*/
function update($table,$name,$values,$where="1",$limit=""){
$this->panduan_lianjie();
$name=explode(',',$name);
$values=explode(',',$values);
$count=count($name)-1;
for( $i=0;$i<$count;$i++){
$name_values.=$name[$i]."=".$values[$i].",";
}
$name_values.=$name[$count]."=".$values[$count];
if($limit){ $limit="LIMIT ".$limit;}
$update="UPDATE `$table` SET $name_values WHERE $where $limit";
mysql_query($update) or die ("$update ##——fail<br>");
return "1";
}
/**
**查询提取所有
**格式 fetchAll( 表名,查询的字段名,where条件,limite );
*/
function fetchAll($table,$thing="*",$where="1",$limit=""){
$this->panduan_lianjie();
if(!empty($limit)){
$select="SELECT $thing FROM $table WHERE $where LIMIT $limit";
}else{
$select="SELECT $thing FROM $table WHERE $where";
}
$result=mysql_query($select) or die ("<br>".$select."<br>".mysql_error()."<br>");
while($row=mysql_fetch_assoc($result)){
$output[]=$row;
}
mysql_free_result($result);
// if(empty($output)) return "数据库$this->db_db 的 $table 中没有该内容";
return $output;
}
/**
* 查询提取 一条
*/
function fetchRow($table,$thing="*",$where="1"){
$this->panduan_lianjie();
$select="SELECT $thing FROM $table WHERE $where LIMIT 1";
$result = mysql_query($select) or die ("数据库$this->db_db 的 $table 中没有该内容");
$row = mysql_fetch_assoc($result);
return $row;
}
/**
* 执行语句
* 返回成功或失败
*/
function query($sql){
$this->panduan_lianjie();
mysql_query($sql) or die("$sql ---错误 ");
return( "成功建立" );
}
/**
* 查询表单中数据的条数
* getTotal(表名,查询的字段名,where条件)
*/
function getTotal($table,$thing="*",$where="1"){
$this->panduan_lianjie();
$select="SELECT COUNT($thing) FROM $table WHERE $where LIMIT 1";
$result = mysql_query($select) or die("$select<br>数据库$this->db_db 的 $table 中没有该内容") ;
$row = mysql_fetch_row($result);
return $row[0];
}
/**
* 分页
* 格式 fy(表名,每页的显示数,地址)
* 直接输出样式 与 数据库结果
*/
function fy($table, $displaypg = 2, $url = ''){
$totle=$this->getTotal($table);
global $page, $firstcount , $pagenav, $_SERVER;
$GLOBALS["displaypg"] = $displaypg;
$page=$_GET[page];
if (!$page)
$page = 1;
if (!$url) {
$url = $_SERVER["REQUEST_URI"];
}
//URL分析:
$parse_url = parse_url($url);
$url_query = $parse_url["query"]; //单独取出URL的查询字串
if ($url_query) {
$url_query = ereg_replace("(^|&)page=$page", "", $url_query);
$url = str_replace($parse_url["query"], $url_query, $url);
if ($url_query)
$url .= "&page";
else
$url .= "page";
} else {
$url .= "?page";
}
$lastpg = ceil($totle / $displaypg); //最后页,也是总页数
$page = min($lastpg, $page);
$prepg = $page -1; //上一页
$nextpg = ($page == $lastpg ? 0 : $page +1); //下一页
$firstcount = ($page -1) * $displaypg;
//开始分页导航条代码:
$pagenav = "显示第 <B>" . ($totle ? ($firstcount +1) : 0) . "</B>-<B>" . min($firstcount + $displaypg, $totle) . "</B> 条记录,共 $totle 条记录";
//如果只有一页则跳出函数:
if ($lastpg <= 0)
return false;
$pagenav .= " <a href='$url=1'>首页</a> ";
if ($prepg){
$pagenav .= " <a href='$url=$prepg'>前页</a> ";
}else{
$pagenav .= " 前页 ";
}
if ($nextpg){
$pagenav .= " <a href='$url=$nextpg'>后页</a> ";
}else{
$pagenav .= " 后页 ";
}
$pagenav .= " <a href='$url=$lastpg'>尾页</a> ";
//下拉跳转列表,循环列出所有页码:
$pagenav .= " 到第 <select name='topage' size='1' οnchange='window.location=/"$url=/"+this.value'>/n";
for ($i = 1; $i <= $lastpg; $i++) {
if ($i == $page)
$pagenav .= "<option value='$i' selected>$i</option>/n";
else
$pagenav .= "<option value='$i'>$i</option>/n";
}
$pagenav .= "</select> 页,共 $lastpg 页";
echo $pagenav."<br>";
$result=$this->fetchAll("$table","*","1","$firstcount,$displaypg");
return $result;
}
}
?>