PHP - conservar un objeto

 
Vista:

conservar un objeto

Publicado por Caruso (27 intervenciones) el 07/01/2014 19:40:21
Hola necesito saber si en el siguiente script debo si o si hacer una consulta sql, para instanciar el objeto, es decir cada vez que se instancia una clase para asignarle los valores a los atributos hay que hacer una consulta, esto es lo mas logico, por ej:
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
<?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($apellido,$idEmpleado,$legajo,$nombre);
 
// Verifico que el id esté seteado
if ( isset( $_GET['id'] ) == false || $_GET['id'] < 1 )
{
	header("location: lista.php");
}
 
// Cargo la información del empleado
$oEmpleado->buscar($_GET['id']);
 
// Verifico que exista el empleado
if ( $oEmpleado->getIdEmpleado() < 1 )
{
	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>


Ahi me dice:


Notice: Undefined variable: apellido in C:\xampp\htdocs\sge\empleado\empleado.php on line 10

Notice: Undefined variable: idEmpleado in C:\xampp\htdocs\sge\empleado\empleado.php on line 10

Notice: Undefined variable: legajo in C:\xampp\htdocs\sge\empleado\empleado.php on line 10

Notice: Undefined variable: nombre in C:\xampp\htdocs\sge\empleado\empleado.php on line 10

Es decir que como trabajo con objetos que tienen tablas como los empleados, siempre hay que hacer una consulta, la pregunta era si no se puede conservar una instancia?

Muchas gracias..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

conservar un objeto

Publicado por xve (6935 intervenciones) el 07/01/2014 21:10:19
Hola Caruso, no se como es tu objeto empleado, pero te esta informando, de que estas llamando a una clase pasando como parametros variables no declaradas...
1
$oEmpleado = new empleado($apellido,$idEmpleado,$legajo,$nombre);

Nos puedes mostrar la clase empleado?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

conservar un objeto

Publicado por Caruso (27 intervenciones) el 07/01/2014 21:25:09
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
94
95
96
97
98
99
100
101
102
103
104
<?php
 
class empleado {
    private $_idEmpleado;
    private $_apellido;
    private $_legajo;
    private $_nombre;
 
    public function __construct($apellido,$idEmpleado,$legajo,$nombre){
        $this->_apellido= $apellido;
        $this->_idEmpleado=$idEmpleado;
        $this->_legajo=$legajo;
        $this->_nombre=$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 getNombre(){
        return $this->_nombre;
    }
    public function getLegajo(){
        return $this->_legajo;
    }
 
    public function insertar(){
        $bd=new BaseDeDatos();
        $this->_idEmpleado=$bd->getUltimoIdInsertadio();
        $SQL="insert into empleado (idEmpleado,apellido,nombre,legajo) values";
        $SQL.="('$this->_idEmpleado','$this->_apellido',$this->_legajo,'$this->_nombre')";
 
        mysql_query($SQL) or die (mysql_error());
 
                 }
    public function getAll(){
 
 
        $SQL="select * from empleado";
        $bd=new BaseDeDatos();
        $result=mysql_query($SQL);
        if(!$result) {
            die('No se ha podido ejecutar la consulta');
        }
 
        // Buscamos todas las filas afectadas (Todos los empleados encotnrados)
 
        while($row = mysql_fetch_object($result))
        {
            $apellido=$row->apellido;
            $idEmpleado=$row->idEmpleado;
            $legajo=$row->legajo;
            $nombre=$row->nombre;
            $e=new empleado($apellido,$idEmpleado,$legajo,$nombre);
            $e->setIdEmpleado($row->idEmpleado);
            $e->setNombre($row->nombre);
            $e->setApellido($row->apellido);
            $e->setLegajo($row->legajo);
 
            // Por cada empleado (fila) agregaremos datos al array que devolveremos
            $aItems[] = $e;
        }
 
        // Devolvemos el array
        return $aItems;
    }
    public function buscar($id){
        $bd= new BaseDeDatos();
        $SQL="select * from empleado where idEmpleado='$id'";
        $result=mysql_query($SQL);
        $row=mysql_fetch_object($result);
        $this->setIdEmpleado($row->idEmpleado);
        $this->setApellido($row->apellido);
        $this->setNombre($row->nombre);
        $this->setLegajo($row->legajo);
 
    }
    public function modificar(){
        $bd=new BaseDeDatos();
        $id=$this->getIdEmpleado();
        $SQL="update empleado set apellido='".$_POST['apellido']."',nombre= '".$_POST['nombre']."',legajo='".$_POST['legajo']."'where idEmpleado='$id'";
        mysql_query($SQL);
    }
    public function eliminar(){
        $bd=new BaseDeDatos();
        $id=$this->getIdEmpleado();
        $SQL="delete from empleado where idEmpleado='$id'";
        mysql_query($SQL);
    }
    }
?>

Es esa...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

conservar un objeto

Publicado por xve (6935 intervenciones) el 07/01/2014 21:45:43
Por lo que veo, en principio no deberías de tener ningún problema aunque pases las variables vacías...

Para eliminar los Notice, puedes hacerlo así:
1
$oEmpleado = new empleado("",0,"","");

Coméntanos si el resto te funciona correctamente, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar