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($result, MYSQL_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