La clase se llama bd_mysql, con su constructor, un metodo conectar, que devuelve una conexion y un metodo consultar que recibe como parametro una sentencia SQL y la ejecuta. Esta conexion, la paso como argumentos a metodos de otros objetos.
Tengo el siguiente proceso de insercion .php:
Código PHP:
<?
include_once("class/zona.php");
include_once("php/funcion_forms.php");
include_once("data.php");
include_once("class/bd_mysql.php");
$obj_zona = new zona();
$obj_zona->set_point_x($point_x);
$obj_zona->set_point_y($point_y);
// creo el objeto bd_mysql, obtengo una conexion, y se la paso como
// argumento al metodo insertar_zona de la clase zona
$obj_mysql = new bd_mysql();
$conexion = $obj_mysql->conectar($bd,$servidor,$usuario,$clave);
$res = $obj_zona->insertar_zona($conexion);
$obj_mysql->cerrar_conexion();
?>
El metodo conectar de la clase bd_mysql es el siguiente:
Código PHP:
<?
/*Conexión a la base de datos*/
function conectar($basedatos,$servidor,$usuario,$clave) {
$this->basedatos = $basedatos;
$this->servidor = $servidor;
$this->usuario = $usuario;
$this->clave = $clave;
// Conectamos al servidor
$this->Conexion_ID = mysql_connect($this->servidor, $this->usuario, $this->clave);
if (!$this->Conexion_ID) {
$this->Error = "Ha fallado la conexión.";
return 0;
}
//seleccionamos la base de datos
if (!@mysql_select_db($this->basedatos, $this->Conexion_ID)) {
$this->Error = "Imposible abrir ".$this->basedatos ;
return 0;
}
/* Si hemos tenido éxito conectando devuelve el identificador de la conexión, sino devuelve 0 */
return $this->Conexion_ID;
}
?>
Código PHP:
// Metodos de operaciones para la logica de negocio
function insertar_zona($miconexion) {
$sql = "INSERT INTO zonas (point_x,point_y) VALUES (".
$this->point_x."','".
$this->point_y."')";
$miconexion->consulta($sql);
return $miconexion->Error;
}
El caso es que recibo error en la linea $miconexion->consulta($sql); de insertar_zona, el error es:
Fatal error: Call to a member function on a non-object in /var/www/vhost/........./zona.php on line 213
Hay algo que hago mal con el tema de los objetos, la verdad que voy un poco a ciegas, si alguien puede hecharme un cable...