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

Varios errores

Estas en el tema de Varios errores en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas, estoy haciendo una web para clase y tengo unos problemas, con un sistema de noticias. Tengo un objeto llamado colArticulo.php, con el siguiente codigo: ...
  #1 (permalink)  
Antiguo 19/03/2008, 10:00
 
Fecha de Ingreso: julio-2007
Mensajes: 14
Antigüedad: 16 años, 9 meses
Puntos: 0
Varios errores

Buenas, estoy haciendo una web para clase y tengo unos problemas, con un sistema de noticias. Tengo un objeto llamado colArticulo.php, con el siguiente codigo:

Código PHP:
<?php

class colArticulo
{
private 
$Arts = Array();
function 
colArticulo()
{
    
$db = new AuxDB();
    
$db->conectar();
    
$sql "Select AId, ATitulo, ATexto, AFecha From ";
    
$sql.= "Articulo Order by AFecha Desc";
    
$rst $db->ejecutarSQL($sql);
    while(
$fila $db->SiguienteFila($rst))
    {
        
$this->Arts[] = new Articulo($fila['AId'],
                                     
$fila['ATitulo'],
                                     
$fila['ATexto'],
                                     
$fila['AFecha']);
    }
    
$db->liberarRecursos($rst);
}
function 
obtenerLista()
{
    print(
"<select name=\"Artis\">\n");
    foreach(
$this->Arts as $elem)
    {
        print(
"<option value=\"".$elem->getAid()."\">".
                
$elem->getATitulo(). "</option>\n");
    }
    print(
"</select>\n");
}
function 
visualizarTodos();
{
    
$str ="";
    foreach(
$this->Arts as $elem)
    {
        
$str.= $elem->visualizar() . "<br><br>";
    }
    return 
$str;
}
}
?>
Me da el siguiente error:
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in C:\AppServ\www\sitioweb\php\noticias\objetos\colAr ticulo.php on line 5

A su vez tengo dos páginas, index.php y noticias.php, dentro de index he incluido el siguiente codigo para que carge todos los objetos que tenga antes de hacer nada:
Código PHP:
<?php
function __autoload($objeto)
{
    include(
"php/noticias/objetos/".$objeto.".php");
}
?>
Y el error que me da viene ligado a noticias.php, que tiene el siguiente codigo:
Código PHP:
<?php
$com 
= New colArticulo();
print( 
$com->visualizarTodos() );
?>
Y me da el siguiente error:
Fatal error: Cannot instantiate non-existent class: colarticulo in C:\AppServ\www\sitioweb\php\noticias\noticias.php on line 2

Se supone que con el codigo que he incluido en index deberian cargarse todas las clases, pero por lo visto no es asi, y no se cual es el error, si alguien puede ayudarme estare muy agradecido. Muchas gracias de antemano, saludos.
  #2 (permalink)  
Antiguo 19/03/2008, 10:49
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: Varios errores

Cambia esta función así:
Código PHP:
<?php
function __autoload($objeto)
{
    
$ruta getcwd() . "php/noticias/objetos/".$objeto.".php";
    if( !
file_exists$ruta ) ) {
           die( 
"No puedo encontrar el archivo en $ruta" );
    }
    include(
"php/noticias/objetos/".$objeto.".php");
}
?>
Así podrás ver si el problema es la funcion autoload.

Respecto a tu otro error, que versión de PHP manejas? ya que al parecer no esta reconociendo el indicador de visibilidad private.

Saludos.
  #3 (permalink)  
Antiguo 19/03/2008, 12:59
 
Fecha de Ingreso: julio-2007
Mensajes: 14
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Varios errores

Buenas! gracias por responder, resulta que el problem era que tenia dos appserv instalados y usaba el PHP 4 en vez de el 5 ya esta resuelto y sin errores, pero tengo otra duda, a ver, quiero ordenar las noticias de manera descendente es decir que la que se visualize sea la ultima creada, pruebo con lo siguiente, pero no funciona:
Código PHP:
function leer($numArt)
{
    
$this->AId $numArt;
    if (
$this->AId 0)
    {
        
$db = new AuxDB();
        
$db->conectar();
        
$sql "Select Atitulo, ATexto, AFecha From ";
        
$sql.= "Articulo Where AId =".$this->AId."ORDER BY AId DESC";
        
$rst $db->ejecutarSQL($sql);
        
$db->desconectar();
        
$fila $db->siguienteFila($rst);
        
$this->ATitulo $fila['ATitulo'];
        
$this->ATexto $fila['ATexto'];
        
$this->AFecha $fila['AFecha'];
        }

la fila en la que hay que fijarse es la del ORDER BY, no me da error, pero no ordena, alguna solucion? Muchisimas gracias, saludos!
  #4 (permalink)  
Antiguo 19/03/2008, 13:21
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: Varios errores

Con ese código que expones, solo lo que estas haciendo es bajar un articulo de tu bd, el que tu le especificas vía el parámetro $numArt.

Para que tu código funcione debes de cambiar tu SQL para que en lugar de bajar una imagen exclusivamente, bajes la ultima ordenada por el campo AId.

Saludos.
  #5 (permalink)  
Antiguo 20/03/2008, 04:36
 
Fecha de Ingreso: julio-2007
Mensajes: 14
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Varios errores

Buenas! no entiendo a que te refieres....lo mismo medijo un amigo pero al final no pudo explicarmelo bien, podrías ponerme un ejemplo por favor?, muchisimas gracias, saludos!
  #6 (permalink)  
Antiguo 20/03/2008, 11:05
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: Varios errores

Cuando tu en un SQL usas:
Código:
SELECT campos FROM tabla WHERE campoid=1
SQL te va a regresar solamente una fila y es la que coincide con la condición en tu WHERE. Para que te devuelva la ultima fila, no debes de pasarle un WHERE si no el ORDER BY junto con LIMIT:
Código:
SELECT campos FROM tabla ORDER BY campoid DESC LIMIT 1
Con eso te devolverá el ultimo registro, y con el LIMIT 1, solo le pedimos que nos de un registro.

Para mas información te invito a que leas un libro de Bases de Datos, o consultes en el foro de Base de Datos.

Saludos.
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 17:58.