<?php
class Usuarios
{
private $_usuario;
private $_ConesionBaseDeDatos;
private $_CambiarPropiedades;
//.................................................. .......................
//.................................................. .......................
public function __construct($usuarioID)
{
$this->_CambiarPropiedades = array ();
$this->_usuario = array();
$this->_usuario['id'] = null;
$this->_usuario['nombre'] = null;
$this->_usuario['nick'] = null;
//.......................Conexión base de datos..............................
//.................................................. .........................
$this->_ConesionBaseDeDatos = mysql_connect('localhost','root','titi');
if (!is_resource ($this->_ConesionBaseDeDatos))
{
throw new Exception("Desconectada base de datos");
}
$connected = mysql_select_db('usuarios',$this->_ConesionBaseDeDatos);
if(!$connected)
{
throw new Exception("Fallo conexion usuarios");
}
$sql = "select * from titi where id = $usuarioID";
$rs = mysql_query($sql, $this->_ConesionBaseDeDatos);
if(! mysql_num_rows($rs))
{
throw new Exception ("No existe el usuario en la base de datos con id = $usuarioID");
}
$row = mysql_fetch_assoc($rs);
$this->_usuario['id'] = $row['id'];
$this->_usuario['nombre'] = $row['nombre'];
$this->_usuario['nick'] = $row['nick'];
}
//.................................................. ..............................
//.................................................. ..............................
function __get ($CaracteristicasUsuario)
{
if (!array_key_exists($CaracteristicasUsuario, $this->_usuario))
throw new Exception ('dato incorrectoooooooo');
if (method_exists($this, 'get' . $CaracteristicasUsuario))
{
return call_user_func(array($this, 'get' . $CaracteristicasUsuario));
}
else
{
return $this->_usuario[$CaracteristicasUsuario];
}
}
//.................................................. ........................
//.................................................. ........................
function __set($CaracteristicasUsuario, $value)
{
if (!array_key_exists($CaracteristicasUsuario, $this->_usuario))
throw new Exception ('dato iiiiiiiiiiincorrecto');
if (method_exists($this, 'set' . $CaracteristicasUsuario))
{
return call_user_func(array($this, 'set' . $CaracteristicasUsuario),$value);
}
else
{
if($this->_usuario[$CaracteristicasUsuario] != $value && !in_array($CaracteristicasUsuario,
$this->_CambiarPropiedades))
{
return $this->_CambiarPropiedades[] = $CaracteristicasUsuario;
}
return $this->_usuario[$CaracteristicasUsuario] = $value;
}
}
//.................................................. ............................
//.................................................. ............................
function EscribirDatos()
{
print " Mi nombre es {$this->nombre}. Y mi id es {$this->id}";
}
//..............Modificar datos de la base de datos..............................
//................(supongo que el error esta aquí aunque no lo puedo //……………..asegurar................................... ............................
function __destruct()
{
if(sizeof($this->_CambiarPropiedades))
{
$sql = "UPDATE titi SET";
$setModificar = array();
foreach($this->_CambiarPropiedades as $prop)
{
$setModificar[] = "$prop = '{$this->_usuario[$prop]}'";
}
$sql .= join(', ', $setModificar);
$sql .= "WHERE titi = $this->id";
$hRes .= mysql_query($sql, $this->_ConesionBaseDeDatos);
}
mysql_close($this->_ConesionBaseDeDatos);
}
}
?>
Archivo usr
<?php
require_once('class.Usuario.php');
$obj = new Usuarios(1);
$obj->nombre = 'ggg';
$obj->EscribirDatos();
?>
Se supone que mediante $obj->nombre =”ggg” yo debería ser capaz de modificar el valor almacenado en la base de datos y hacer que apareciera dicho valor por pantalla, pero no lo consigo, al mismo tiempo se debería actualizar la base de datos con dicho valor cosa que tampoco sucede
Si necesitais alguna aclaración más pedirla
Gracias
Por cierto si elimino los return de
return $this->_CambiarPropiedades[] = $CaracteristicasUsuario;
}
return $this->_usuario[$CaracteristicasUsuario] = $value;
Si se modifican los datos por pantalla, aunque no en la base de datos
Por que sucede esto?







Mode Lineal
