Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/10/2010, 08:38
Avatar de GXT2
GXT2
 
Fecha de Ingreso: junio-2009
Ubicación: Fort Lauderdale, FL
Mensajes: 152
Antigüedad: 14 años, 11 meses
Puntos: 0
Exclamación Categorias y Subcategoria con OOP

Saludos amigos tengo un gran problemita

y creo que sera mejor ilustralo con codigo.
basicamente he hecho esto con diferentes metodos
y he conseguido el resultado deseado pero ahora quiero separar totalmente
la programacion del diseno y es donde encuentro el problema


Tengo una base de datos para esta ilustracion seria asi:

Código:
La tabla categorias que contendra las categorias 
___________ 
|Categorias |
---------------
| cat_id     |
| cat_name  |
---------------

La tabla subcategorias que contendra todas las subcategorias realcionadas
a su categoria y para esto le paso el id de la categoria .. "nada nuevo hasta ahora"


_______________
| SubCategorias   |
|--------------------|
|     subcat_id       |
|   subcat_name   |
|      cat_id  |
----------------------

Ok entonces lo que deseo es presentar en pantalla
todas las categorias con sus subcategorias debajo de cada
categoria ... ilustrandolo seria asi:

Código HTML:
Categoria1
  subcategoria1 - pertenceiente a la categoria1
  subcategoria2
  subcategoria3

Categoria2
  subcategoria4 - pertenceiente a la Categoria2
  subcategoria5
  subcategoria6

Muy bien entonces lo que hago es lo siguiente :

Trabajo.php
Código PHP:

class Categoria
{    
      private 
$get_list;
      
      function 
__construct()
      {
           
          
$this->get_list = array();

      }
      
      public function 
get_categories()
      {

                         
$sQuery"SELECT *
             FROM Categorias "
;
             
$rsDatos mysql_query ($sQuery)
             or die (
"Error  for categorias".mysql_error());

                         
//creo un array bidimencional con mysql_fetch_assoc
             
while($Datos mysql_fetch_assoc($rsDatos))
             {
                 
                               
$this->get_list[] = $Datos;
     
             }
             return  
$this->get_list;

      }


Lo que acabe de hacer es traer un arreglo bidimencional
para poder acceder a sus datos por medio de un FOR
en la parte del diseno.

Ahora para imprimir esto por pantalla lo voy a hacer
en otro documento para que se me entiendo mejor que la
presentacion la deseo trabajar totalmente separda de la programacion:


Index.php
Código PHP:

include("Trabajo.php");

$list = new Categoria();
$categorias_array $list->get_categories();

//ahora llamo al array bidimencional para que me presente los datos.



for ($i=0$i <count($categorias_array); $i++ )
{
     
     echo 
$categorias_array[$i]["cat_name"] ;
         echo 
"<br>"//le creo un salto de linea para que los ponga en clumna


Hasta este punto todo marcha bien y lo uqe veria por pantalla seria :


Código HTML:
 Categoria1
 Categoria2
 Categoria3
 Categoria4

Entre cada categoria deberia imprimir las subcategorias
Ahora la respuesta mas sencilla seria ....repetir el proceso
anterior pasandole el id de la categoria al la instancia del objeto
que trae las subcategorias de esa categoria en especifico.

Alguien me podria decir cual seria la mejor manera de traer
las subcategorias debajo de cada categoria ..

Como dije antes yo podria popular las subcategorias debajo de
cada categoria pero yo imprimo las subcategorias dentro del objeto
.. osea asi :


Index.php
Código PHP:

include("Trabajo.php");
include(
"Subcategoria.php");

$list = new Categoria();
$categorias_array $list->get_categories();

//ahora llamo al array multidimencional para que me presente los datos.



for ($i=0$i <count($categorias_array); $i++ )
{
     
     echo 
$categorias_array[$i]["cat_name"] ;
         echo 
"<br>"//le creo un salto de linea para que los ponga en clumna
         
         
$subcate_id  $categorias_array[$i]["cat_id"] ;
         
$subcategorias = new Subcategorias$subcate_id );


Y la clase Subcategoria quedaria asi:


Subcategoria.php
Código PHP:

class Subcategorias
{    
      protected 
$cat_id  ;    

      function 
__construct$cat_id )
      {
           
          
$this->cat_id $cat_id;
          
$this->get_subcategories();

      }
      
      public function 
get_subcategories()
      {

                         
$sQuery"SELECT *
             FROM SubCategorias where cat_id= $this->cat_id"
;
             
$rsDatos mysql_query ($sQuery)
             or die (
"Error  for subcategorias".mysql_error());

                         
//creo un array bidimencional con mysql_fetch_assoc
             
while($Datos mysql_fetch_array($rsDatos))
             {
                 
                               echo 
$Datos["subcat_name"];
                               echo 
"<br>";
     
             }
            

      }


Como ven lo resuelvo dentro de la clase y lo que yo quiero es resolverlo
en el diseno , pero cuando trato de hacerlo de la misma manera que llame
a las Categorias .. solo me muestra la primera categoria y las subcategorias de la
primera categoria ... luego se cicla y me da muchos mas errores ....

La verdad no se que estare haciendo mal
pero si alguien me podria decir como resolver esto
se lo agradeceria millon

Y estoy seguro que ayudara mucho a otras personas con el mismo problema

Gracias