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

Respuesta
 
Herramientas Desplegado
Antiguo 19-mar-2008, 10:00   #1 (permalink)
Taoku ha deshabilitado el karma
 
Fecha de Ingreso: julio-2007
Mensajes: 13
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.
Taoku está desconectado   Responder Citando
Antiguo 19-mar-2008, 10:49   #2 (permalink)
Moderador
GatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy pronto
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: Queretaro, Mexico
Mensajes: 11.283
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.
__________________
Blog Web
GatorV está desconectado   Responder Citando
Antiguo 19-mar-2008, 12:59   #3 (permalink)
Taoku ha deshabilitado el karma
 
Fecha de Ingreso: julio-2007
Mensajes: 13
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!
Taoku está desconectado   Responder Citando
Antiguo 19-mar-2008, 13:21   #4 (permalink)
Moderador
GatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy pronto
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: Queretaro, Mexico
Mensajes: 11.283
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.
__________________
Blog Web
GatorV está desconectado   Responder Citando
Antiguo 20-mar-2008, 04:36   #5 (permalink)
Taoku ha deshabilitado el karma
 
Fecha de Ingreso: julio-2007
Mensajes: 13
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!
Taoku está desconectado   Responder Citando
Antiguo 20-mar-2008, 11:05   #6 (permalink)
Moderador
GatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy prontoGatorV llegará a ser famoso muy pronto
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: Queretaro, Mexico
Mensajes: 11.283
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.
__________________
Blog Web
GatorV 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 09:18.


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