/*
CLASE PARA TRABAJAR CON LA BASE DE DATOS
METODOS DE LA CLASE DB:
tsdatabase()
connect()
query()
select()
update()
replace()
insert()
delete()
data()
fetch_objects()
fetch_assoc()
num_rows()
free()
insert_id()
error()
*/
/* Clase encargada de gestionar las conexiones a la base de datos */
Class tsDatabase{
private $servidor;
private $usuario;
private $password;
private $base_datos;
private $link;
private $_querys;
static $_instance;
/*La función construct es privada para evitar que el objeto pueda ser creado mediante new*/
private function __construct(){
$this->setConexion();
$this->conectar();
}
/*Método para establecer los parámetros de la conexión*/
private function setConexion(){
$conf = Conf::getInstance();
$this->servidor=$conf->getHostDB();
$this->base_datos=$conf->getDB();
$this->usuario=$conf->getUserDB();
$this->password=$conf->getPassDB();
}
/*Evitamos el clonaje del objeto. Patrón Singleton*/
private function __clone(){ }
/*Función encargada de crear, si es necesario, el objeto. Esta es la función que debemos llamar desde fuera de la clase para instanciar el objeto, y así, poder utilizar sus métodos*/
public static function getInstance(){
if (!(self::$_instance instanceof self)){
self::$_instance=new self();
}
return self::$_instance;
}
/*Realiza la conexión a la base de datos.*/
private function conectar(){
}
// METODO PARA HACER UNA CONSULTA
// INPUT: $query
// OUTPUT: $result
function query($q){
$this->_querys++;
// HACIENDO CONSULTA Y RETORNANDO
}
// METODO PARA HACER UN SELECT
// INPUT:
// $table | NOMBRE DE LA TABLA
// $fields | CAMPOS A SELECCIONAR DE LA TABLA
// $where | CONDICION DE LA CONSULTA
// $order | ORDEN DE LOS RESULTADOS
// $limit | LIMITE DE RESULTADOS
// OUTPUT: $result
function select($table, $fields, $where = NULL, $order = NULL, $limit = NULL){
$this->_querys++;
// CREANDO LA CONSULTA
$q = 'SELECT '.$fields.' FROM '.$table;
if($where) $q .= ' WHERE '.$where;
if($order) $q .= ' ORDER BY '.$order;
if($limit) $q .= ' LIMIT '.$limit;
// HACIENDO CONSULTA Y RETORNANDO
}
// METODO PARA HACER UN UPDATE
// INPUT:
// $table | NOMBRE DE LA TABLA
// $pairs | CAMPOS Y VALORES A ACTUALIZAR
// $where | CONDICION DE LA CONSULTA
// OUTPUT: status
function update($table, $pairs, $where){
$this->_querys++;
// DESCOMPONER CAMPOS DE UN ARRAY
else $fields = $pairs;
// ARMANDO CONSULTA
$q = 'UPDATE '.$table.' SET '.$fields.' WHERE '.$where;
// REALIZANDO CONSULTA
// RETORNANDO ESTADO
if($result) return true;
else return false;
}
// METODO PARA HACER UN REPLACE
// INPUT:
// $table | NOMBRE DE LA TABLA
// $fields | CAMPOS A REEMPLAZAR
// $values | VALORES A REEMPLAZAR
// OUTPUT: status
function replace($table, $fields, $values){
$this->_querys++;
// ARMANDO CONSULTA
$q = "REPLACE INTO $table ($fields) VALUES ($values)";
// REALIZANDO CONSULTA
// RETORNANDO ESTADO
if($result) return true;
else return false;
}
// METODO PARA HACER UN INSERT
// INPUT:
// $table | NOMBRE DE LA TABLA
// $fields | CAMPOS
// $values | VALORES
// OUTPUT: status
function insert($table, $fields, $values){
$this->_querys++;
// ARMANDO CONSULTA
$q = 'INSERT INTO '.$table.' ('.$fields.') VALUES ('.$values.')';
// REALIZANDO CONSULTA
// RETORNANDO ESTADO
if($result) return true;
else return false;
}
// METODO PARA HACER UN DELETE
// INPUT:
// $table | NOMBRE DE LA TABLA
// $where | CONDICION
// OUTPUT: status
function delete($table, $where){
$this->_querys++;
// ARMANDO CONSULTA
$q = 'DELETE FROM '.$table.' WHERE '.$where;
// REALIZANDO CONSULTA
// RETORNANDO ESTADO
if($result) return true;
else return false;
}
// METODO PARA HACER UNA CONSULTA Y OBTENER OBJETOS
// INPUT:
// $table | NOMBRE DE LA TABLA
// $fields | CAMPOS A SELECCIONAR DE LA TABLA
// $where | CONDICION DE LA CONSULTA
// $order | ORDEN DE LOS RESULTADOS
// $limit | LIMITE DE RESULTADOS
// OUTPUT: $result
function data($table, $fields, $where =NULL, $order = NULL, $limit = NULL){
$this->_querys++;
// CREANDO LA CONSULTA
$q = 'SELECT '.$fields.' FROM '.$table;
if($where) $q .= ' WHERE '.$where;
if($order) $q .= ' ORDER BY '.$order;
if($limit) $q .= ' LIMIT '.$limit;
// HACIENDO CONSULTA
// CREANDO Y RETORNANDO OBJETOS
else return false;
}
// METODO PARA CREAR OBJETOS DESDE UNA CONSULTA
// INPUT: $result
// OUTPUT: $objs
function fetch_objects($result){
return $objs;
}
// METODO PARA CREAR ARRAY DESDE UNA CONSULTA
// INPUT: $result
// OUTPUT: array
function fetch_assoc($result){
}
// METODO PARA CREAR ARRAY DESDE UNA CONSULTA
// INPUT: $result
// OUTPUT: array
function fetch_array($result,$array = NULL){
return $array;
}
// METODO PARA OBTENER EL VALOR DE UNA ROW
// INPUT: $result
// OUTPUT: array
function fetch_row($result){
}
// METODO PARA CONTAR EL NUMERO DE RESULTADOS
// INPUT: $result
// OUTPUT: num_rows
function num_rows($result){
}
// METODO PARA LIBERAR MEMORIA
// INPUT: $result
// OUTPUT: void
function free($result = 0){
}
// METODO PARA RETORNAR EL ULTIMO ID DE UN INSERT
// INPUT: void
// OUTPUT: status
function insert_id(){
$this->_querys++;
}
// METODO PARA RETORNAR LOS ERRORES
// INPUT: void
// OUTPUT: status
function error(){
}
}