Ver Mensaje Individual
  #8 (permalink)  
Antiguo 10/06/2012, 16:01
elgoncho99
 
Fecha de Ingreso: junio-2012
Ubicación: Argentina - Buenos Aires
Mensajes: 135
Antigüedad: 11 años, 10 meses
Puntos: 32
Respuesta: obtener todos los datos de una tabla

Hola como andas.

Bueno para empezar, recorda que si tenes en 1 clase llamada Base de datos
y se encarga de manejar conexiones y consultas a la base de datos,
extenderla a un material no seria muy logico.
Lo que podrias es que un material pueda o no tener 1 referencia a la base de datos (atributo privado).
Y recuperar al instanciarlo 1 referencia de la clase Base de datos que podria ser singleton esa clase, instanciada solo 1 vez.

Pero bueno volviendo a lo que me preguntaste lo que te convendria es en el constructor de la implementacion de la interfaz
MaterialCollection recuperar todos los id desde la base de datos, para luego generar los respectivos id de ese material.

Algo asi seria.



Código PHP:
Ver original
  1. include('db.php');
  2.  
  3. class material {
  4.  
  5.     public $id;
  6.     public $nombre;
  7.     public $referencia;
  8.     public $peso;
  9.     public $tamano;
  10.    
  11.     /* Instancia privada de la clase db*/
  12.     private $_db;
  13.  
  14.     public function __construct($id_material){     
  15.         $this->_db = new DB();     
  16.         $sql= "
  17.            SELECT
  18.                *
  19.            FROM material
  20.            WHERE id = ".$id_material."
  21.        ";    
  22.        
  23.         $this->_db->query = $sql;
  24.        
  25.         /* Se supone que esto devuelve 1 solo
  26.         array asociativo si el id es unico*/
  27.         $t_material  = $this->_db->AssocList();
  28.        
  29.         $this->id           = $t_material['id'];
  30.         $this->nombre       = $t_material['nombre'];
  31.         $this->referencia   = $t_material['referencia'];
  32.         $this->peso         = $t_material['peso'];
  33.         $this->tamano       = $t_material['tamano'];
  34.     }
  35.  
  36. }
  37.  
  38. class MaterialCollection implements Iterator {
  39.  
  40.    private $_items = null;
  41.    private $_db;
  42.  
  43.    public function __construct() {
  44.         $this->_material = array();
  45.         $this->_db = new DB();
  46.         $this->_db->query = "SELECT id FROM material";
  47.        
  48.         /* Se supone que esto devuelve todos los id leidos*/
  49.         $materiales_id  = $this->_db->AssocList();
  50.         for($i=0;$i<count($materiales_id);$i++)
  51.         {
  52.             this->addItem( new Material($materiales_id ['id']) );
  53.         }  
  54.    }
  55.  
  56.    public function addItem($i){
  57.       $this->_items[] = $i;
  58.    }
  59.  
  60.    public function removeItem($i){
  61.       unset($this->_items[array_search($i, $this->_items)]);
  62.    }
  63.  
  64.    public function rewind() {
  65.        reset($this->_items);
  66.    }
  67.  
  68.    public function current() {
  69.        return current($this->_items);
  70.    }
  71.  
  72.    public function key() {
  73.        return key($this->_items);
  74.    }
  75.  
  76.    public function next() {
  77.        return next($this->_items);
  78.    }
  79.  
  80.    public function valid() {
  81.        return $this->current() !== false;
  82.    }
  83.  
  84. }
  85.  
  86.  
  87. $material = new material(1);
  88.  
  89.  
  90.  
  91. $mc = new MaterialCollection();
  92.  
  93. while(($m = $mc->next()) !== null)
  94. {
  95.     echo $material->id;
  96. }

Espero sirva, saludos.
__________________
http://www.latinium.com.ar/