Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Error fatal al accesar a un método de un objeto

Estas en el tema de Error fatal al accesar a un método de un objeto en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos, tengo el siguiente problema: Fatal error: Call to a member function getDesde() on a non-object in C:\xampp\htdocs\ServicioTutorias\TutoriasPorProfes or\resultadoAvisos.php on line 18 Pero ...
  #1 (permalink)  
Antiguo 07/04/2008, 10:42
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Error fatal al accesar a un método de un objeto

Hola a todos,

tengo el siguiente problema:

Fatal error: Call to a member function getDesde() on a non-object in C:\xampp\htdocs\ServicioTutorias\TutoriasPorProfes or\resultadoAvisos.php on line 18

Pero el caso es que me muestra bién el resultado.

El fichero resultadoAvisos.php esta así:

<?php
require('cabeceratutorias.php');
require('../Negocio/gestoravisos.php');
require('../Negocio/fechas.php');


$profesor= $_POST['avisosprofe'];
$avisosProf=new GestorAvisos();
$avisosProfRes=array();
//avisos del profesor
$avisosProfRes=$avisosProf->BuscarAvisosValidos($profesor,date ('Y/m/d'));

require('resultadoAvisos1.php');

for($i=0;$i<=count($avisosProfRes);$i++)
{
echo "<tr>";
echo "<td>".cambiaf_a_normal($avisosProfRes[$i]->getDesde())."</td>"; echo "<td>".cambiaf_a_normal($avisosProfRes[$i]->getHasta())."</td>";
echo "<td>".htmlentities($avisosProfRes[$i]->getAsunto())."</td>";
echo "</tr>";

}

?>

La línea en rojo es la que marca el problema.

No sé cual es el problema. Porque en otro fichero he utilizado un vector con objetos (al igual q aquí) y no me dá ningún problema.
  #2 (permalink)  
Antiguo 07/04/2008, 10:55
Avatar de qvixote  
Fecha de Ingreso: marzo-2008
Mensajes: 79
Antigüedad: 16 años, 1 mes
Puntos: 2
Re: Fatal error: Call to a member function on a non-object

Si dices que igual te muestra el resultado, quizá uno de los elementos del array, probablemente el último, no es un objeto.

Quizá en esta línea:

Código PHP:
$avisosProfRes=$avisosProf->BuscarAvisosValidos($profesor,date ('Y/m/d')); 
se devuelve una lista de objetos y al final un elemento que no es objeto. ¿Puedes mostrarnos la definición de la clase GestorAvisos?
  #3 (permalink)  
Antiguo 07/04/2008, 11:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Fatal error: Call to a member function on a non-object

Tema trasladado a PHP Orientado a Objetos.
  #4 (permalink)  
Antiguo 07/04/2008, 21:58
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 8 meses
Puntos: 55
Re: Error fatal al accesar a un método de un objeto

/*
aqui creas el array
*/
$avisosProfRes=array();
//avisos del profesor
/*
y aqui le seteas un valor, nunca le estas sando un objeto
*/
$avisosProfRes=$avisosProf->BuscarAvisosValidos($profesor,date ('Y/m/d'));

require('resultadoAvisos1.php');

for($i=0;$i<=count($avisosProfRes);$i++)
{
echo "<tr>";

/*
obviamente q eta mal estas intentando utilizar una array como objeto, fijate mas arriba donde te marco
*/

echo "<td>".cambiaf_a_normal($avisosProfRes[$i]->getDesde())."</td>"; echo "<td>".cambiaf_a_normal($avisosProfRes[$i]->getHasta())."</td>";
echo "<td>".htmlentities($avisosProfRes[$i]->getAsunto())."</td>";
echo "</tr>";

}
__________________
Degiovanni Emilio
developtus.com
  #5 (permalink)  
Antiguo 08/04/2008, 03:16
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Error fatal al accesar a un método de un objeto

Lo primero de todo es pedir disculpas, porqe no sabía que estaba este foro.

La función BuscarAvisosValidos($profesor,$hoy), devuelve un vector con objetos Aviso. Por lo tanto el valor de un componente del vetor debería ser un objeto, ¿no?. No sé si eso va así en Php, yo soy nuevo en esto, peo en Java con una lista y forzando el valor funcionaba.

Os adjunto el código de gestoravisos(sólo el método ese, que no quiero aburriros):

Código PHP:
<?php

/*include_once() para que no haya problemas con la conexion, cuando se utilizan otros ficheros
php que tambien utilizan otro para conectarse a la BD*/
include_once('gestorbd.php');
require(
'Tablas/aviso.php');


 class 
GestorAvisos
{
    
//Atributos de la clase
    
            
    //Metodo que obtiene las tutorias de un profesor profesores
    
public function BuscarAvisosValidos($profesor,$hoy)
    {
        
//Creo la conexión
        
$conexion= new GestorBD();
        
$conexion->AbrirConexion();
        
//consulta
        
$sql="Select * From Aviso  Where profesor like '%".$profesor."' and '".$hoy."' <= hasta";
        
//Ejecutar la consulta
        
$resultado$conexion->getBD()->Execute($sql);
        
//numero de filas del resultado
        
$num_results$resultado->RecordCount();
        
//vector que contiene todos los avisos del profesor
        
$avisos= array();
        
//obtener el resultado                            
        
for($i=0;$i<$num_results;$i++)
        {
            
//objeto tutoria donde van los datos de cada tutoria
            
$aviso=new Aviso();
            
//vector con el resultado de una fila
            
$fila=$resultado->FetchRow();
            
//profesor
            
$aviso->setProfesor($fila[1]);
            
//NumAviso
            
$aviso->setNumAviso($fila[0]);
            
//Desde
            
$aviso->setDesde($fila[2]);
            
//Hasta
            
$aviso->setHasta($fila[3]);
            
//Asunto
            
$aviso->setAsunto($fila[4]);
            
            
$avisos[$i]=$aviso;
                        
        }
        
        
$resultado->Close();//opcional
        //cerramos la conexión
        
$conexion->CerrarConexion();
        
//devuelve el resultado
        
return $avisos;//vector con los avisos de un profesor
    
}
}
?>
  #6 (permalink)  
Antiguo 08/04/2008, 03:41
 
Fecha de Ingreso: marzo-2008
Mensajes: 119
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Fatal error: Call to a member function on a non-object

Cita:
Iniciado por qvixote Ver Mensaje
Si dices que igual te muestra el resultado, quizá uno de los elementos del array, probablemente el último, no es un objeto.

Quizá en esta línea:

Código PHP:
$avisosProfRes=$avisosProf->BuscarAvisosValidos($profesor,date ('Y/m/d')); 
se devuelve una lista de objetos y al final un elemento que no es objeto. ¿Puedes mostrarnos la definición de la clase GestorAvisos?
Tenias toda la razón, en uno de los bucles que muestra el resultado, hacía una iteración de más.

Muchs gracias.
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 05:23.