Foros del Web » Programando para Internet » PHP »

inserta pero arroja error

Estas en el tema de inserta pero arroja error en el foro de PHP en Foros del Web. la inserción la realiza correctamente pero siempre me arroja este error: Cita: Warning:Creating default object from empty value in C:\xampp........ on line 104 este es ...
  #1 (permalink)  
Antiguo 30/09/2013, 08:03
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 10 meses
Puntos: 2
Exclamación inserta pero arroja error

la inserción la realiza correctamente pero siempre me arroja este error:
Cita:
Warning:Creating default object from empty value in C:\xampp........ on line 104
este es el codigo donde me indica el error:
Código PHP:
public function Registro()
    {                
        try
        {
            
$miconexion=new DB_mysql ;
            
$miconexion->conectar();
            
$select = array($this->campos_sinid);
            
$from = array($this->tabla);

            
$Clase->clave=$_POST['password']; //linea 104
            
$Clase->nombre=$_POST['nombre'];
            
$Clase->apellidos=$_POST['apellidos'];
            
$Clase->dni=$_POST['dni'];
            
$Clase->telefono=$_POST['telefono'];
            
$Clase->tipo=$_POST['tipo'];
            
$Clase->email=$_POST['email'];
            
/*usu_id,usu_nom,usu_ape,usu_dni,usu_email,usu_clave,usu_tel,usu_tipo,usu_pas*/
            
$valores = array("'".$this->nombre."'","'".$this->apellidos."'","'".$this->dni."'","'".$this->email."'","'".$this->clave."'","'".$this->telefono."'","'".$this->tipo."'","'0'");
            
$sql3parent::construir_inserta($select$from$valores);
            
            
$consulta $miconexion->consulta($sql3);
            
        }
        catch(
Exception $error)
        {
            throw new 
Exception("Error al registrar al ".$this->msje." ".$this->nombre."<br>"$error->getMessage());
            exit();
        }
    } 
la linea 104 me indica donde inicia la clase.
como puedo evitar ese mensaje?
  #2 (permalink)  
Antiguo 30/09/2013, 08:44
 
Fecha de Ingreso: septiembre-2010
Ubicación: /home/
Mensajes: 103
Antigüedad: 13 años, 7 meses
Puntos: 17
Respuesta: inserta pero arroja error

Hola zeuzft

explicación stdClass
Código PHP:
public function Registro() 
    {                 
        try 
        { 
            
$miconexion=new DB_mysql 
            
$miconexion->conectar(); 
            
$select = array($this->campos_sinid); 
            
$from = array($this->tabla); 
 
            
$Clase= new stdClass//  tienes que declarar el objeto

            
$Clase->clave=$_POST['password']; //linea 104 
            
$Clase->nombre=$_POST['nombre']; 
            
$Clase->apellidos=$_POST['apellidos']; 
            
$Clase->dni=$_POST['dni']; 
            
$Clase->telefono=$_POST['telefono']; 
            
$Clase->tipo=$_POST['tipo']; 
            
$Clase->email=$_POST['email']; 
            
/*usu_id,usu_nom,usu_ape,usu_dni,usu_email,usu_clave,usu_tel,usu_tipo,usu_pas*/ 
            
$valores = array("'".$this->nombre."'","'".$this->apellidos."'","'".$this->dni."'","'".$this->email."'","'".$this->clave."'","'".$this->telefono."'","'".$this->tipo."'","'0'"); 
            
$sql3parent::construir_inserta($select$from$valores); 
             
            
$consulta $miconexion->consulta($sql3); 
             
        } 
        catch(
Exception $error
        { 
            throw new 
Exception("Error al registrar al ".$this->msje." ".$this->nombre."<br>"$error->getMessage()); 
            exit(); 
        } 
    } 
saludos
  #3 (permalink)  
Antiguo 30/09/2013, 08:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: inserta pero arroja error

El error te indica que estás creando un objeto de un valor vacío, es decir, algo así:
Código PHP:
$foo->bar 123// Warning: Creating default object from empty value in ... 
¿Entiendes la causa?

La solución consiste en inicializar el objeto antes de agregarle propiedades.

Si tienes una clase para dicho objeto entonces declara la instancia, si no tienes ninguna clase, entonces puedes usar stdClass.
Código PHP:
Ver original
  1. $foo = new stdClass();
  2. $foo->bar = 123;
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 30/09/2013, 09:48
Avatar de zeuzft  
Fecha de Ingreso: junio-2009
Ubicación: peru
Mensajes: 358
Antigüedad: 14 años, 10 meses
Puntos: 2
Respuesta: inserta pero arroja error

gracias, pero hay algo que no entiendo; si la clase la estoy inciando en UsuarioLogic:
Cita:
public function accionRegistrar()
{
try
{
$Clase=new AdministrativoAD;
$Clase->email=$_POST['email'];
$Clase->clave=base64_encode($_POST['password']);
$Clase->nombre=$_POST['nombre'];
$Clase->apellidos=$_POST['apellidos'];
$Clase->telefono=$_POST['telefono'];
$Clase->tipo=$_POST['tipo'];
$Clase->dni=$_POST['dni'];
$Clase->Registro();
echo("<META http-equiv= 'refresh'content = '0.1;URL=../../vistas/administrador/index.php?menu=listar&mensaje=".$this->mensaje."&op=1'>");
}
catch(Exception $error)
{
$mensaje = $error->getMessage();
echo $mensaje;
echo("<META http-equiv= 'refresh'content = '2.1;URL=../vistas/index.php?menu=".$this->pagina."&op=4&mensaje=$mensaje'>");
exit();
}
}
entonces porque no toma la clase ya inicializada?
  #5 (permalink)  
Antiguo 30/09/2013, 10:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: inserta pero arroja error

Porque está fuera de contexto, ahí la declaras dentro del método accionRegistrar() y sólo existirá dentro de dicho método, porque es una variable local, no es global, ni de instancia.

Te sugiero leer lo siguiente: http://php.net/manual/es/language.variables.scope.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: inserta, registro, select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:05.