+ -
当前位置:首页 → 问答吧 → 数据库安装程序类,用于满足php新手在学习中快速建立数据库,数据库表和填充表.本类也可作为新手的学习参考!

数据库安装程序类,用于满足php新手在学习中快速建立数据库,数据库表和填充表.本类也可作为新手的学习参考!

时间:2010-07-02

来源:互联网

改类正在完善...需要完整源码包的朋友可以联系我...
本人和大家一样是一位热爱学习的年轻phper...
本类有不足之处,敬请包涵...
只供大家学习...

<?php

    /**
     * Created on 2010-7-01
     * 数据库安装程序
     * 作者:黄乐
     * 联系方式:15827031093
     * QQ:385863089
     */


    /**
     * 用来提示用户的操作结果的类
     */
    class action{
        public function get_show_msg($url, $show = '操作已成功!') {
            $msg = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml"><head>
                <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
                <link rel="stylesheet" href="Public/common.css" type="text/css" />
                <meta http-equiv="refresh" content="2; url=' . $url . '" />
                <title>消息提示</title>
                </head>
                <body>
                <div id="man_zone">
                  <table width="30%" border="1" align="center"  cellpadding="3" cellspacing="0" class="table" style="margin-top:100px;">
                    <tr>
                      <th align="center" style="background:#cef">信息提示</th>
                    </tr>
                    <tr>
                      <td><p>' . $show . '<br />
                      2秒后返回指定页面!<br />
                      如果浏览器无法跳转,<a href="' . $url . '">请点击此处</a>。</p></td>
                    </tr>
                  </table>
                </div>
                </body>
                </html>';
            echo $msg;
            exit ();
        }

    } //end class



    /**
     * 数据库安装的类
     * 将数据库结构和表信息与程序分离
     */
    class install extends action{

        //用来判断数据库安装是否成功
        public $install = 'true';
        //数据库的名称
        private $db;
        //数据库链接标识
        private $con;

        //检查数据库链接情况
        //url参数用于设置数据库链接失败后跳转到的页面
        //show参数用于设置数据库链接失败后给用户的提示信息
        public function connect($db_host, $db_user, $db_pwd, $url = '', $show = '数据库链接失败!'){
            $this->con = @mysql_connect($db_host, $db_user, $db_pwd);
            if(!$this->con){
                $this->get_show_msg($url, $show);
            }
        }

        //创建数据库
        //url参数用于设置创建数据库失败后跳转到的页面
        //show参数用于设置创建数据库失败后给用户的提示信息
        public function create_database($db, $url = '', $show = '数据库已经存在!'){
            //如果数据库不存在就创建一个数据库
            $select_db = mysql_select_db($db,$this->con);
            if($select_db){
                $this->get_show_msg($url, $show); //数据库存在就提示用户
            }else{
                mysql_query("CREATE DATABASE `$db`");
            }
            $this->db = $db; //返回数据库名
        }

        //创建数据库表
        //table_structure_url参数用来传递表结构所在的文件的文件路径
        //delimit参数是用来切割表结构和表数据的分隔符
        //flag参数用来判断是否要填充表
        //table_data参数用来传递表数据所在的文件的文件路径
        public function create_table($table_structure_url, $delimit, $flag="not_insert", $table_data='', $coding='gb2312'){
            $file = fopen($table_structure_url,"r");
            $file = fread($file,filesize($table_structure_url)); //读取表结构文件的内容
            $table_structure = explode($delimit,$file); //将表的结构数据切割成数组
            mysql_select_db($this->db); //选择数据库
            mysql_query("SET NAMES '$coding'");
            //循环出每个表的结构,并依次的创建每一个表
            foreach($table_structure as $val){
                $query = mysql_query($val);
                // mysql_query失败就执行if语句
                if(!$query){
                    //创建表出错,就返回false,用来判断程序的安装是否成功
                    $this->install = false;
                    break; //跳出循环
                }
            }
            //判断是否需要填充表
            if($flag == "insert"){
                $file = fopen($table_data,"r");
                $file = fread($file,filesize($table_data)); //读取表数据文件的内容
                $table_data = explode($delimit,$file); //将表的结构数据分割成数组
                //循环出每条数据,并依次的插入表中
                foreach($table_data as $val){
                    $query = mysql_query($val);
                    // mysql_query失败就执行if语句
                    if(!$query){
                        //填充表出错,返回false,用来判断程序的安装是否成功
                        $this->install = false;
                        break; //跳出循环
                    }
                }
            }
            // 如果创建表或者填充表的过程中出现了错误,就清除该程序所创建的数据库
            if($this->install != 'true'){
                mysql_query("DROP DATABASE `$this->db`");
            }
        }

        //如果数据库安装成功,就可以将安装文件锁起来
        public function lock(){
            $url = $_SERVER[PHP_SELF]; //取得当前文件的路径
            $url = explode("/",$url); //讲当前文件的路径分割成数组
            echo $filename = $url[count($url)-1]; //取得当前文件的文件名称
            $filelock = str_replace(".php",".lock",$filename); //将当前文件的后缀名改成.lock
            rename($filename,$filelock); //重命名当前文件,把安装文件锁起来
        }

        /**
         * demo:
         * 注意:使用该类时请注意将表的结构和数据用自定义的分割符分隔
         * 例如:-----
         * $install = new install();
         * if(!empty($_POST[主机名])&& !empty($_POST[用户名])&& !empty($_POST[数据库])){
         *     $install->connect($_POST[主机名], $_POST[用户名], $_POST[密码], 'xxx.php[如果数据库链接失败则返回的url]', '数据库链接失败![给用户的提示]');
         *       $install->create_database($_POST[数据库名], 'xxx.php', '数据库已经存在!');
         *       $install->create_table("data/install.sql【表结构文件的路径】","-----【讲表结构分割成数组的分割符】","insert【是否选择填充表】","data/install_data.sql【填充的数据的文件的路径】");
         *       if($install->install != 'true'){
         *           $install->get_show_msg("xxx.php","数据库安装出错,请检查相关数据");
         *       }
         *       $install->get_show_msg('index.php', '数据库安装成功!');
         * }else{
         *        $install->get_show_msg('index.php', '请填写基本信息!');
         * }
         */
    }

?>




















附件: install.rar (8 K) 下载次数:6

作者: huangle   发布时间: 2010-07-02

嘿嘿,沙发
帮顶。。。

作者: yjhappy   发布时间: 2010-07-02

谢谢

作者: whl1295a   发布时间: 2010-07-02

不客气

作者: huangle   发布时间: 2010-07-03

很好,很不错

作者: phua   发布时间: 2010-09-26

相关阅读 更多