Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/06/2005, 02:13
Avatar de jpinedo
jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 8 meses
Puntos: 41
Cita:
Iniciado por dwaks
Bueno verfica estos detalles de poo que se dice en primer plano en:
http://www.php.net/oop

Alli hablan sobre poner _ delante del nombre de una metodo o variable.
No se dice nada sobre poner un subguión delante, sino dos. Ahí dice que se deberían utilizar únicamente para redefinir métodos mágicos... y este es el caso. O sea que por ese lado no va el problema.
-------------------------------------
Cita:
Iniciado por hormiga12
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?
Recuerda que con "return" se termina la ejecución de la función en esa línea... y no parece ser lo que quieres aquí.
Lo que quieres es:
- asignar la propiedad cambiada al array "_CambiarPropiedades"
- asignar el nuevo valor para esa propiedad al array "_usuario"
Por eso no necesitas el "return"... no necesitas devolver nada. Normalmente así funcionan los "setters" como este.
-----------------------------------
Cita:
No consigo alterar los datos de la base de datos y no encuentro el error por ningún lado.
Sobre por qué no escribe en la base de datos... te diré que estás generando un SQL incorrecto. Simplemente te faltan espacios en blanco para separar cadenas que unes con ".="
Además no entiendo eso de titi=$this->id ¿Quién es "$this->id"? ... si lo comparamos con la consulta inicial, supongo que debería ser id=$this->_usuario['id']
Tu función __destruct debería ser algo así:
Código PHP:
    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 id = ".$this->_usuario['id'];
            
$hRes .= mysql_query($sql$this->_ConesionBaseDeDatos);
        }
        
        
mysql_close($this->_ConesionBaseDeDatos);
    } 
Sería bueno que utilices también validadores de la consulta tal como haces en mysql_connect() y mysql_select_db(). O sea mysql_query() también podría fallar. Esto lo habrías detectado si ponías al igual que en las demás algo como:
Código PHP:
$hRes .= mysql_query($sql$this->_ConesionBaseDeDatos); or die("Error en <b>$sql</b>::".mysql_error()) 
Saludos