Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   Error fatal al accesar a un método de un objeto (http://www.forosdelweb.com/f68/error-fatal-accesar-metodo-objeto-573394/)

centrion_75 07/04/2008 10:42

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.

qvixote 07/04/2008 10:55

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?

GatorV 07/04/2008 11:11

Re: Fatal error: Call to a member function on a non-object
 
Tema trasladado a PHP Orientado a Objetos.

emiliodeg 07/04/2008 21:58

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>";

}

centrion_75 08/04/2008 03:16

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
    
}
}
?>


centrion_75 08/04/2008 03:41

Re: Fatal error: Call to a member function on a non-object
 
Cita:

Iniciado por qvixote (Mensaje 2353280)
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.:aplauso:

Muchs gracias.


La zona horaria es GMT -6. Ahora son las 21:02.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.