include_once(dirname(__FILE__)."/../db/class.conexion.php"); /** * Clase Query * * Se declara una clase para poder ejecutar las consultas, esta clase llama a la clase anterior */ class Query { var $conexion; var $consulta; var $resultados; var $datos; var $registros; var $fileconn; var $depurar; var $tipodb; /** * Funcion throw_ex * * Se encarga de devolver una excepcion con el tipo de error que toma como parametro * * @param string $er * @throws Exception */ function throw_ex($er) { throw new Exception($er); } /** * Funcion Query * * constructor, solo crea una conexion usando la clase "Conexion" * * @param string $connection * @param int $ispermanent */ public function __construct($connection="coneccion", $ispermanent=0) { $this->fileconn=$connection; require(dirname(__FILE__)."/../db/".$this->fileconn.'.php'); $this->depurar=$depurar_DBServer; $this->tipodb=$tipo_DBServer; $this->conexion= new Conexion($connection, $ispermanent); } public function getTipoDB() { return $this->tipodb; } /** * Funcion execute Query * * Metodo que ejecuta una consulta y la guarda en el atributo $consulta * * @param string $sqlconsulta * @return array() Resultados de la query. */ public function executeQuery($sqlconsulta) { if (strpos(strtoupper($sqlconsulta),"ROWID") > -1){ //Replace para cuando se pide un * que espera se devuelva tambin ROWID //No se aplica en todas las consultas, y por eso la condicin. if ( !(strpos(strtoupper($sqlconsulta),"COUNT(ROWID)") > -1) && !(strpos(strtoupper($sqlconsulta),"ROWID AS PKRECORDID") > -1) ) { //echo "1- ".$sqlconsulta.""; $sqlconsulta = preg_replace("/select([^\*]+)\*\s+from/i","SELECT *, ROWID FROM",$sqlconsulta); //echo "2- ".$sqlconsulta.""; } //Replace agregado por Gustavo para Oracle //ROWID se convierte a char require(dirname(__FILE__)."/../config/config.php"); if((isset($_SESSION[$claveSession]["tipo_DBServer"])) && ($_SESSION[$claveSession]["tipo_DBServer"] =='Oracle')) { $sqlconsulta = str_replace('ROWID','rowidtochar(ROWID)',$sqlconsulta); //echo "3- ".$sqlconsulta.""; //Anexo: el replace reemplaza en SELECT y en WHERE. //En SELECT es necesario agregarle alias al campo. //Eso es para que luego los formularios encuentren al //campo en el array asociativo. $sqlconsulta = preg_replace("/select(.+)rowidtochar\(ROWID\)(.*)from/i","SELECT\\1rowidtochar(ROWID) as ROWID\\2FROM",$sqlconsulta); //echo "4- ".$sqlconsulta.""; } } if($this->depurar=="1") { echo "Conexion: "; print_r($this->conexion); echo "Consulta SQL: ".$sqlconsulta.""; } switch($this->tipodb) { case "Mysql": $this->consulta= mysql_query($sqlconsulta,$this->conexion->getConexion()) or $this->throw_ex(mysql_error()); $this->datos = array(); if (($this->consulta !== true ) && ($this->consulta !== false)) while ($this->datos[] = mysql_fetch_assoc($this->consulta)) {} $aux = array(); for($i=0;$idatos)-1;$i++) $aux[$i]=$this->datos[$i]; $this->datos=$aux; $this->registros = 0; if (($this->consulta !== true ) && ($this->consulta !== false)) $this->registros = mysql_num_rows($this->consulta); break; case "Postgress": $this->consulta= pg_query($this->conexion->getConexion(),$sqlconsulta) or die('La consulta fallo: ' . pg_last_error()); $this->datos=pg_fetch_all($this->consulta); $this->registros = pg_num_rows($this->consulta); break; case "MsSQL": $this->consulta = mssql_query($sqlconsulta, $this->conexion->getConexion()); if (($this->consulta !== true ) && ($this->consulta !== false)) while ($this->datos[] = mssql_fetch_assoc($this->consulta)) {} $aux = array(); for($i = 0; $i < count($this->datos) - 1; $i++) $aux[$i] = $this->datos[$i]; $this->datos = $aux; $this->registros = 0; if(($this->consulta !== true) && ($this->consulta !== false)) $this->registros = mssql_num_rows($this->consulta); break; case "Oracle": $this->consulta=oci_parse($this->conexion->getConexion(),$sqlconsulta); if($this->consulta != false) { if(oci_execute($this->consulta)) { if(oci_fetch_all($this->consulta, $this->datos, 0, -1, OCI_FETCHSTATEMENT_BY_ROW + OCI_ASSOC) == false) { $e=oci_error($this->consulta); } } else { $e=oci_error($this->consulta); trigger_error(htmlentities($e['message'],ENT_QUOTES), E_USER_ERROR); } } else { $e=oci_error($this->consulta); trigger_error(htmlentities($e['message'],ENT_QUOTES), E_USER_ERROR); } $this->registros = oci_num_rows($this->consulta); break; default: trigger_error(htmlentities('Error archivo de configuracion base de datos',ENT_QUOTES), E_USER_ERROR); } if(count($this->datos)>0 && $this->datos !== false) { $indice=0; foreach($this->datos as $dato) { $this->resultados[$indice]=array_change_key_case($dato); $indice++; } } if($this->depurar=="1") { echo "Registros: ".$this->registros.""; echo "Consulta Res: "; print_r($this->consulta); echo "Datos: "; print_r($this->datos); echo "Resultados"; print_r($this->resultados); } return $this->resultados; } public function getConsulta() // retorna la consulta en forma de result. { return $this->consulta; } public function getData() // retorna la consulta en forma de result. { return $this->datos; } public function getResult() // retorna la consulta en forma de result. { return $this->resultados; } public function Close() // cierra la conexion { $this->conexion->Close(); } public function clean() // libera la consulta { switch($this->tipodb)//($tipo_DBServer) { case "Mysql": mysql_free_result($this->consulta); break; case "Postgress": pg_free_result($this->consulta); break; case "Oracle": oci_free_statement($this->consulta); break; case "MsSQL": mssql_free_result($this->consulta); break; default: trigger_error(htmlentities('Error archivo de configuracion base de datos',ENT_QUOTES), E_USER_ERROR); } $this->registros = 0; $this->consulta = ""; $this->datos = array(); $this->resultados = array(); } public function getRegistros() // debuelve la cantidad de registros encontrados { return $this->registros; } public function getAffect() // devuelve las cantidad de filas afectadas { $return = ''; switch($this->tipodb)//($tipo_DBServer) { case "Mysql": $return = mysql_affected_rows($this->conexion->getConexion()); break; case "Postgress": $return = pg_affected_rows($this->consulta); break; case "Oracle": $return = oci_num_rows($this->consulta); break; case "MsSQL": $return = mssql_num_rows($this->conexion->getConexion()); break; default: trigger_error(htmlentities('Error archivo de configuracion base de datos',ENT_QUOTES), E_USER_ERROR); } return $return; } public function getInsertId() // devuelve id ingresado { switch($this->tipodb)//($tipo_DBServer) { case "Mysql": return mysql_insert_id($this->conexion->getConexion()) ; break; case "Postgress": $return = pg_last_oid($this->consulta); break; case "Oracle": $return = oci_num_rows($this->consulta); break; case "MsSQL": $return = mssql_num_rows($this->consulta); break; default: trigger_error(htmlentities('Error archivo de configuracion base de datos',ENT_QUOTES), E_USER_ERROR); } } public function selectLimit($strQuery, $offset, $limit) { $argpreLimit = ""; $argLimit = ""; switch($this->tipodb) { case "Mysql": if($limit != -1 && $offset != -1) { $argLimit = ' LIMIT '.$limit.','.$offset; } break; case "Postgress": if($limit != -1 && $offset != -1) { $argLimit = ' LIMIT '.$offset.' OFFSET '.$limit.' '; } break; case "Oracle": if($limit != -1 && $offset != -1) { $limit = $offset+$limit; $argpreLimit = ' SELECT * FROM ( '; $argLimit = ' ) WHERE ROWNUM>'.$offset.' AND ROWNUM<'.$limit.' '; } break; default: trigger_error(htmlentities('Error archivo de configuracion base de datos',ENT_QUOTES), E_USER_ERROR); } return $argpreLimit.$strQuery.$argLimit; } public function getLimit($inicio, $fin = 0) { $return = ''; switch($this->tipodb) { case "Mysql": if ($fin > 0){ $return = " limit $inicio, $fin"; } else { $return = " limit $inicio"; } break; case "Postgress": if ($fin > 0){ $return = " ROWID >= $inicio and ROWID <= $fin"; } else { $return = " ROWID <= $inicio"; } break; case "Oracle": if ($fin > 0){ $return = " ROWNUM >= $inicio and ROWNUM <= $fin"; } else { $return = " ROWNUM <= $inicio"; } break; default: trigger_error(htmlentities('Error archivo de configuracion base de datos',ENT_QUOTES), E_USER_ERROR); } return $return; } } ?> Ministerio del Interior, Obras Públicas y Vivienda Aa- Aa+ Domingo, 11 de Mayo del 2025 INICIO DÓNDE LO TRAMITO PREGUNTAS FRECUENTES CÓMO HACERLO CONTACTO EN EL PAÍS EN EL EXTERIOR Donde lo tramito si resido en el extranjero.
Domingo, 11 de Mayo del 2025
Donde lo tramito si resido en el extranjero.