*
str_tabla - Contiene el nombre de la tabla a la que hace referencia.
* obj_conexion - El objeto conexión por el que se ha accedido a la tabla
* $obj_errorBD - Referencia al objeto de error global
*
*
* @author David, Keka, Verónica, Raquel y Toni.
* @version $Id: IgepPersistencia.php,v 1.9 2004-09-22 11:41:40 afelixf Exp $
*/
define("NOMBRE_FICHERO","IgepPersistencia.php");
class IgepPersistencia {
/**
* tabla a modificar
*
* @var string str_tabla
*/
var $str_tabla;
/**
* objeto conexion
*
* @var object obj_conexion
*/
var $obj_conexion;
/**
* variable de error
*
* @var object obj_errorNegocio
*/
var $obj_errorBD;
/**
* Constructor
*
* @access public
* @param object $obj_conexion
* @param string $str_tabla
*/
function IgepPersistencia($obj_conexion, $str_tabla) {
//Instanciamos la clase
global $g_error;
$this->obj_errorBD =& $g_error;
$this->obj_conexion = $obj_conexion;
$this->str_tabla = $str_tabla;
}
/**
* Retorna el nombre de la tabla a la que hace referencia.
*
* @access public
* @return string
*/
function getTabla() {
return $this->str_tabla;
}
/**
* Dada una matriz de datos realiza los INSERTs en la tabla.
* El parámetro que recibe es un array de tuplas. Cada tupla
* debe ser un array asociativo del modo ["campo"]=>"valor".
*
* @access public
* @param matriz $m_datos
*/
function insertar($m_datos){
foreach ($m_datos as $v_filaDatos)
{
$res = $this->obj_conexion->autoExecute($this->str_tabla, $v_filaDatos, DB_AUTOQUERY_INSERT);
if (DB::isError($res))
$this->obj_errorBD->setError("IGEP-1",NOMBRE_FICHERO,"Insertar",$res);
}
}// Fin de insertar
/**
* Dada una tupla o fila de la tabla realiza el DELETE. La
* tupla debe ser un array asociativo del modo ["campo"]
* =>"valor". Esta función recibe la fila a borrar porque
* realiza una comprobación de consistencia (se borra la
* tupla siempre y cuando alguien no la haya modificado).
*
* @access public
* @param array $v_filaDatos
*/
function borrar($v_filaDatos){
foreach($v_filaDatos as $prop => $val) {
if ($str_condicion!="") {
$str_condicion.=" AND ";
}
$str_condicion.=$prop;
//Escapamos los carácteres especiales
$val = str_replace("'","''",$val);
$val = str_replace("\\","\\\\",$val);
if (gettype($val)=="string") {
if($val!="")
$str_condicion.="='".$val."'";
else
$str_condicion.=" is null";
}
else
{
if($val!="")
$str_condicion.="=".$val;
else
$str_condicion.=" is null";
}
}//FIN foreach
// Se monta la query con los datos obtenidos
$consulta = "DELETE FROM ".$this->str_tabla. " WHERE " .$str_condicion;
$res = $this->obj_conexion->query($consulta);
if (DB::isError($res))
$this->obj_errorBD->setError("IGEP-2",NOMBRE_FICHERO,"borrar",$res);
else
{
//Comprobamos si existe error de concurrencia.
if ($this->obj_conexion->affectedRows()==0)
$this->obj_errorBD->setError("IGEP-4",NOMBRE_FICHERO,"borrar");
}
}// Fin de borrar
/**
* Dada una tupla o fila de la tabla realiza el UPDATE. Recibe
* dos parámetros; uno es la tupla con los nuevos datos y otro es
* la tupla con los datos que fueron visualizados.Esto se debe a
* que realiza una comprobación de consistencia (se actuliza la
* tupla siempre y cuando alguien no la haya modificado). Los dos
* parámetros son arrays asociativos de la forma ["campo"]=>"valor".
*
* @access public
* @param array $m_datos
*/
function actualizar($v_filaDatos,$v_filaDatosAntiguos){
foreach($v_filaDatos as $prop => $val) {
if ($str_set!="")
$str_set.=" ,";
$str_set.=$prop;
//Escapamos los carácteres especiales
$val = str_replace("'","''",$val);
$val = str_replace("\\","\\\\",$val);
if (gettype($val)=="string")
if($val!="")
$str_set.="='".$val."'";
else
$str_set.="= null";
else
{
if($val!="")
$str_set.="=".$val;
else
$str_set.="= null";
}
}//FIN foreach
foreach($v_filaDatosAntiguos as $prop => $val) {
if ($str_condicion!="") {
$str_condicion.=" AND ";
}
$str_condicion.=$prop;
//Escapamos los carácteres especiales
$val = str_replace("'","''",$val);
$val = str_replace("\\","\\\\",$val);
if (gettype($val)=="string")
if($val!="")
$str_condicion.="='".$val."'";
else
$str_condicion.=" is null";
else
{
if($val!="")
$str_condicion.="=".$val;
else
$str_condicion.=" is null";
}
}//FIN foreach
// Ejecutamos la sentencia de Actualización
if ($str_condicion!="") {
$res = $this->obj_conexion->simpleQuery("UPDATE $this->str_tabla SET ".$str_set." WHERE ".$str_condicion);
if (DB::isError($res))
$this->obj_errorBD->setError("IGEP-3",NOMBRE_FICHERO,"actualizar",$res);
else
{
//Comprobamos si existe error de concurrencia.
if ($this->obj_conexion->affectedRows()==0)
$this->obj_errorBD->setError("IGEP-4",NOMBRE_FICHERO,"actualizar");
}
}//if de condición no vacia
}//FIN de actualizar
/**
* Dada una una consulta realiza la SELECT correspondiente.
*
* @access public
* @param string $str_select
* @return object
*/
function consultar($str_select){
$res = $this->obj_conexion->getAll($str_select,null,DB_FETCHMODE_ASSOC);
if (DB::isError($res))
$this->obj_errorBD->setError("IGEP-5",NOMBRE_FICHERO,"consultar",$res);
return $res;
}// Fin de consultar
/**
* Dada una una consulta realiza la SELECT correspondiente.
*
* @access public
* @param string $str_select
* @return object
*/
function operar($str_operar){
$res = $this->obj_conexion->simpleQuery($str_operar);
if (DB::isError($res))
$this->obj_errorBD->setError("IGEP-11",NOMBRE_FICHERO,"operar",$res);
return $res;
}// Fin de operar
}//FIN clase IgepPersistencia
?>