Ver Mensaje Individual
  #11 (permalink)  
Antiguo 22/07/2008, 21:49
Avatar de enriqueplace
enriqueplace
 
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: Problema: Fatal error: Call to a member function getConexionV() on a non-o

Cita:
Este es el codigo de mi clase para conectarme a la base de datos es bastante sencilla, me parece que es lo que me sugieres cuando dices que me cree una clase persistencia cree una instancia y la utilice pero eso precisamente es lo que hago y sin embargo si no declaro global la variable en la que guardo el objeto me muestra el mensaje diciendo que llamo a la funcion con una variable que no es objeto de la clase. Este es el codigo fijate que comentarie al principio la declaracion de global y ahi viene el problema.
A si se que se escribe con x pero la historia es larga y personal, gracias de antemano.
Bueno, armé a partir de tu código otro ejemplo (lo hice rápido, pueden haber errores) y siguiendo estándar de codificación de Zend.

Código PHP:
<?
class BaseDeDatos
{
    private 
$_usuario;
    private 
$_contraseña;
    private 
$_host;
    private 
$_baseDatos;
    private 
$_conexion;

    public function 
__construct($usuario 'root',$contraseña 'root'$host 'localhost'$base_datos 'ajax')
    {
        
$this->_usuario     $usuario;
        
$this->_contraseña  $contraseña;
        
$this->_host        $host;
        
$this->_baseDatos   $base_datos;
        
        
$this->_conectar();
        
    }
    private function 
_conectar()
    {
       if (
$this->_host != '' or $this->_usuario != '' or $this->_contraseña != ''){
           
$this->_conexion mysql_connect($this->_host,$this->_usuario,$this->_contraseña);
           if( 
mysql_errno() ){
               throw new 
Exception('Error de conexión');
           }
           if(!
mysql_select_db($this->baseDatos)){
               throw new 
Exception('Error al seleccionar base');
           }            
       }else{
           throw new 
Exception('Datos insuficientes');
       }       
    }    
    public function 
consulta($sql)
    {
        
$result mysql_query($sql);
        if (!
$result){
           throw new 
Exception('Error en consulta');
        }    
        return 
$result;    
    }
    public function 
getFila($sql)
    {
       
$result $this->consulta($sql);
       return 
mysql_fetch_array($result);
    }
    public function 
getTodo($sql)
    {
       
$result $this->consulta($sql);
       while (
$row mysql_fetch_array($resultMYSQL_ASSOC)) {
            
$ret[] = $row;
       }
       return 
$ret;
    }
    
}

include(
"includes/BaseDeDatos.php");
require(
"xajax/xajax.inc.php");

$xajax = new xajax();
$b = new BaseDeDatos();

$num $datos['nombre'];
$sql "SELECT * FROM `usuario` WHERE `usuario`.`nombre`= '$num' ";

$row $b->getFila($sql);

$salida '<input type="text" value = '.$row[0].'>';
?>
Al final te hago un ejemplo donde no necesitas globales ni tampoco exponer sintaxis de bajo nivel que queden atadas al motor de base de datos de turno (mysql). Si mañana cambias de base o usas otro sistema, puedes esconder todo dentro de tu clase, y el resto del sistema no se verá impactado.

Espero se entienda. Si tiene errores, ya son de deberes
__________________
Blog phpsenior.com Cursos a Distancia surforce.com