mas...
db.class.php
Código PHP:
<?php
require ("inc.config.php");
class db {
/* Variable de conexion*/
var $servidor;
var $puerto;
var $nombreBD;
var $nombreDeUsuario;
var $contrasena;
/* identificador de conexion y consulta */
var $enlace;
var $resultado;
var $consulta_id;
var $sql;
/* texto error */
var $Error = ""; //texto de error dado por postgres
var $Errno = 0; //numero de error
var $Errtex = ""; //texto de error a mostrar
function db(){
/* Declaracion de Variable de datos de conexion */
global $cfg;
/* asignacion de variables globales*/
$this->servidor = $cfg->servidor;
$this->puerto = $cfg->puerto;
$this->nombreBD = $cfg->nombreBD;
$this->nombreDeUsuario = $cfg->nombreDeUsuario;
$this->contrasena = $cfg->contrasena;
/* Al llamar al constructor se estable crea inmediatamente la coneccion */
/* si la coneccion se pierde se puede volver a conectar con obj->connect() */
$this->connect();
}
/* metodo conexion*/
function connect(){
global $cfg;
/*creacion de string de conexion*/
$sConn = "host=$this->servidor port=$this->puerto dbname=$this->nombreBD user=$this->nombreDeUsuario password=$this->contrasena";
/*conectar*/
$this->enlace = pg_connect($sConn);
/* si la coneccion fallo, se intenta nuevamente en x segundo mas*/
if($cfg->reconect && !$this->enlace){
sleep($cfg->se_reconect);
$this->enlace = pg_connect($sConn);
}
/* si falla otra vez, se controla el error*/
if (!$this->enlace) {
$this->errControl("Ha fallado la conexión");
return false;
}
}
/*metodo de ejecucion de consultas*/
function query($sql){
$this->sql = $sql;
if ($this->sql == "") {
$this->errControl("No ha especificado una consulta SQL");
return false;
}
$this->consulta_id = pg_query($this->enlace,$this->sql);
if (!$this->consulta_id) {
$this->errControl("Consulta Invalida");
return false;
}
return true;
}
/*recuperar registros*/
function fetch(){
if($this->resultado = pg_fetch_array($this->consulta_id)){
return $this->resultado;
}else{
// entra en este caso cuando se acaban los registros
// no por error, es para que termine el while.
return false;
}
}
/* fetch que retorna todo en una matriz asociativa y numerica*/
/* ejemplo de uso
$tabla = $objDB->fetchm();
$n = count($tablas);
for($i = 0; $i < $n; $i++){
echo $tabla[$i][0]."\r\n";
}
*/
function fetchm(){
$i = false;
while( $fila = $this->fetch() ){
$res[]= $fila;
$i = true;
}
if($i)
return $res;
else
false;
}
/* numero de campos*/
function numcampos() {
return pg_num_fields($this->consulta_id);
}
/* Devuelve el número de registros de una consulta */
function num(){
return pg_num_rows($this->consulta_id);
}
/* Devuelve el nombre de un campo de una consulta */
function nombrecampo($numcampo) {
return pg_field_name($this->consulta_id, $numcampo);
}
/* Devuelve el tipo de un campo de una consulta */
function typecampo($numcampo) {
return pg_field_type($this->consulta_id, $numcampo);
}
/* Muestra los datos en html de una consulta */
function verconsulta() {
echo "<table width=\"895\" border=\"2\" align=\"center\" cellpadding=\"0\" cellspacing=\"2\" bordercolor=\"#70D361\">\n";
// mostramos los nombres de los campos
for ($i = 0; $i < $this->numcampos(); $i++){
echo "<td><b>".$this->nombrecampo($i)."</b></td>\n";
}
echo "</tr>\n";
// mostrarmos los registros
while ($row = $this->fetch()) {
echo "<tr> \n";
for ($i = 0; $i < $this->numcampos(); $i++){
if($row[$i] == null and $i == 0 ){
echo "<td>Total</td>\n";
}else{
if($row[$i] == null){
echo "<td align=\"center\">-</td>\n";
}else{
echo "<td>".$row[$i]."</td>\n";
}
}
}
echo "</tr>\n";
}
}
/* Metodo para almacenar errores*/
function saveError(){
global $cfg;
/*
// Creacion de mensaje a almacenar
$errorT = "-ERROR : ".$this->Errtex."\r\n" ;
$fecha = "\t[".date("d")."-".date("n")."-".date("y")."]"."[".date("H").":".date("i").":".date("s")."]\r\n";
$pagina = "\tDesde Pagina: ".$_SERVER['PHP_SELF']."\r\n";
$ip = "\tIP: ".$_SERVER['REMOTE_ADDR']."\r\n";
$error = "\t\"".$this->Error."\"\r\n";
$sql = "\t\"".$this->sql."\"\r\n";
$save = $errorT.$fecha.$pagina.$ip.$error.$sql;
// guardando en archivo
$archivo = "../log/error.log";
$ddf = fopen($archivo,'a+');
fwrite($ddf, $save);
fclose($ddf);
*/
}
/* control de errores */
function errControl($msg){
$this->Errno = "";
$this->Error = pg_last_error($this->enlace);
$this->Errtex = $msg;
$this->saveError();
}
function free(){
pg_free_result($this->consulta_id);
return true;
}
function close(){
pg_close($this->enlace);
return true;
}
}// Fin Clase
?>
inc.config.php
Código PHP:
<?php
$cfg->servidor = "localhost";
$cfg->nombreBD = "nombredb";
$cfg->puerto = 5432;
$cfg->nombreDeUsuario = "user";
$cfg->contrasena = "pass";
$cfg->se_reconect = 4;
$cfg->reconect = 1;
?>
.....