Hola amigos!!! soy de las personas!! que casi no recurre a foros!! me gusta intentar por mi parte!!! ya que asi se aprende mas facil, pero he llegado a un punto que ni idea qe hacer. voy a explicar el problema!!
Quiero crear una pequeña aplicacion que tenga Login y que los datos esten almacenados en una base de datos
MySQL. Hasta el momento no tenia problemas cuando lo hacia de manera funcional, pero he estado leyendo y algunos dicen que ese tipo de programación es obsoleta o antigua, cosas asi por el estilo, que ahora es
MVC y eso creo que para mayor facilidad es con Programación Orientada a Objetos.
entonces lo que hize fue lo siguiente, cree
una clase para las conexiones MySQL, ya que esos procesos se repiten demasiado, entonces la reutilizacion de codigo es importante, ademas si quisiera hacer un ajuste tendria que hacerlo a una sola parte (la clase), no tendría que estar cambiando en varios archivos.
después cree otra clase llamada usuarios, que es la que permite iniciar sesión cerrar sesión, crear usuarios etc... Entonces estuve mirando y vi que la clase utilizaba código MySQL entonces intente crear un objeto para que manejara el objeto los fragmentos de código para la conexión modificación MySQL !! pero me da error, al intentar manejar un objeto dentro de un metodo, me dice que no reconoce el meto que llamo!! aca pongo los codigos!!! si alguien me puede ayudar gracias!!!
Código PHP:
<?php
class DB_MySQL {
var $servidor;
var $nombreBD;
var $nombreDeUsuario;
var $contrasena;
var $enlace;
var $resultado;
var $filas;
var $consulta;
public function DB_MySQL($servidor,$nombreBD,$nombreDeUsuario,$contrasena){
$this->servidor=$servidor;
$this->nombreBD=$nombreBD;
$this->nombreDeUsuario=$nombreDeUsuario;
$this->contrasena=$contrasena;
}
public function conectarBD(){
if($enlace=mysql_connect($this->servidor, $this->nombreDeUsuario, $this->contrasena)){
if(mysql_select_db($this->nombreBD,$enlace)){
$this->enlace=$enlace;
}else{
echo "Error conectando con la base de datos";
exit();
}
}else{
echo "Error al enlazar al Servidor!";
exit();
}
}
public function consultarBD($sentenciaSQL){
$this->consulta=mysql_query($sentenciaSQL,$this->enlace);
}
public function obtenerResultado(){
$this->resultado=mysql_fetch_array($this->consulta);
return $this->resultado;
}
public function consulta($sentenciaSQL){
return mysql_query($sentenciaSQL,$this->enlace);
}
public function obtenerFilas(){
$this->filas = mysql_num_rows($this->consulta,$this->enlace);
return $this->filas ;
}
public function liberarConsulta(){
mysql_free_result($this->consulta);
}
public function desconectarDB(){
mysql_close($this->enlace);
}
}
?>
esa clase si la pruebo desde un archivo php sencillo me funciona a las mil maravillas, hace lo que yo quiero, pero el problema es que cuando quiero crear un objeto dentro de esta clase me da error, me dice que no reconoce los metodos que estoy llamando.
Código PHP:
<?php
include_once 'include/config.php';
include_once 'include/clases.php';
$Mysql=new DB_MySQL("localhost","siteweb","root","root");
$Mysql->conectarBD();
class Usuario {
function __construct(){
//inicializo el objeto aca???? :S
}
public function check_login($emailusername, $password)
{
$password = md5($password);
$result = $Mysql->consultarBD("SELECT uid from users WHERE email = '$emailusername' or username='$emailusername' and password = '$password'");
$user_data = $Mysql->obtenerResultado();
if ($Mysql->obtenerFilas() == 1)
{
$_SESSION['login'] = true;
$_SESSION['uid'] = $user_data['uid'];
return TRUE;
}
else
{
return false;
}
}
public function get_session()
{
return $_SESSION['login'];
}
public function user_logout() {
$_SESSION['login'] = FALSE;
session_destroy();
}
}
?>
Una de las forma que obtuve un resultado bueno fue creando un objeto de la clase Mysql en cada método, pero no seria reutilizacion de código, ademas saldrían mas lineas que si lo hago sin objeto!!! he leido de la herencia, pero no sabrían en si como utilizarla, ademas estaria utilizando era la clase, y para la conexión con MySQL toca que iniciar un objeto, entonces no sabria como hacer!! llevo dos dias y no se me ocurre ya nada mas!! gracias de antemano!!!