Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-11-2013
giulichajari giulichajari is offline
Miembro
 
Registrado: nov 2012
Posts: 306
Poder: 12
giulichajari Va por buen camino
Error en Variable con POO

Bueno el problema que tengo es:

Notice: Undefined variable: aItems in C:\xampp\htdocs\sge\empleado\lista.php on line 47

Se trata de un ejercicio que me dieron de POO, en el que tengo que crear una clase empleado, con 4 atributos que son los campos que tienen en la tabla empleados. El archivo lista.php, contiene el html para mostrar una tabla con todos los empleados. Para esto en la clase empleado debe haber un metodo getAll(), que devuelve todos los registros de la tabla empleado. Esto es sencillo:

Código SQL [-]
Select * from empleado

Pero la complicacion ocurre porque ya me dieron un fichero BaseDeDatos ya hecho y que no puedo modificar, lo que debo hacer es crear en otro archivo la clase empleado con los metodos insertar modificar y getAll.

El archivo BaseDeDatos es:
Código PHP:
<?php

/**
 * Clase que administra las conexiones a la base de datos
 * 
 * @author emmanuel
 */
class BaseDeDatos
{
    
/**
     * Host de conexión al servido MySQL
     * 
     * @var string
     */
    
const HOST '127.0.0.1';
    
    
/**
     * Usuario para el servidor MySQL
     * 
     * @var string
     */
    
const USER 'root';
    
    
/**
     * Contraseña para el servidor MySQL
     * 
     * @var string
     */
    
const PASS '';
    
    
/**
     * Base de Datos con la que trabajaremos
     * 
     * @var string
     */
    
const DB 'sge';
    
    
/**
     * Atributo estático que contiene la conexión a la base de datos
     * 
     * @var resource
     */
    
private static $_conexion;
    
    
/**
     * Resource de la última consulta hecha
     * 
     * @var resource
     */
    
private $_consulta;
    
    
/**
     * Error de MySQL
     * 
     * @var string
     */
    
private $_error;
    
    
/**
     * Cuando se crea el objeto verifica que no se haya conectado
     * 
     * @param string $host Nombre de host
     * @param string $user Nombre de usuario
     * @param string $pass Contraseña para el usuario
     * @param string $db Base de datos con la que trabajaremos
     * @return BaseDeDatos
     */
    
public function __construct($host self::HOST$user self::USER$pass self::PASS$db self::DB)
    {
        
// Verificamos si no hay una conexión anterior
        
if ( self::$_conexion == null )
        {
            
// Nos conectamos a MySQL
            
$conexion mysql_connect($host$user$pass);
            
            
// Verificamos que no hay error en la conexión
            
if ( $this->_verificarSiHayError($conexion) == false )
            {
                
// Seleccionamos la base de datos
                
mysql_select_db($db$conexion);
            }
            
            
// Verificamos que no haya error al seleccionar la base de datos
            
if ( $this->_verificarSiHayError($conexion) == false )
            {
                
// Si no hubo ningún problema establecemos la conexión en el atributo estático
                
self::$_conexion $conexion;
            }
        }
    }
    
    
/**
     * Verifica si hay un error en la última ejecución de MySQL y formatea el error en el atributo $_error
     * 
     * @param resource $conexion
     * @return boolean
     */
    
private function _verificarSiHayError($conexion null)
    {
        
// Inicializamos el error diciendo que no hay error
        
$this->_error '';
        
        
// Si el parámetro es nulo entonces tomo la conexión interna
        
if ( $conexion == null )
        {
            
$conexion self::$_conexion;
        }
        
        
// Verificamos si hay un error en la última ejecución de MySQL
        
if ( mysql_errno$conexion ) != )
        {
            
$this->_error "(" mysql_errno$conexion ) . ") " mysql_error$conexion );
            return 
true;
        }
        
        return 
false;
    }
    
    
/**
     * Pregunta si hay un error en la ultima acción sobre MySQL
     * 
     * @return boolean
     */
    
public function ocurrioUnError()
    {
        return 
$this->_verificarSiHayError();
    }
    
    
/**
     * Verifica si hay un error en la ultima sentencia para devolverlo, de lo contrario devuelve false
     * 
     * @return boolean|string
     */
    
public function getError()
    {
        
// Verificamos si se ha establecido algún error
        
if ( $this->_error == '' )
        {
            return 
false;
        }
        
        return 
$this->_error;
    }
    
    
/**
     * Ejecuta una consulta a la base de datos y devuelve true o false dependiendo si tuvo éxito en la ejecución
     * 
     * @param string $consulta
     * @return boolean
     */
    
public function query($consulta)
    {
        
$this->_consulta mysql_query($consultaself::$_conexion);
        
        return 
$this->_verificarSiHayError();
    }
    
    
/**
     * Devuelve el último id que se generó al insertar un registro
     * 
     * @return integer
     */
    
public function getUltimoIdInsertadio()
    {
        return 
mysql_insert_id(self::$_conexion);
    }
    
    
/**
     * Devuelve una fila como un array
     * 
     * @param int $modo Por defecto toma el valor de MYSQL_ASSOC
     * @return array|boolean
     */
    
public function fetchArray($modo MYSQL_ASSOC)
    {
        
// Verificamos que no haya error en la consulta ejecutada
        
if ( $this->_verificarSiHayError() == true )
        {
            return 
false;
        }
        
        
$fila mysql_fetch_array($this->_consulta$modo);
        
        return 
$fila;
    }
    
    
/**
     * Devuelve una fila como un objeto
     * 
     * @return object|boolean
     */
    
public function fetchObject()
    {
        
// Verificamos que no haya error en la consulta ejecutada
        
if ( $this->_verificarSiHayError() == true )
        {
            return 
false;
        }
        
        
$fila mysql_fetch_object($this->_consulta);
        
        return 
$fila;
    }
}
Y el archivo empleado.php que muestra la lista de empleados con un botoncito de modificar y otro de borrar:

Código PHP:
<?php

// Incluyo la clase de base de datos
require_once $_SERVER['DOCUMENT_ROOT'] . '/sge/includes/php/BaseDeDatos.php';

// Incluyo la clase de empleado
require_once $_SERVER['DOCUMENT_ROOT'] . '/sge/empleado/includes/Empleado.php';

// Creo el objeto para luego cargar los datos
$oEmpleado = new empleado();

// Verifico que el id esté seteado
if ( isset( $_GET['id'] ) == false || $_GET['id'] < )
{
    
header("location: lista.php");
}

// Cargo la información del empleado
$oEmpleado->buscar($_GET['id']);

// Verifico que exista el empleado
if ( $oEmpleado->getIdEmpleado() < )
{
    
header("location: lista.php");
}

?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>SGE | Informaci&oacute;n de Empleado</title>
    <link rel="stylesheet" type="text/css" href="/sge/includes/css/style.css" />
</head>
<body>

<div class="wrapper">
    
    <div class="background"></div>
    
    <?php require_once $_SERVER['DOCUMENT_ROOT'] . '/sge/includes/php/header.php';?>
    
    <div class="main">
        
        <div class="formulario">
            
            <form action="/sge/empleado/guardar.php" method="post">
                
                <input type="hidden" name="idEmpleado" value="<?php echo $oEmpleado->getIdEmpleado(); ?>"/>
                
                <label for="apellido">Apellido:</label>
                <input type="text" name="apellido" value="<?php echo $oEmpleado->getApellido(); ?>" placeholder="Ingrese el Apellido..."/>
                
                <label for="nombre">Nombre:</label>
                <input type="text" name="nombre" value="<?php echo $oEmpleado->getNombre(); ?>" placeholder="Ingrese el Nombre..."/>
                
                <label for="legajo">Legajo:</label>
                <input type="text" name="legajo" value="<?php echo $oEmpleado->getLegajo()?>" placeholder="Ingrese el N° de Legajo..."/>
                
                <div class="buttons">
                    <button type="submit">Guardar</button>
                    <button type="button" onclick="window.history.back();">Cancelar</button>
                </div>
                
            </form>
            
        </div>
        
    </div>
    
</div>

<?php require_once $_SERVER['DOCUMENT_ROOT'] . '/sge/includes/php/footer.php';?>

</body>
</html>
El archivo que yo debo hacer es:

Código PHP:
<?php

class empleado{
    private 
$_idEmpleado;
    private 
$_apellido;
    private 
$_legajo;
    private 
$_nombre;
    
    public function 
setIdEmpleado($idEmpleado){
        
$this->_idEmpleado=$idEmpleado;       
    }
    public function 
setApellido($apellido){
        
$this->_apellido=$apellido;
    }
    public function 
setLegajo($legajo){
        
$this->_legajo=$legajo;
    }
    public function 
setNombre($nombre){
        
$this->_nombre=$nombre;
    }
    public function 
getIdEmpleado(){
        return 
$this->_idEmpleado;
    }
    public function 
getapellido(){
        return 
$this->_apellido;
    }
    public function 
insertar(){
        
$SQL="insert into Empleado values";
        
$SQL.="'','$this->_apellido',$this->_legajo,'$this->_nombre'"
        
$bd=new BaseDeDatos();
        
$bd->query($SQL);
    }
    public function 
getAll(){
        
$SQL="select * from empleado";
        
$bd=new BaseDeDatos();
        
$bd->query($SQL);
    }
}
$oEmpleado=new empleado();
?>
Bueno pense en colocar los atributos, los getters y setters obviamente.
Pero vamos al grano:
El metodo insertar tiene la consulta sql, y llama al metodo del archivo BaseDeDatos para ejecutar esa consulta.
Al igual que insertar asi lo hace getAll, tiene el select y luego llama a "query", la verdad no se que puede estar ocurriendo, pienso que debo incluir el archivo BaseDeDatos.php en Empleado.php? o debo llamar de otra forma a los metodos?

Les voy a agradecer mucho si me pueden ayudar.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error al recibir dato en variable en FastReport subzero Impresión 5 04-11-2015 23:14:20
Error en Variable no Declarada microbiano Conexión con bases de datos 5 20-11-2013 14:35:17
error con variable bOOLEAN tebre Varios 3 22-12-2008 16:02:04
Error en tipo de variable astut Internet 6 25-02-2007 16:13:45
Error En Variable Double Red_Delphi Varios 3 03-09-2004 00:13:42


La franja horaria es GMT +2. Ahora son las 04:28:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi