php--mysql 类(处女作)-->修改后加入了分页的类

来源:互联网 发布:网络直播美女踩死动物 编辑:程序博客网 时间:2024/06/15 09:04

<?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' onchange='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;



    }







}




?>

原创粉丝点击