Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Postgres y Mysql

Estas en el tema de Postgres y Mysql en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Aqui les dejo una clase en la que he estado trabajando para que hagan sus comentarios y sugerencias, tengo un problema que no me reporta ...
  #1 (permalink)  
Antiguo 02/07/2009, 07:14
 
Fecha de Ingreso: abril-2008
Mensajes: 7
Antigüedad: 16 años, 1 mes
Puntos: 0
Postgres y Mysql

Aqui les dejo una clase en la que he estado trabajando para que hagan sus comentarios y sugerencias, tengo un problema que no me reporta los errores de conexion en postgres, la funcion pg_errormessage de devuelve vacia si saben como hacer para capturar el mensaje de error ayudan mucho :P

config.php
Código PHP:
<?php
    
    $conf_db
[1]["servidor"] = "127.0.0.1";
    
$conf_db[1]["usuario"]  = "postgres";
    
$conf_db[1]["password"] = "123456";
    
$conf_db[1]["bbdd"]     = "pruebas";
    
$conf_db[1]["port"]     = "5432";
    
$conf_db[1]["typedb"]   = "2";
    
    
$conf_db[2]["servidor"] = "127.0.0.1";
    
$conf_db[2]["usuario"]  = "root";
    
$conf_db[2]["password"] = "123456";
    
$conf_db[2]["bbdd"]     = "test";
    
$conf_db[2]["port"]     = "3306";
    
$conf_db[2]["typedb"]   = "1";

/*    
    Type DB: Motor de base de datos
    
    1: Mysql
    2: PostgreSQL
    
*/       
         
?>
class_postgres.php
Código PHP:
<?php
class Postgresql
{
    
/////////////////////////
    // PROPIEDADES PÚLICAS //
    /////////////////////////
    
    
public $consulta;                                
    
    
//////////////////////////
    // PROPIEDADES PRIVADAS //
    //////////////////////////
    
    
private $testeando        true;                
    private 
$email_admin;    
    private 
$conexion;
    private 
$selec_bbdd;
    private 
$string_sucio;
    private 
$string_limpio;
    private 
$resultado;
    
    function 
__construct ($servidor,$usuario,$password,$bbdd,$port)
    {    
        
// conecta a la bbdd
        
$this-> conexion = @pg_connect ("host=".$servidor." port=".$port." dbname=".$bbdd." user=".$usuario." password=".$password."") or die ($this-> err ());
        
    }
    
    
    
//////////////////////
    // MÉTODOS PRIVADOS //
    //////////////////////
    
    
function err ()
    {
        if (
$this-> testeando )
        {
            echo 
"<b><font color='red'>ERROR:</b> --> </b> Conexion a base de datos fallida</font>";
            exit ();
        } 
        else
        {
            echo 
"<b><font color='red'>Ha habido un error</font></b>";
            if (
$this-> email_admin )
            {
                echo 
", el administrador ha sido informado por email";
                
mail ($this-> email_admin ,
                
"Error Postgresql en" .$_SERVER ['PHP_SELF'] ,
                
"Error-> " .pg_result_error ().
                
"\n en->" .$_SERVER ['PHP_SELF'].$_SERVER ['QUERY_STRING'].
                
"\n a las-> " .date ('H:i:s - D-d-m-Y'));
            }
            exit ();
        }
    }
    
    
//////////////////////
    // MÉTODOS PÚBLICOS //
    //////////////////////
    
        
    
function escapar_chars ()
    {
        
// añade contrabarras a las palabras que lleven ' " \
        
$this-> string_limpio addslashes ($this-> string_sucio );
        return (
$this-> string_limpio );
    }
    function 
desescapar_chars ()
    {
        
// quita las contrabarras para mostrar el texto original con ' " \
        
$this-> string_limpio stripslashes ($this-> string_sucio );
        return (
$this-> string_limpio );
    }
    
    function 
ejecutar($consulta)
    {
        
$this-> resultado = @pg_exec ($this-> conexion,$consulta)or die("<i>Error En Consulta SQL:</i><br><span style='color:#FF0000; font-weight:bold;'>$consulta</span>");
        
$this-> consulta $consulta;

        
//return ($this-> resultado);
        
return ($this-> consulta);
    }
    
    function 
num_filas ()
    {
        
// devuelve el numero total de filas (horizontal) de la consulta
        
return  pg_num_rows ($this-> resultado);
    }
    function 
num_columnas ()
    {
        
// devuelve el numero total de columnas (vertical) de la consulta
        
return  pg_num_fields ($this-> resultado);
    }
    
    function 
lista_objeto ()
    {
        
// regresará las filas en el resultado como un objeto
        
return pg_fetch_object ($this-> resultado);
    }
    
    function 
lista_array ()
    {
        
// regresará las filas en el resultado como un array
        
return  pg_fetch_array ($this-> resultado);
    }    
    
            
    function 
__destruct ()
    {
        
// cierra la conexion existente
        
pg_close ($this-> conexion );
    }    
    
// fin de la clase

?>
class_mysql.php

Código PHP:
<?php
class Mysql
{
    
/////////////////////////
    // PROPIEDADES PÚLICAS //
    /////////////////////////
    
    
public $consulta;
    
    
    
//////////////////////////
    // PROPIEDADES PRIVADAS //
    //////////////////////////
    
    
private $testeando        true;    
    private 
$email_admin;    
    private 
$conexion;    
    private 
$selec_bbdd;
    private 
$string_sucio;
    private 
$string_limpio;
    private 
$resultado;
    
    function 
__construct ($servidor,$usuario,$password,$bbdd,$port)
    {
        
// conecta a la bbdd
        
$this-> conexion = @mysql_connect($servidor.":".$port$usuario$password) or $this-> err ();
        
$this-> selec_bbdd = @mysql_select_db ($bbdd$this-> conexion) or $this-> err ();
    }

    
//////////////////////
    // MÉTODOS PRIVADOS //
    //////////////////////
    
    
function err ()
    {
        if (
$this-> testeando )
        {
            echo 
"<b><font color='red'>ERROR:</b> --> </b>" .
            
mysql_errno ()."</b> - <i>" .mysql_error ()."</i></font>";
            exit ();
        } 
        else
        {
            echo 
"<b><font color='red'>Ha habido un error</font></b>";
            if (
$this-> email_admin )
            {
                echo 
", el administrador ha sido informado por email";
                
mail ($this-> email_admin ,
                
"Error mysql en" .$_SERVER ['PHP_SELF'] ,
                
"Error-> " .mysql_error ().
                
"\n en->" .$_SERVER ['PHP_SELF'].$_SERVER ['QUERY_STRING'].
                
"\n a las-> " .date ('H:i:s - D-d-m-Y'));
            }
            exit ();
        }
    }
    
    
//////////////////////
    // MÉTODOS PÚBLICOS //
    //////////////////////
    
    
    
function escapar_chars ()
    {
        
// añade contrabarras a las palabras que lleven ' " \
        
$this-> string_limpio addslashes ($this-> string_sucio );
        return (
$this-> string_limpio );
    }
    function 
desescapar_chars ()
    {
        
// quita las contrabarras para mostrar el texto original con ' " \
        
$this-> string_limpio stripslashes ($this-> string_sucio );
        return (
$this-> string_limpio );
    }
    
    
    function 
ejecutar($consulta)
    {    
        
// ejecuta consulta Mysql
        //$this-> resultado = @mysql_query ($consulta , $this-> conexion ) or $this-> err ($this-> resultado ) or $this-> err ();
        
$this-> resultado = @mysql_query ($consulta $this-> conexion ) or die("<i>Error En Consulta SQL:</i><br><span style='color:#FF0000; font-weight:bold;'>$consulta</span>");
        
$this-> consulta $consulta;
        
//return ($this-> resultado);
        
return ($this-> consulta);
        
    }
    
    function 
num_filas ()
    {
        
// devuelve el numero total de filas (horizontal) de la consulta
        
return  mysql_num_rows ($this-> resultado);
    }
    function 
num_columnas ()
    {
        
// devuelve el numero total de columnas (vertical) de la consulta
        
return mysql_num_fields ($this-> resultado);
    }
    
    function 
lista_objeto ()
    {
        
// regresará las filas en el resultado como un objeto
        
return  mysql_fetch_object ($this-> resultado);
    }
    
    function 
lista_array ()
    {
        
// regresará las filas en el resultado como un array
        
return mysql_fetch_array ($this-> resultado);
    }    
            
    function 
__destruct()
    {
        
// cierra la conexion existente
        
mysql_close ($this-> conexion);
    }
    
    
// fin de la clase

?>
class_controlador.php

Código PHP:
<?php
require_once "class_postgres.php";
require_once 
"class_mysql.php";

class 
conexionDB{
 
    function 
__construct(){        
        
        if (
func_num_args()>1){
            
$nombreConex func_get_arg(1);
        }else{
            
$nombreConex "db";
        }
    
/*    if (func_num_args()==7){
            $servidor   = func_get_arg(1);             
            $usuario     = func_get_arg(2);                
            $password     = func_get_arg(3);                   
            $bbdd         = func_get_arg(4);                    
            $port       = func_get_arg(5);
            $typedb     = func_get_arg(6);
        }else{
            require "config.php";
        }*/
        //////
        
require "config.php";
        if (
func_num_args()>=1){
            
$nconex func_get_arg(0);
        }else{
            
$nconex 1;
        }
            
$servidor   $conf_db[$nconex]["servidor"];             
            
$usuario     $conf_db[$nconex]["usuario"];                
            
$password     $conf_db[$nconex]["password"];                  
            
$bbdd         $conf_db[$nconex]["bbdd"];                    
            
$port       $conf_db[$nconex]["port"];
            
$typedb     $conf_db[$nconex]["typedb"];
        
/////
        
global $$nombreConex;
        
        switch(
$typedb){
            case 
"1":
                $
$nombreConex = new Mysql($servidor,$usuario,$password,$bbdd,$port);
            break;    
            
            case 
"2":
                $
$nombreConex = new Postgresql($servidor,$usuario,$password,$bbdd,$port);
            break;    
        }
    }
}

?>
pruebas.php
Código PHP:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Conexión a DB</title>
</head>

<body>

<?php
require_once "class_controlador.php";



new 
conexionDB();
$db -> ejecutar("SELECT * FROM tabla");
echo 
"<i>" $db->consulta "</i>"
echo 
"<p><strong>Con Ciclo While</strong><p>";
    while (
$fila $db->lista_objeto()) {
        echo 
$fila -> campo"<br>";
    }
echo 
"Numero de Filas: " $db -> num_filas () . "<br>";
echo 
"Numero de Columnas: " $db -> num_columnas () . "<br>";
unset(
$db);
echo 
"<h3>---------------------------------------------------------</h3>";

new 
conexionDB(2);
$db -> ejecutar("SELECT * FROM tabla");
echo 
"<i>" $db->consulta "</i>"
echo 
"<p><strong>Con Ciclo While</strong><p>";
    while (
$fila $db->lista_objeto()) {
        echo 
$fila ->campo"<br>";
    }
echo 
"Numero de Filas: " $db -> num_filas () . "<br>";
echo 
"Numero de Columnas: " $db -> num_columnas () . "<br>";
unset(
$db);
?>
</body>
</html>

Última edición por adjmogollon; 02/07/2009 a las 08:00
  #2 (permalink)  
Antiguo 05/07/2009, 10:51
 
Fecha de Ingreso: agosto-2007
Mensajes: 10
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: Postgres y Mysql

solo una observación los métodos privados (private) sino le colocas el modificador de acceso sera publico (public), eso significa q esos métodos podrán ser accedido desde cualquier instancia...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:04.