Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/01/2012, 12:19
Avatar de Garot
Garot
 
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 11 meses
Puntos: 7
Problema con un "for" dentro de otro "for"

Hola a todos!

Estoy estudiando a través de videotutoriales la programación orientada a objetos, y bueno, despues de varios capítulos decidi poner manos en el código porque mucha teoría y poca práctica no sirve. En fin, no llegue muy lejos, di dos pasos y ya me cai en un pozo....

Trato de hacer un loop for dentro de otro, haciendo dos consultas diferentes dentro de cada for pero que llaman a métodos dentro de la misma clase, les dejo el código para que entiendan mejor:

Esta es la clase "Lista"
Código PHP:
<?php 
require_once("conectar.php");

class 
Lista
{

    public function 
get_categorias()
    {
        
$sql1="SELECT * FROM categorias ORDER BY orden ASC";
        
$ris=mysql_query($sql1,Conectar::con());
        while(
$rig=mysql_fetch_assoc($ris))
        {
            
$this->cat[]=$rig;
        }
        return 
$this->cat;
    }
    
    public function 
get_subcategorias($categoria)
    {
        
        
$sql2="SELECT * FROM subcategorias WHERE id_cat='$categoria' ORDER BY orden ASC";
        
$res=mysql_query($sql2,Conectar::con());
        while(
$reg=mysql_fetch_assoc($res))
        {
            
$this->subcat[]=$reg;
        }
        return 
$this->subcat;
    }
    
    public function 
get_productos($subcategoria)
    {
        
$sql3="SELECT * FROM articulos WHERE id_sub='$subcategoria'";
        
$ros=mysql_query($sql3,Conectar::con());
        while(
$rog=mysql_fetch_assoc($ros))
        {
            
$this->articulo[]=$rog;
        }
        
        return 
$this->articulo;
        
    }
}
?>
y aca están los "for" donde llamo a los métodos de la clase "Lista"
Código HTML:
Ver original
  1. <div id="listo">
  2.     <ul>
  3.         <?php
  4.             $sub_categoria=$lista->get_subcategorias(1);
  5.                    
  6.             for($e=0;$e<sizeof($sub_categoria);$e++)
  7.             {
  8.         ?>
  9.         <li><a href="#" class="sub"><?php echo $sub_categoria[$e]["nombre_sub"]; ?></a>
  10.             <ul>
  11.                 <?php
  12.                $productos=$lista->get_productos($sub_categoria[$e]["id_sub"]);
  13.  
  14.                 for($x=0;$x<sizeof($productos);$x++)
  15.                {
  16.                ?>
  17.                 <li><a href="#" class="art"><?php echo $sub_categoria[$e]["nombre_sub"]; ?> <?php echo $productos[$x]["marca"]; ?> - <?php echo $productos[$x]["descripcion"]; ?></a></li>
  18.                 <?php } ?>
  19.             </ul>
  20.         </li>
  21.         <?php } ?>
  22.     </ul>
  23. </div>

El caso es que devuelve resultados, me hace un listado pero es totalmente incoherente, la primera vuelta del loop la hace bien, pero despues me devuelve todos los resultados de la tabla sin filtrarlos por el id como ordena la consulta del método "get_subcategorias".

Ya les digo soy nuevo en POO, tal vez el problema sea muy estúpido pero yo no lo veo, espero que alguien con más visión que yo en esto me ayude a ver el camino a la solución.

Muchas gracias a todos!!