*
  • 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 ?>