Retroceder   Foros del Web > Programación para sitios web > PHP > PHP orientado a objetos

Respuesta
 
Herramientas Desplegado
Antiguo 07-abr-2008, 10:42   #1 (permalink)
centrion_75 ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2008
Mensajes: 115
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.
centrion_75 está desconectado   Responder Citando
Antiguo 07-abr-2008, 10:55   #2 (permalink)
qvixote ha deshabilitado el karma
 
Avatar de qvixote
 
Fecha de Ingreso: marzo-2008
Mensajes: 27
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?
qvixote está desconectado   Responder Citando
Antiguo 07-abr-2008, 11:11   #3 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 12.832
Re: Fatal error: Call to a member function on a non-object

Tema trasladado a PHP Orientado a Objetos.
__________________
Blog Web
GatorV está desconectado   Responder Citando
Antiguo 07-abr-2008, 21:58   #4 (permalink)
emiliodeg tiene algunos puntos positivos de karma
 
Avatar de emiliodeg
 
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 971
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
mi neurona
emiliodeg está desconectado   Responder Citando
Antiguo 08-abr-2008, 03:16   #5 (permalink)
centrion_75 ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2008
Mensajes: 115
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 está desconectado   Responder Citando
Antiguo 08-abr-2008, 03:41   #6 (permalink)
centrion_75 ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2008
Mensajes: 115
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.
centrion_75 está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 01:26.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93