<?
//Clase que permite crear un recordset
class Recordset
{
//Definición de variables
var $manejador = "pgsql";
var $servidor = "localhost";
var $usuario = "postgres";
var $clave = "";
var $puerto = "5432";
var $sql = "";
var $limite_inicio = 0;
var $limite_cantidad = 0;
var $bd = "despacho_corresp";
var $conexion;
var $tabla;
var $fila;
var $posicion = -1;
var $total_registros;
var $total_campos;
var $total_paginas;
var $pagina_actual;
var $pagina_anterior;
var $pagina_siguiente;
function getBD(){
return $this->bd;
}
//Función con la que se abre el recordset conectandose a la base de datos
function abrir()
{
switch ($this->manejador)
{
case "mysql":
if ($this->limite_cantidad > 0)
{
$this->sql = $this->sql." LIMIT ".$this->limite_inicio.",".$this->limite_cantidad;
}
$this->conexion = @mysql_pconnect($this->servidor, $this->usuario, $this->clave) or die("<strong>".htmlentities("ˇServidor, usuario o clave incorecta!")."</strong>");
@mysql_select_db($this->bd) or die("<strong>".htmlentities("ˇLa base de datos (".$this->bd.") no se encuentra!")."</strong>");
$this->tabla = @mysql_query ($this->sql) or die("<strong>".htmlentities("ˇError en la consulta: ".$this->sql."!")."</strong>");
$this->total_registros = @mysql_num_rows($this->tabla);
$this->total_campos = @mysql_num_fields($this->tabla);
break;
case "mssql":
$this->conexion = @mssql_pconnect ($this->servidor, $this->usuario, $this->clave) or die("<strong>".htmlentities("ˇServidor, usuario o clave incorecta!")."</strong>");
@mssql_select_db($this->bd) or die("<strong>".htmlentities("ˇLa base de datos (".$this->bd.") no se encuentra!")."</strong>");
$this->tabla = @mssql_query ($this->sql) or die("<strong>".htmlentities("ˇError en la consulta: ".$this->sql."!")."</strong>");
$this->total_registros = @mssql_num_rows ($this->tabla);
$this->total_campos = @mssql_num_fields($this->tabla);
break;
case "pgsql":
if ($this->limite_cantidad > 0)
$this->sql = $this->sql." LIMIT ".$this->limite_cantidad." OFFSET ".$this->limite_inicio;
$this->conexion = @pg_pconnect("host=$this->servidor port=$this->puerto dbname=$this->bd user=$this->usuario password=$this->clave") or die("<strong>".htmlentities("ˇServidor, puerto, db, usuario o clave incorecta!")."</strong>");
$this->tabla = @pg_query ($this->sql) or die("<strong>".htmlentities("ˇError en la consulta: ".$this->sql."!")."</strong>");
$this->total_registros = @pg_num_rows ($this->tabla);
$this->total_campos = @pg_num_fields($this->tabla);
}
}
//Función que libera la memoria del recordset
function cerrar()
{
switch ($this->manejador)
{
case "mysql":
@mysql_free_result ($this->tabla);
@mysql_close($this->conexion);
break;
case "mssql":
@mssql_free_result ($this->tabla);
@mssql_close($this->conexion);
break;
case "pgsql":
@pg_free_result ($this->tabla);
@pg_close($this->conexion);
break;
}
}
//Función que permite desplazar el puntero del recordset
function desplazar()
{
if ($this->posicion <= $this->total_registros && $this->posicion >= 0)
{
switch ($this->manejador)
{
case "mysql":
mysql_data_seek($this->tabla,$this->posicion);
$this->fila = mysql_fetch_array($this->tabla);
break;
case "mssql":
mssql_data_seek($this->tabla,$this->posicion);
$this->fila = mssql_fetch_array($this->tabla);
break;
case "pgsql":
pg_result_seek($this->tabla,$this->posicion);
$this->fila = pg_fetch_array($this->tabla);
break;
}
}
else
{
echo "<strong>ˇla posición esta fuera del rango!</strong>";
}
}
//Función que permite mover el cursor al registro siguiente dentro del recordset
function siguiente()
{
if ($this->total_registros > 0 && $this->posicion + 1 < $this->total_registros)
{
$this->posicion++;
$this->desplazar();
}
}
//Función que permite mover el cursor al registro anterior dentro del recordset
function anterior()
{
if ($this->total_registros > 0 && $this->posicion - 1 >= 0)
{
$this->posicion--;
$this->desplazar();
}
}
//Función para desplazarse a un registro cualquiera segun la posición dentro del recordset
function mover($posicion)
{
if ($this->total_registros > 0)
{
$this->posicion = $posicion;
$this->desplazar();
}
}
//Función para desplazarse al principio del recordset
function mover_inicio()
{
if ($this->total_registros > 0)
{
$this->posicion = 0;
$this->desplazar();
}
}
//Función para desplazarse al final del recordset
function mover_final()
{
if ($this->total_registros > 0)
{
$this->posicion = $this->total_registros - 1;
$this->desplazar();
}
}
//Función para paginar los resultados
//Solo trabaja con el motor de base de datos Mysql
function paginar($pagina,$cantidad)
{
if($this->manejador != "mysql" && $this->manejador != "pgsql") return;
$this->abrir();
if($this->total_registros > 0)
{
$this->pagina_actual = $pagina;
$this->total_paginas = ceil($this->total_registros / $cantidad);
$this->pagina_anterior = 1;
$this->pagina_siguiente = $this->total_paginas;
if($pagina > 1)
$this->pagina_anterior = $pagina - 1;
if($pagina < $this->total_paginas)
$this->pagina_siguiente = $pagina + 1;
$this->cerrar();
$this->limite_inicio = ($pagina * $cantidad) - $cantidad;
$this->limite_cantidad = $cantidad;
$this->abrir();
}
}
//Función que permite crear el link Primera Página del paginador
//Solo trabaja con el motor de base de datos Mysql
function paginarinicio($ruta,$target,$rutaimagen,$condicion = "")
{
if($this->manejador != "mysql" && $this->manejador != "pgsql") return;
if($this->total_paginas > 1)
{
if($this->pagina_actual > 1)
{
if($condicion != "") $condicion = "&" . $condicion;
echo "<a href=\"$ruta"."?pagina=1".$condicion."\" title=\"Primera Página\" target=\"$target\">";
echo "\n\t<img src=\"$rutaimagen\" align=\"absmiddle\" border=\"0\" />";
echo "\n</a>";
} else {
echo "<img src=\"$rutaimagen\" align=\"absmiddle\" border=\"0\" title=\"Primera Página\" />";
}
}
}
//Función que permite crear el link Anterior Página del paginador
//Solo trabaja con el motor de base de datos Mysql
function paginaratras($ruta,$target,$rutaimagen,$condicion = "")
{
if($this->manejador != "mysql" && $this->manejador != "pgsql") return;
if($this->total_paginas > 1)
{
if($this->pagina_actual > 1)
{
if($condicion != "") $condicion = "&" . $condicion;
echo "<a href=\"$ruta"."?pagina=".($this->pagina_actual - 1).$condicion."\" title=\"Anterior Página\" target=\"$target\">";
echo "\n\t<img src=\"$rutaimagen\" align=\"absmiddle\" border=\"0\" />";
echo "\n</a>";
} else {
echo "<img src=\"$rutaimagen\" align=\"absmiddle\" border=\"0\" title=\"Anterior Página\" />";
}
}
}
//Función que permite crear el link Siguiente Página del paginador
//Solo trabaja con el motor de base de datos Mysql
function paginarsiguiente($ruta,$target,$rutaimagen,$condicion = "")
{
if($this->manejador != "mysql" && $this->manejador != "pgsql") return;
if($this->total_paginas > 1)
{
if($this->pagina_actual < $this->total_paginas)
{
if($condicion != "") $condicion = "&" . $condicion;
echo "<a href=\"$ruta"."?pagina=".($this->pagina_actual + 1).$condicion."\" title=\"Siguiente Página\" target=\"$target\">";
echo "\n\t<img src=\"$rutaimagen\" align=\"absmiddle\" border=\"0\" />";
echo "\n</a>";
} else {
echo "<img src=\"$rutaimagen\" align=\"absmiddle\" border=\"0\" title=\"Siguiente Página\" />";
}
}
}
//Función que permite crear el link Última Página del paginador
//Solo trabaja con el motor de base de datos Mysql
function paginarfin($ruta,$target,$rutaimagen,$condicion = "")
{
if($this->manejador != "mysql" && $this->manejador != "pgsql") return;
if($this->total_paginas > 1)
{
if($this->pagina_actual < $this->total_paginas)
{
if($condicion != "") $condicion = "&" . $condicion;
echo "<a href=\"$ruta"."?pagina=$this->total_paginas".$condicion."\" title=\"Última Página\" target=\"$target\">";
echo "\n\t<img src=\"$rutaimagen\" align=\"absmiddle\" border=\"0\" />";
echo "\n</a>";
} else {
echo "<img src=\"$rutaimagen\" align=\"absmiddle\" border=\"0\" title=\"Última Página\" />";
}
}
}
//Función que permite crear todo el paginador
function crearpaginador($ruta,$target,$rutaimagen,$condicion = "")
{
if($this->total_paginas > 1)
{
echo '<table align="center" cellpadding="2" >';
echo "\n\t<tr>";
echo "\n\t\t<td>";
$this->paginarinicio($ruta,$target,$rutaimagen."inicio.gif",$condicion);
echo "</td>";
echo "\n\t\t<td>";
$this->paginaratras($ruta,$target,$rutaimagen."atras.gif",$condicion);
echo "</td>";
echo "\n\t\t<td>Página ".$this->pagina_actual." / ".$this->total_paginas."</td>";
echo "\n\t\t<td>";
$this->paginarsiguiente($ruta,$target,$rutaimagen."siguiente.gif",$condicion);
echo "</td>";
echo "\n\t\t<td>";
$this->paginarfin($ruta,$target,$rutaimagen."ultimo.gif",$condicion);
echo "</td>";
echo "\n\t</tr>";
echo "\n</table>";
}
}
//Funcion que permite crear todo un paginador usando AJAX
function CrearPaginadorAjax($archivo,$rutaimagen,$ajax,$condicion = ""){
$html = '<table align="center" cellpadding="2" >
<tr>
<td><img style="cursor:pointer" title="Primera Página" src="'.$rutaimagen.'inicio.gif" onclick="'.$ajax.'(\''.$archivo.'?pagina=1'.$condicion.'\');" /></td>
<td><img style="cursor:pointer" title="Anterior Página" src="'.$rutaimagen.'atras.gif" onclick="'.$ajax.'(\''.$archivo.'?pagina='.$this->pagina_anterior.$condicion.'\');" /></td>
<td>'.$this->pagina_actual." / ".$this->total_paginas.'</td>
<td><img style="cursor:pointer" title="Siguiente Página" src="'.$rutaimagen.'siguiente.gif" onclick="'.$ajax.'(\''.$archivo.'?pagina='.$this->pagina_siguiente.$condicion.'\');" /></td>
<td><img style="cursor:pointer" title="Última Página" src="'.$rutaimagen.'ultimo.gif" onclick="'.$ajax.'(\''.$archivo.'?pagina='.$this->total_paginas.$condicion.'\');" /></td>
</tr>
</table>';
if($this->total_paginas == 1)
$html = " ";
echo $html;
}
//Función que permite llenar un ComboBox en HTML
function llenarcombo($opciones = "", $checked = "")
{
echo "<select $opciones>";
echo "<option value=''></option>";
$this->abrir();
if($this->total_registros > 0)
{
for($i = 1; $i <= $this->total_registros ; $i++)
{
$this->siguiente();
if($this->fila[0] == $checked)
{
$html = "<option value='".$this->fila[0]."' selected=\"selected\">".$this->fila[1]."</option>";
} else {
$html = "<option value='".$this->fila[0]."'>".$this->fila[1]."</option>";
}
echo $html;
}
}
echo "</select>";
}
//Función que permite llenar un grupo de RadioButton en HTML
function llenarradio($nombre, $ancho = "", $checked = "", $id = "")
{
$this->abrir();
if($this->total_registros > 0)
{
echo "<table width='$ancho'>";
echo "<tr>";
for($i = 1; $i <= $this->total_registros; $i++)
{
$seleccionado="";
$this->siguiente();
if($checked!="")
{
if($this->fila[0] == $checked){ $seleccionado="checked='checked'"; }
} else {
if($i==1){ $seleccionado="checked='checked'"; }
}
if ($i==1)
{
echo "<td align=\"left\">";
} elseif($i == $this->total_registros) {
echo "<td align=\"right\">";
} else {
echo "<td align=\"center\">";
}
if($id != ""){ $mid = "id='".$id.$i."'"; }
echo "<input type='radio' name='$nombre' value='".$this->fila[0]."' $mid $seleccionado/> ".$this->fila[1];
echo "</td>";
}
echo "</tr>";
echo "</table>";
}
}
//Función que permite optimizar una tabla
function optimizartabla($tabla)
{
if($this->manejador == "mysql"){
@mysql_pconnect ($this->servidor, $this->usuario, $this->clave) or die("<strong>".htmlentities("ˇServidor, usuario o clave incorecta!")."</strong>");
$sql="OPTIMIZE TABLE $tabla";
@mysql_db_query($this->bd,$sql);
}elseif($this->manejador == "pgsql"){
@pg_pconnect("host=$this->servidor port=$this->puerto dbname=$this->bd user=$this->usuario password=$this->clave") or die("<strong>".htmlentities("ˇServidor, usuario o clave incorecta!")."</strong>");
@pg_query("VACUUM ANALIZE TABLE $tabla");
}
}
//Función que permite truncar una tabla
function truncartabla($tabla)
{
if($this->manejador == "mysql"){
@mysql_pconnect ($this->servidor, $this->usuario, $this->clave) or die("<strong>".htmlentities("ˇServidor, usuario o clave incorecta!")."</strong>");
$sql="TRUNCATE TABLE $tabla";
@mysql_db_query($this->bd,$sql);
}elseif($this->manejador == "pgsql"){
@mysql_pconnect("host=$this->servidor port=$this->puerto dbname=$this->bd user=$this->usuario password=$this->clave") or die("<strong>".htmlentities("ˇServidor, usuario o clave incorecta!")."</strong>");
@pg_query("TRUNCATE $tabla");
}
}
//Función que permite codificar en UTF-8 bajo el formato HTML
function codificar($texto)
{
return htmlentities(stripslashes($texto),ENT_QUOTES,"UTF-8");
}
//Función que permite codificar en UTF-8 bajo el formato HTML
function decodificar($texto)
{
return html_entity_decode(stripslashes($texto),ENT_QUOTES,"UTF-8");
}
//Función que permite dar formato correcto a las fechas en MySQL
function formatofecha($fecha,$signo="/")
{
$nfecha = explode($signo,strval($fecha));
return $nfecha[2]."-".$nfecha[1]."-".$nfecha[0];
}
//Función que permite dar formato moneda
function moneda($valor)
{
return "Bs.F. ".number_format($valor,2,",",".");
}
//Función que permite dar formato numero
function montos($valor,$deci = 2)
{
return number_format($valor,$deci,",",".");
}
//Funcion Mayusculas en HTML
function masyusHTML($texto)
{
$text = $this->decodificar($texto);
$text = strtoupper($text);
$text = $this->codificar($text);
return $text;
}
}
?>
|