php OOP,完整样本

时间:2010-06-01 20:40:06

标签: php

在这个网站上,我发现了很多很酷的PHP OOP示例。 也许你知道在哪里找到完整的例子? 留言簿,报名表,博客......

当我看完整个模型时,更容易理解OOP PHP。 当不同的类相互交互时,交换数据 如何使用泛型类将数据发送到数据库

由于

3 个答案:

答案 0 :(得分:6)

以下是示例代码:

class.php     

class Database{
    /* 
     * Create variables for credentials to MySQL database
     * The variables have been declared as private. This
     * means that they will only be available with the 
     * Database class
     */
    private $db_host = "localhost";  // Change as required
    private $db_user = "root";  // Change as required
    private $db_pass = "";  // Change as required
    private $db_name = "";  // Change as required

    /*
     * Extra variables that are required by other function such as boolean con variable
     */
    private $con = false; // Check to see if the connection is active
    private $result = array(); // Any results from a query will be stored here


    // Function to make connection to database
    public function connect(){
        if(!$this->con){
            $myconn = @mysql_connect($this->db_host,$this->db_user,$this->db_pass);  // mysql_connect() with variables defined at the start of Database class
            if($myconn){
                $seldb = @mysql_select_db($this->db_name,$myconn); // Credentials have been pass through mysql_connect() now select the database
                if($seldb){
                    $this->con = true;
                    return true;  // Connection has been made return TRUE
                }else{
                    array_push($this->result,mysql_error()); 
                    return false;  // Problem selecting database return FALSE
                }  
            }else{
                array_push($this->result,mysql_error());
                return false; // Problem connecting return FALSE
            }  
        }else{  
            return true; // Connection has already been made return TRUE 
        }   
    }

    // Function to disconnect from the database
    public function disconnect(){
        // If there is a connection to the database
        if($this->con){
            // We have found a connection, try to close it
            if(@mysql_close()){
                // We have successfully closed the connection, set the connection variable to false
                $this->con = false;
                // Return true tjat we have closed the connection
                return true;
            }else{
                // We could not close the connection, return false
                return false;
            }
        }
    }

    public function select($sql){
        $query = @mysql_query($sql);
       // $this->myQuery = $sql; // Pass back the SQL
        if($query){
            // If the query returns >= 1 assign the number of rows to numResults
            $this->numResults = mysql_num_rows($query);
            // Loop through the query results by the number of rows returned
            for($i = 0; $i < $this->numResults; $i++){
                $r = mysql_fetch_array($query);
                $key = array_keys($r);
                for($x = 0; $x < count($key); $x++){
                    // Sanitizes keys so only alphavalues are allowed
                    if(!is_int($key[$x])){
                        if(mysql_num_rows($query) >= 1){
                            $this->result[$i][$key[$x]] = $r[$key[$x]];
                        }else{
                            $this->result = null;
                        }
                    }
                }
            }
            return true; // Query was successful
        }else{
            array_push($this->result,mysql_error());
            return false; // No rows where returned
        }
    }

    // Function to insert into the database
    public function insert($sql)
    {
        // Make the query to insert to the database
        if($ins = @mysql_query($sql))
        {
            array_push($this->result,mysql_insert_id());
            return true; // The data has been inserted
        }
        else
        {
            array_push($this->result,mysql_error());
            return false; // The data has not been inserted
        }
    }


    // Function to update and delete into the database
    public function query($sql)
    {
            if($query = @mysql_query($sql)){
                array_push($this->result,mysql_affected_rows());
                return true; 
            }else{
                array_push($this->result,mysql_error());
                return false; 
            }

    }

    // Public function to return the data to the user
    public function getResult(){
        $val = $this->result;
        $this->result = array();
        return $val;
    }

} 
?>

的index.php

 <!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=utf-8" />
<title>Example Test</title>
</head>

<body>
<?php
if(isset($_REQUEST['failure']))
{
    echo "Email/Password Wrong";
}
?>
<form action="operation.php" method="post">
  <label>Email:</label>
  <input type="text" name="email" />
  <br />
  <label>Password:</label>
  <input type="password" name="password" />
  <br />
  <input type="submit" name="cmdlogin" value="Login" />
</form>
</body>
</html>

operation.php

<?php
require_once("class.php");
$db = new Database();  
$db->connect();
if(isset($_REQUEST['cmdlogin']))
{
    $rs = $db->select("SELECT * FROM tbl_login where email = '".$_REQUEST['email']."' and password= '".md5($_REQUEST['password'])."'");
    $res = $db->getResult();
    if($res)
    {
        header('location: http://localhost/project/menu.php ');
    }
    else
    {
        header('location: http://localhost/project/index.php?failure');
    }
}
if(isset($_REQUEST['cmdproduct_save']))
{
    $rs = $db->insert("INSERT INTO `tbl_product`(`product`, `description`, `catid`) VALUES ('".$_REQUEST['product']."','".$_REQUEST['description']."',
                    '".$_REQUEST['drpcat']."')");
    $res = $db->getResult();
    header('location: http://localhost/project/product.php?saved');
}
if(isset($_REQUEST['cmdcategory_save']))
{
    $filename = '';
    if(isset($_FILES['catimage']['name']) && $_FILES['catimage']['name'] != '')
    {
        $filename = time();
        $ext=substr($_FILES['catimage']['name'],strrpos($_FILES['catimage']['name'],'.'),strlen($_FILES['catimage']['name'])-1);
        $filepath = $_SERVER['DOCUMENT_ROOT'].'project/image/'.$filename.$ext;
        move_uploaded_file($_FILES['catimage']['tmp_name'],$filepath);
    }
    $rs = $db->insert("INSERT INTO `tbl_category`(`category`, `description`,`catimage`) VALUES ('".$_REQUEST['category']."','".$_REQUEST['description']."','".$filename."')");
    $res = $db->getResult();
    header('location: http://localhost/project/category.php?saved');
}
if(isset($_REQUEST['cmdproduct_update']))
{
    $rs = $db->query("UPDATE `tbl_product` SET `product` = '".$_REQUEST['product']."', `description`= '".$_REQUEST['description']."',`catid` =  '".$_REQUEST['drpcat']."' where id = ".$_REQUEST['proeditid']);
    $res = $db->getResult();
    header('location: http://localhost/project/product.php?updated');
}
if(isset($_REQUEST['cmdcategory_update']))
{
    //print_r($_REQUEST);exit;
    $rs = $db->query("UPDATE `tbl_category` SET `category`= '".$_REQUEST['category']."', `description` = '".$_REQUEST['description']."' where id =".$_REQUEST['cateditid']);
    $res = $db->getResult();
    //print_r($res);exit;
    header('location: http://localhost/project/category.php?updated');
}
if(isset($_REQUEST['catdelete']))
{
    $rs = $db->query("DELETE FROM `tbl_category` WHERE id = ".$_REQUEST['catdelete']);
    $res = $db->getResult();
    header('location: http://localhost/project/category.php?deleted');
}
?>

product.php

<!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=utf-8" />
<title>Example Test</title>
</head>

<body>
<?php
include("menu.php");
require_once("class.php");
$db = new Database();  
$db->connect();
$db->select("select * from tbl_category");
$rs = $db->getResult();
if(isset($_REQUEST['proeditid']))
{
    $db->select("select * from tbl_product where id = ".$_REQUEST['proeditid']);
    $result = $db->getResult();
    //print_r($result);
}
?>

<form action="operation.php" method="post">
<label>Product:</label>
<input type="text" name="product" value="<?php if(isset($result)){ echo $result[0]['product']; }?>" />
<br />
<label>Description:</label>
<input type="text" name="description" value="<?php if(isset($result)){ echo $result[0]['description']; }?>" />
<br />
<label>Category:</label>
<select name="drpcat">
<option value="0">Select Category</option>
<?php foreach($rs as $val){?>
<option value="<?php echo $val['id']; ?>"<?php if(isset($result) && $result[0]['catid'] == $val['id']){ echo 'selected="selected"';}?>><?php echo $val['category'];?></option>
<?php }?>
</select>
<br />

<?php if(isset($result)) {?>
<input type="hidden" name="proeditid" value="<?php echo $result[0]['id'];?>" />
<input type="submit" name="cmdproduct_update" value="Update" />
<?php }else {?>
<input type="submit" name="cmdproduct_save" value="Save" />
<?php }?>

</form>





<br />
<br />
<br />
<br />
<?php

$db->select("select p.*,c.category from tbl_product as p, tbl_category as c where c.id = p. catid");
$res = $db->getResult();
?>

<table border="1">
    <thead>
        <tr>
        <th>Product</th>
        <th>Description</th>
        <th>Category</th>
        <th>Edit</th>
        <th>Delete</th>
        </tr>
    </thead>
    <tbody>
    <?php
        foreach($res as $output){

        ?>
        <tr>
        <td><?php echo $output['product']; ?></td>
            <td><?php echo $output['description']; ?></td>
            <td><?php echo $output['category']; ?></td>
            <td>
                <form action="operation.php" method="post" name="catedit<?php echo $output['id']; ?>">
                <input type="hidden" name="proedit" value="<?php echo $output['id']; ?>" />
                </form>
                <a href="http://localhost/project/product.php?proeditid=<?php echo $output['id']; ?>">Edit</a>
            </td>
            <td>
                <form action="operation.php" method="post" name="prodelete<?php echo $output['id']; ?>">
                <input type="hidden" name="prodelete" value="<?php echo $output['id']; ?>" />
                </form>
                <a href="#" onclick="document.prodelete<?php echo $output['id']; ?>.submit();">Delete</a>
            </td>
            </tr>
            <?php
        }
            ?>
    </tbody>
</table>  
</body>
</html>

<div style="margin-bottom:30px;">
<a href="category.php">Category</a>
<a href="product.php" style="margin-left:15px;">Product</a>
</div>

menu.php

<div style="margin-bottom:30px;">
<a href="category.php">Category</a>
<a href="product.php" style="margin-left:15px;">Product</a>
</div>

category.php

<!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=utf-8" />
<title>Example Test</title>
</head>

<body>
<?php
require_once("class.php");
include("menu.php");
$db = new Database();  
$db->connect();
if(isset($_REQUEST['cateditid']))
{
    $db->select("select * from tbl_category where id = ".$_REQUEST['cateditid']);
    $rs = $db->getResult();
    //print_r($rs);
}
?>

<form action="operation.php" method="post" enctype="multipart/form-data">
<label>Category:</label>
<input type="text" name="category" value="<?php if(isset($rs)){ echo $rs[0]['category']; }?>" />
<br />
<label>Description:</label>
<input type="text" name="description" value="<?php if(isset($rs)){ echo $rs[0]['description']; }?>" />
<br />
<label>Category Image:</label>
<input type="file" name="catimage" />
<br />


<?php if(isset($rs)) {?>
<input type="hidden" name="cateditid" value="<?php echo $rs[0]['id'];?>" />
<input type="submit" name="cmdcategory_update" value="Update" />
<?php }else {?>
<input type="submit" name="cmdcategory_save" value="Save" />
<?php }?>
</form>





<br />
<br />
<br />
<br />
<?php

$db->select("select * from tbl_category");
$res = $db->getResult();
?>

<table border="1">
    <thead>
        <tr>
            <th>Category</th>
            <th>Description</th>
            <th>Edit</th>
            <th>Delete</th>
       </tr>
    </thead>
    <tbody>
        <?php
        foreach($res as $output){

        ?>
        <tr>
            <td><?php echo $output['category']; ?></td>
            <td><?php echo $output['description']; ?></td>
            <td>
                <form action="operation.php" method="post" name="catedit<?php echo $output['id']; ?>">
                <input type="hidden" name="catedit" value="<?php echo $output['id']; ?>" />
                </form>
                <a href="http://localhost/project/category.php?cateditid=<?php echo $output['id']; ?>">Edit</a>
            </td>
            <td>
                <form action="operation.php" method="post" name="catdelete<?php echo $output['id']; ?>">
                <input type="hidden" name="catdelete" value="<?php echo $output['id']; ?>" />
                </form>
                <a href="#" onclick="document.catdelete<?php echo $output['id']; ?>.submit();">Delete</a>
            </td>
        </tr>
        <?php
        }
        ?>
    </tbody>
</table>
</body>
</html>

答案 1 :(得分:0)

这篇文章帮助我理解了OOP的基础知识

Object Oriented Programming in PHP

我希望它可以帮到你

答案 2 :(得分:0)

PHP面向对象的解决方案 http://www.amazon.com/dp/1430210117

当我开始使用php

时,我非常喜欢这本书