PHP Classes

File: Model.php

Recommend this page to a friend!
  Classes of Corey W.   MySQL Database & Model Classes   Model.php   Download  
File: Model.php
Role: Class source
Content type: text/plain
Description: Model Class
Class: MySQL Database & Model Classes
Manipulate MySQL database table records as objects
Author: By
Last change:
Date: 15 years ago
Size: 3,138 bytes
 

Contents

Class file image Download
<?php

require_once('Database.php');

/**
 * PHP 4 Database Model Class
 * Sets up the Model interface
 */
 
class Model extends Database {

    var
$table;
    var
$fields;
    var
$id;
   
   
/**
     * Constructor function, gets table name, sets the ID of a current row
     * and gets all field names from the table
     *
     * @param integer ID of row to update or delete
     */
   
function Model($id = '') {
           
        if (empty(
$this->table))
           
$this->table = strtolower(substr(get_class($this), 0, -6));
       
        if (empty(
$this->fields)) {
           
$this->query("SHOW COLUMNS FROM $this->table");
            foreach (
$this->get() as $col)
               
$this->fields[] = $col->Field;
        }
           
        if (!empty(
$id)) {
           
$this->id = $id;
        }
   
    }
   
   
/**
     * Very simple select
     *
     * @param string What to order by
     * @param string Where statement
     * @param string Columns to select
     * @return result Result of query
     */
   
function select($orderby = 'id DESC', $where = '', $cols = '*', $limit = '') {
   
        if (!empty(
$this->id) && empty($where)) $where .= "id = $this->id";
       
        return
parent::select($this->table, $orderby, $where, $cols, $limit);
   
    }
   
   
/**
     * Insert a new record, or update existing
     *
     * @param array Data to insert (usually $_POST)
     */
   
function save($data) {
   
        if (!
is_array($data))
            return
false;
   
        for (
$i=0; $i<count($this->fields); $i++) {
           
$set[$this->fields[$i]] = !empty($data[$this->fields[$i]]) ? $data[$this->fields[$i]] : '';
        }
       
        if (empty(
$this->id))
            return
$this->insert($this->table, $set);
        else {
            foreach (
$set as $key => $val) {
                if (empty(
$set[$key]) || $set[$key] == '')
                    unset(
$set[$key]);
            }
            return
$this->update($this->table, $set, "id = '$this->id'");
        }
   
    }
   
   
/**
     * Select from table
     *
     * @param string Order by
     * @param string Where clause
     * @param string Columns to select
     */
   
function find_all($orderby = 'id DESC', $where = '', $cols = '*', $limit = '') {
   
       
$orderby = (!empty($orderby)) ? $orderby : 'id DESC';
       
$where = (!empty($where)) ? $where : '';
       
$cols = (!empty($cols)) ? $cols : '*';
       
$limit = (!empty($limit)) ? $limit : '';
   
       
$this->select($orderby, $where, $cols, $limit);
        return
$this->get();
   
    }
   
   
/**
     * Select single row
     *
     * @param string Order by
     * @param string Where clause
     * @param string Columns to select
     */
   
function find($orderby = 'id DESC', $where = '', $cols = '*', $limit = '') {
   
       
$orderby = (!empty($orderby)) ? $orderby : 'id DESC';
       
$where = (!empty($where)) ? $where : '';
        if (!empty(
$this->id) && empty($where)) $where .= "id = $this->id";
       
$cols = (!empty($cols)) ? $cols : '*';
       
$limit = (!empty($limit)) ? $limit : '';
   
       
$this->select($orderby, $where, $cols, $limit);
        return
$this->get_first();
   
    }
   
   
/**
     * Delete row or rows
     *
     * @param string Where clause
     */
   
function delete($where) {
   
        if (!empty(
$this->id) && empty($where)) $where .= "id = $this->id";
   
        return
parent::delete($this->table, $where);
   
    }
   

}