class.db.php
Código PHP:
<?php
class DB
{
var $Conexion; //variable de conexión
var $Consulta; //variable de consulta
function DB() //constructor
{
$this->Conexion = false;
$this->Consulta = false;
}
function Conectar($host=_DB_HOST, $user=_DB_USER, $pass=_DB_PASS, $db=_DB_NAME) //conectar a la db
{
if(empty($this->Conexion))
{
$this->Conexion = mysql_connect($host, $user, $pass);
if(!$this->Conexion)
trigger_error('No puede establecerse una conexión con el servidor que alberga la base de datos.', E_USER_ERROR);
if(!mysql_select_db($db, $this->Conexion))
trigger_error('No puede establecerse una conexión con la base de datos.', E_USER_ERROR);
}
return $this->Conexion;
}
function Consultar($sql) //realizar una consulta a la db
{
if(isset($this->Conexion))
$this->Consulta = mysql_query($sql, $this->Conexion);
return $this->Consulta;
}
//mas metodos por aki
//....
}
?>
Código PHP:
<?php
class User
{
function User() //constructor
{
//O_O
}
function setNewUser($user, $pass, $email) //crear nuevo usuario
{
//valido los datos etc, etc...
$this->Consultar("SELECT user,email FROM "._DB_PREFIX."users WHERE user='".$user."' OR email='".$email."'");
if($this->getNumRows() == 0)
{
if(!$this->Consultar("INSERT INTO "._DB_PREFIX."users (user, pass, email) VALUES ('".$user."', '".$pass."', '".$email."')"))
trigger_error('No se ha podido crear el usuario por un error inesperado.', E_USER_ERROR);
else
return true;
}else
trigger_error('No puede registrarse con ese nick/email.', E_USER_ERROR);
}
//mas métodos, etc, etc...
}
?>
Me explico con un ejemplo.
Un ejemplo para crear un usuario nuevo(como yo quiero hacerlo).
Código PHP:
<?php
session_start();
require_once('./config.php');
include_once('clases/class.db.php');
include_once('clases/class.user.php');
###
if(isset($_POST['registrar']))
{
$DB = new DB;
$DB->Conectar();
$User = new User($DB);//AKI ESTA EL PROBLEMA!!! NO SE COMO HACER ESTO!!!
if($User->setNewUser($_POST['user'], $_POST['pass'], $_POST['email']))
trigger_error('El usuario se ha registrado con éxito.', E_USER_NOTICE);
/* Si la clase User fuera extendida de DB y aki quiera hacer algo mas con otra clase y la base de datos, tendría que abrir otra conexion y crear otro objeto para manejar la db y eso es lo que no quiero xD */
$DB->Liberar();//estan declarados en class.db.php
$DB->Desconectar();
}
//por aki el formulario etc, etc...
?>
He probado creando dos metodos en la clase DB que devuelvan las variables de consulta y pasarselo a User como parametroa al crear el objeto pero entonces Consulta no estaba definida en User y no podía ser.
Gracias por leerme, espero haberme explicado con claridad. Y siento que sea tan extensa la explicación ;)