Foros del Web » Programando para Internet » PHP »

PHP OO Asignar objeto en array

Estas en el tema de Asignar objeto en array en el foro de PHP en Foros del Web. hola amigos, en un ejercicio me piden crear una clase que administre los equipos de una empresa y sus oficinas. En la base de datos ...
  #1 (permalink)  
Antiguo 19/01/2014, 14:16
Avatar de giuli956  
Fecha de Ingreso: noviembre-2012
Mensajes: 149
Antigüedad: 11 años, 5 meses
Puntos: 1
Asignar objeto en array

hola amigos, en un ejercicio me piden crear una clase que administre los equipos de una empresa y sus oficinas. En la base de datos tengo:

Código MySQL:
Ver original
  1. CREATE TABLE equipo(
  2.     idempleado integer not null,
  3.     descripcion varchar(60) not null,
  4.     ip varchar(60) not null,
  5.     mac varchar (60) not null,
  6.     foreign key (idempleado) references empleado (idempleado)
  7. );
  8. CREATE TABLE oficina(
  9.     nombre varchar(100) NOT NULL
  10. );
  11. CREATE TABLE oficinaequipo(
  12.     idoficinaequipo integer(11) not null auto_increment primary key,
  13.     idoficina integer(11) not null,
  14.     idequipo integer(11) not null,
  15.     foreign key (idoficina) references oficina (idoficina),
  16.     foreign key (idequipo) references equipo (idequipo)
  17. );

Como veran hay una relacion entre oficina y oficinaequipo y los equipos, es decir se busca gestionar las oficinas y sus equipos.

Para el script oficinaequipo me piden que contenga obviamente algunos atributos privados, pero asi tambien un objeto equipo con el getter y el setter que debe recibir un equipo como parametro.

Lo que hice para las oficinas fue:
Código PHP:
Ver original
  1. <?php
  2. require_once $_SERVER['DOCUMENT_ROOT'] . '/sge/includes/php/BaseDeDatos.php';
  3. require_once $_SERVER['DOCUMENT_ROOT'] . '/sge/oficina/includes/OficinaEquipo.php';
  4. class oficina{
  5.     private $_idoficina;
  6.     private $_nombre;
  7.     private $_OficinaEquipo=array();
  8.    
  9.     public function getIdoficina(){
  10.         return $this->_idoficina;
  11.     }
  12.     public function getNombre(){
  13.         return $this->_nombre;
  14.     }
  15.     public function getOficinaEquipo(){
  16.         $id=$this->_idoficina;
  17.         $SQL="select * from oficinaequipo where idoficinaequipo='$id'";
  18.         $oe=mysql_query($SQL);
  19.         while ($row=mysql_fetch_object($oe)){
  20.             $objetoOficinaEquipo=new oficinaequipo();
  21.             $objetoOficinaEquipo->setEquipo($row->equipo);
  22.             $objetoOficinaEquipo->setIdOficina($row->idoficina);
  23.             $objetoOficinaEquipo->setIdOficinaequipo($row->idoficinaequipo);
  24.             $OficinaEquipo[]=$objetoOficinaEquipo;
  25.         }
  26.         return $OficinaEquipo;
  27.     }
  28.     public function setIdoficina($idoficina){
  29.         $this->_idoficina=$idoficina;
  30.     }
  31.     public function setNombre($nombre){
  32.         $this->_nombre=$nombre;
  33.     }
  34.     public function __construct($idoficina,$nombre){
  35.         $this->_idoficina=$idoficina;
  36.         $this->_nombre=$nombre;
  37.  
  38.     }
  39.     public function insertar(){
  40.         $bd=new BaseDeDatos();
  41.         $this->_idoficina=$bd->getUltimoIdInsertadio($SQL);
  42.         $SQL="insert into oficina (idoficina, nombre) values";
  43.         $SQL.="('$this->_idoficina','$this->_nombre')";
  44.         mysql_query($SQL) or die (mysql_error());
  45.     }
  46.     public function modificar(){
  47.         $bd=new BaseDeDatos();
  48.         $id=$this->getIdoficina();
  49.         $SQL="update oficina set nombre='".$_POST['nombre']."where idoficina='$id'";
  50.         mysql_query($SQL);
  51.     }
  52.     public function eliminar(){
  53.         $bd=new BaseDeDatos();
  54.         $id=$this->getIdoficina();
  55.         $SQL="delete from oficina where idoficina='$id'";
  56.         mysql_query($SQL);
  57.         }
  58.     public function buscar($idoficina){
  59.         $bd=new BaseDeDatos();
  60.         $id=$this->getIdoficina();
  61.         $SQL="select * from oficina where idoficina='$id'";
  62.         $query=mysql_query($SQL);
  63.         $row=mysql_fetch_object($query);
  64.         $this->setIdoficina($row->idoficina);
  65.         $this->setNombre($row->nombre);
  66.     }
  67.     public function getAll(){
  68.         $SQL="select * from oficina";
  69.         $bd=new BaseDeDatos();
  70.         $result=mysql_query($SQL);
  71.        
  72.         if(!$result) {
  73.             die('No se ha podido ejecutar la consulta');
  74.         }
  75.        
  76.         // Buscamos todas las filas afectadas (Todos los empleados encotnrados)
  77.        
  78.         while($row = mysql_fetch_object($result))
  79.         {
  80.             $nombre=$row->nombre;
  81.             $idoficina=$row->idoficina;
  82.  
  83.             $o=new oficina($idoficina,$nombre);
  84.             $o->setNombre($row->nombre);
  85.             $o->setIdoficina($row->idoficina);
  86.            
  87.             // Por cada empleado (fila) agregaremos datos al array que devolveremos
  88.             $aItems[] = $o;
  89.         }        
  90.        
  91.         // Devolvemos el array
  92.         return $aItems;
  93.     }
  94.     public function getCantidadEquipos(){
  95.         $id=$this->getIdoficina();
  96.         $SQL="select distinct (idequipo) from oficinaequipo where idoficina='$id'";
  97.         $c=mysql_query($SQL);
  98.         $n=mysql_num_rows($c);
  99.         return $n;
  100.     }
  101. }
  102. ?>
La funcion getOficinaEquipo debe contener un array, el ejercicio dice
La clase debe contener los atributos privados para el id de la oficina, nombre y uno el cual debe contener un array de objeto del tipo OficinaEquipo, los métodos getter y setter para id de oficina y nombre, y solo el método getter para el atributo que contiene el array de objetos del tipo OficinaEquipo.
ES correcto lo que hago en el getter de oficinaequipo?

Para oficinaequipo, en cambio tengo que tener un objeto como atributo, el ejercicio decia: La clase debe contener los atributos privados para el id de la relación entreoficina y equipo, el id de la oficina y uno el cual debe contener un objeto del tipo Equipo, y los métodos getter y setter para cada uno de los atributos, el método setter para equipodebe recibir un objeto del tipo Equipo como
parámetro., entonces hice:
Código PHP:
Ver original
  1. <?php
  2. require_once $_SERVER['DOCUMENT_ROOT'] . '/sge/equipo/includes/Equipo.php';
  3. class oficinaequipo{
  4.     private $_idoficinaequipo;
  5.     private $_idOficina;
  6.     private $_equipo;
  7.    
  8.     public function getIdOficinaqeuipo(){
  9.         return $this->_idoficinaequipo;
  10.     }
  11.     public function getIdOficina(){
  12.         return $this->_idOficina;
  13.     }
  14.     public function getEquipo(){
  15.         return $this->_equipo;
  16.     }
  17.     public function setIdOficinaequipo($idoficinaequipo){
  18.         $this->_idoficinaequipo=$idoficinaequipo;
  19.     }
  20.     public function setIdOficina($idOficina){
  21.         $this->_oficinaequipo=$idOficina;
  22.     }
  23.     public function setEquipo(equipo $equipo){
  24.         $this->_equipo=$equipo;
  25.     }
  26.     public function __construct($idoficinaequipo,$idOficina,$equipo){
  27.         $this->_idoficinaequipo=$idoficinaequipo;
  28.         $this->_idOficina=$idOficina;
  29.         $this->_equipo=$equipo;
  30.     }
  31.     public function insertar(){
  32.         $bd=new BaseDeDatos();
  33.         $this->_idoficinaequipo=$bd->getUltimoIdInsertadio();
  34.         $SQL="insert into oficinaequipo (idoficinaequipo,idoficina,idequipo) values";
  35.         $SQL.="('$this->_idoficinaequipo','$this->_idoficina','$this->_idequipo')";  
  36.          
  37.         mysql_query($SQL) or die (mysql_error());
  38.        
  39.         }
  40.         public function getAll(){
  41.  
  42.  
  43.         $SQL="select * from oficinaequipo";
  44.         $bd=new BaseDeDatos();
  45.         $result=mysql_query($SQL);
  46.         $SQL2="select * from equipo join oficinaequipo where equipo.idempleado=oficinaequipo.idempleado";
  47.         // Buscamos todas las filas afectadas (Todos los empleados encotnrados)
  48.         $query=mysql_query($SQL2);
  49.         $row2=mysql_fetch_object($query);
  50.         if(!$result) {
  51.             die('No se ha podido ejecutar la consulta');
  52.         }
  53.        
  54.         // Buscamos todas las filas afectadas (Todos los empleados encotnrados)
  55.        
  56.         while($row = mysql_fetch_object($result))
  57.         {
  58.             $this->_idoficinaequipo=$row->idoficinaequipo;
  59.             $this->_idOficina=$row->idOficina;
  60.             $e=new equipo();
  61.             $e->setIdEquipo($row2->idequipo);
  62.          //   $e->setEmpleado($row2->idempleado);
  63.             $e->setDescripcion($row2->descripcion);
  64.             $e->setDirip($row2->ip);
  65.             $e->setDirmac($row2->mac);
  66.            
  67.             // Por cada empleado (fila) agregaremos datos al array que devolveremos
  68.             $aItems[] = $e;
  69.         }        
  70.        
  71.         // Devolvemos el array
  72.         return $aItems;
  73.     }
  74. }
  75.  
  76. ?>

Osea me gustaria me den su opinion y me digan como construir un objeto, que tenga una instancia de otro, y como cargar en un array atributos y objetos.

Muchas gracias

Etiquetas: fecha, mysql, objeto, select, sql
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:59.