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