Foros del Web » Programando para Internet » PHP »

Ordenar por categorias dependientes.

Estas en el tema de Ordenar por categorias dependientes. en el foro de PHP en Foros del Web. A ver si pueden ayudarme. Tengo productos asociados a categorias. Esta es la conex: Código PHP: $productos  =  mysql_query ( "SELECT categorias.*,productos.* FROM categorias,productos WHERE categorias.categoria_id = productos.categoria_padre ORDER BY categorias.categoria_nombre ASC , productos.nombre ASC" );  Todo anda bien, ...
  #1 (permalink)  
Antiguo 27/01/2014, 13:30
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Pregunta Ordenar por categorias dependientes.

A ver si pueden ayudarme.

Tengo productos asociados a categorias.
Esta es la conex:
Código PHP:
$productos mysql_query("SELECT categorias.*,productos.* FROM categorias,productos WHERE categorias.categoria_id = productos.categoria_padre ORDER BY categorias.categoria_nombre ASC , productos.nombre ASC"); 

Todo anda bien, el problema que poseo es en el script que me organiza en la misma página la categoría y abajo me ordena los productos.
Hacerlo lo hace, pero, no puedo cerrar los dos divs que quedan.

Código PHP:
<?php 
                $catactual 
NULL;
                while (
$fila mysql_fetch_assoc($productos)) {
                    if (
$catactual != $fila['categoria_id']) {
                
?>
                <div class="recent-projects">
                   <h4 class="title"><span><?php echo $fila['categoria_nombre']; ?></span></h4>
                <div class="projects-carousel touch-carousel">
                <?php 
                        $catactual 
$fila['categoria_id'];
                        }
                
?>
                            <div class="portfolio-item item">
                                <div class="portfolio-border">
                                    <div class="portfolio-thumb">
                                        <a class="lightbox" data-lightbox-type="ajax" href="https://vimeo.com/78468485">
                                            <div class="thumb-overlay"><i class="icon-video-1"></i></div>
                                            <img alt="" src="images/<?php echo $fila['imagen']; ?>" />
                                        </a>
                                    </div>
                                    <div class="portfolio-details">
                                        <a href="#">
                                            <h4><?php echo $fila['nombre']; ?></h4>
                                        </a>
                                    </div>
                                </div>
                            </div>
                <?php 
                    
}
                
?>
Necesito que una vez que esa categoria no tenga mas elementos que mostrar pase a otra cerrandome los divs:
<div class="recent-projects">
<div class="projects-carousel touch-carousel">

Que son los que inician arriba del script.

Solo necesito cerrar esos dos divs para que cargue la categoría siguiente.

Espero puedan ayudarme

  #2 (permalink)  
Antiguo 27/01/2014, 14:30
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Ordenar por categorias dependientes.

Probe poniendole echo "</div></div>"; antes y despues del último } pero nada :(
  #3 (permalink)  
Antiguo 27/01/2014, 15:10
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Ordenar por categorias dependientes.

Si te fijas bien, estás cerrando la condición en donde aparecen dichos Divs antes de que cierres a éstos, creo que así estaría mejor:

Código PHP:
Ver original
  1. <?php  
  2. $catactual = NULL;
  3. while ($fila = mysql_fetch_assoc($productos)) {
  4.     if ($catactual != $fila['categoria_id']) {
  5. ?>
  6.         <div class="recent-projects">
  7.             <h4 class="title"><span><?php echo $fila['categoria_nombre']; ?></span></h4>
  8.             <div class="projects-carousel touch-carousel">
  9. <?php  
  10.                 $catactual = $fila['categoria_id'];
  11. ?>
  12.                 <div class="portfolio-item item">
  13.                     <div class="portfolio-border">
  14.                         <div class="portfolio-thumb">
  15.                             <a class="lightbox" data-lightbox-type="ajax" href="https://vimeo.com/78468485">
  16.                                 <div class="thumb-overlay"><i class="icon-video-1"></i></div>
  17.                                 <img alt="" src="images/<?php echo $fila['imagen']; ?>" />
  18.                             </a>
  19.                         </div>
  20.                         <div class="portfolio-details">
  21.                             <a href="#">
  22.                                 <h4><?php echo $fila['nombre']; ?></h4>
  23.                             </a>
  24.                         </div>
  25.                     </div>
  26.                 </div>
  27.             </div>
  28.         </div>
  29. <?php  
  30.     }
  31. }
  32. ?>

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 27/01/2014, 15:18
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Ordenar por categorias dependientes.

No, el resultado de eso es esto:

Código PHP:
<div class="recent-projects">
                <
h4 class="title"><span>Categoria 1</span></h4>
                <
div class="projects-carousel touch-carousel">
                        <
div class="portfolio-item item">
                        <
div class="portfolio-border">
                            <
div class="portfolio-thumb">
                                <
class="lightbox" data-lightbox-type="ajax" href="https://vimeo.com/78468485">
                                    <
div class="thumb-overlay"><class="icon-video-1"></i></div>
                                    <
img alt="" src="images/portfolio-01.jpg" />
                                </
a>
                            </
div>
                            <
div class="portfolio-details">
                                <
a href="#">
                                    <
h4>Producto numero 1</h4>
                                </
a>
                            </
div>
                        </
div>
                    </
div>
                </
div>
            </
div>
                <
div class="recent-projects">
                <
h4 class="title"><span>Categoria 2</span></h4>
                <
div class="projects-carousel touch-carousel">
                        <
div class="portfolio-item item">
                        <
div class="portfolio-border">
                            <
div class="portfolio-thumb">
                                <
class="lightbox" data-lightbox-type="ajax" href="https://vimeo.com/78468485">
                                    <
div class="thumb-overlay"><class="icon-video-1"></i></div>
                                    <
img alt="" src="images/portfolio-03.jpg" />
                                </
a>
                            </
div>
                            <
div class="portfolio-details">
                                <
a href="#">
                                    <
h4>Producto numero 3</h4>
                                </
a>
                            </
div>
                        </
div>
                    </
div>
                </
div>
            </
div
Cuando debería ser esto:

Código PHP:
<div class="recent-projects">
                   <
h4 class="title"><span>Categoria 1</span></h4>
                <
div class="projects-carousel touch-carousel">
                                            <!-- 
INICIA -->
                            <
div class="portfolio-item item">
                                <
div class="portfolio-border">
                                    <!-- 
Start Project Thumb -->
                                    <
div class="portfolio-thumb">
                                        <
class="lightbox" data-lightbox-type="ajax" href="https://vimeo.com/78468485">
                                            <
div class="thumb-overlay"><class="icon-video-1"></i></div>
                                            <
img alt="" src="images/portfolio-01.jpg" />
                                        </
a>
                                    </
div>
                                    <!-- 
End Project Thumb -->
                                    <!-- 
Start Project Details -->
                                    <
div class="portfolio-details">
                                        <
a href="#">
                                            <
h4>Producto numero 1</h4>
                                        </
a>
                                    </
div>
                                    <!-- 
End Project Details -->
                                </
div>
                            </
div>
                            <!-- 
TERMINA -->
               </
div>
               </
div>
                

                  <
div class="recent-projects">
                   <
h4 class="title"><span>Categoria 2</span></h4>
                <
div class="projects-carousel touch-carousel">
                                            <!-- 
INICIA -->
                            <
div class="portfolio-item item">
                                <
div class="portfolio-border">
                                    <!-- 
Start Project Thumb -->
                                    <
div class="portfolio-thumb">
                                        <
class="lightbox" data-lightbox-type="ajax" href="https://vimeo.com/78468485">
                                            <
div class="thumb-overlay"><class="icon-video-1"></i></div>
                                            <
img alt="" src="images/portfolio-03.jpg" />
                                        </
a>
                                    </
div>
                                    <!-- 
End Project Thumb -->
                                    <!-- 
Start Project Details -->
                                    <
div class="portfolio-details">
                                        <
a href="#">
                                            <
h4>Producto numero 3</h4>
                                        </
a>
                                    </
div>
                                    <!-- 
End Project Details -->
                                </
div>
                            </
div>
                            <!-- 
TERMINA -->
                </
div>
</
div

De hecho con tu script no me muestra si en la categoria hay 2 productos dentro. Solo uno por categoria.
  #5 (permalink)  
Antiguo 27/01/2014, 15:21
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Ordenar por categorias dependientes.

Simplifico el codigo asi... la imagen deberia repetirse dependiendo el nombre de la categoria que esta en h4...

Osea: Categoria 1 tiene foto 1 y 2, Categoria 2 Tiene foto 4 5 6 7 y asi.

Código PHP:
<?php 
                $catactual 
NULL;
                while (
$fila mysql_fetch_assoc($productos)) {
                    if (
$catactual != $fila['categoria_id']) {
                
?>
                <!--Start Recent Projects-->
                <div>
                   <h4><?php echo $fila['categoria_nombre']; ?></h4>
                <div>
                <?php 
                        $catactual 
$fila['categoria_id'];
                        }
                
?>
                            <!-- INICIA -->
                                <div>
                                            <img alt="" src="images/<?php echo $fila['imagen']; ?>" />
                                </div>
                            <!-- TERMINA -->
                <?php
                    
}
                    echo 
"</div></div>";
                
?>
debo cerrar esos dos divs cuando la categoria se termine y ponga la segunda.
  #6 (permalink)  
Antiguo 27/01/2014, 15:33
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Ordenar por categorias dependientes.

Te lo sugerí así porque en el código original, lo tenías de esta forma:

Código PHP:
Ver original
  1. <?php
  2. while ($fila = mysql_fetch_assoc($productos)) {
  3.     if ($catactual != $fila['categoria_id']) {
  4. ?>
  5.         <div class="recent-projects">
  6.             <h4 class="title"><span><?php echo $fila['categoria_nombre']; ?></span></h4>
  7.             <div class="projects-carousel touch-carousel">
  8. <?php  
  9.                 $catactual = $fila['categoria_id'];
  10.     }
  11. ?>

Hay dos Divs que aparecen cuando se cumple la condición, pero cierras la condición antes de cerrar los Divs, por eso se te presenta ese inconveniente.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 27/01/2014, 15:41
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Ordenar por categorias dependientes.

Ya probe cerrando la condición mas abajo e igual no sale
  #8 (permalink)  
Antiguo 27/01/2014, 15:45
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Ordenar por categorias dependientes.

¿Pero la cierras después de haber cerrado a los Divs?, sería de mucha ayuda que nos muestres los cambios que has hecho para poder ayudarte.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 27/01/2014, 15:52
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Ordenar por categorias dependientes.

Probe asi y no hay caso:


Código PHP:
<?php 
                $catactual 
NULL;
                while (
$fila mysql_fetch_assoc($productos)) {
                    if (
$catactual != $fila['categoria_id']) {
                        
                        
                
?>
                <!--Start Recent Projects-->
                <div class="recent-projects">
                   <h4 class="title"><span><?php echo $fila['categoria_nombre']; ?></span></h4>
                <div class="projects-carousel touch-carousel">
                <?php 
                        $catactual 
$fila['categoria_id'];
                
?>
                            <!-- INICIA -->
                            <div class="portfolio-item item">
                                <div class="portfolio-border">
                                    <!-- Start Project Thumb -->
                                    <div class="portfolio-thumb">
                                        <a class="lightbox" data-lightbox-type="ajax" href="https://vimeo.com/78468485">
                                            <div class="thumb-overlay"><i class="icon-video-1"></i></div>
                                            <img alt="" src="images/<?php echo $fila['imagen']; ?>" />
                                        </a>
                                    </div>
                                    <!-- End Project Thumb -->
                                    <!-- Start Project Details -->
                                    <div class="portfolio-details">
                                        <a href="#">
                                            <h4><?php echo $fila['nombre']; ?></h4>
                                        </a>
                                    </div>
                                    <!-- End Project Details -->
                                </div>
                            </div>
                            <!-- TERMINA -->
                <?php
                    
}
                    }
                    echo 
"</div></div>";
                
                
?>
También probé:
  #10 (permalink)  
Antiguo 27/01/2014, 15:58
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Ordenar por categorias dependientes.

El otro no lo pongo porque realmente no funciono
  #11 (permalink)  
Antiguo 27/01/2014, 16:03
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Ordenar por categorias dependientes.

Date cuenta que sigues intentando cerrar los Divs después de cerrar la condición y ahora también después de cerrar el bucle. Te sugiero que ordenes tu código, indenta por jerarquías, eso hago cuando tengo mucho código dentro de condiciones para luego no marearme y cometer errores.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #12 (permalink)  
Antiguo 27/01/2014, 16:14
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Ordenar por categorias dependientes.

Sabes que no lo encuentro. Creo que se me ha quemado el cerebro. me he quedado en este punto y no puedo encontrar la solución...

Simplifique todo el código e igual no puedo hacerlo.

<?php
$catactual = NULL;
while ($fila = mysql_fetch_assoc($productos)) {
if ($catactual != $fila['categoria_id']) {
echo $fila['categoria_nombre'];
$catactual = $fila['categoria_id'];
}
echo "<li>".$fila['nombre']."</li>";
}
echo "</ul>";
?>
  #13 (permalink)  
Antiguo 27/01/2014, 16:44
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Ordenar por categorias dependientes.

No sé cómo esté estructurada tu BD, pero presumo que pretendes hacer algo similar a esto:

Código PHP:
Ver original
  1. <?php
  2. $query = mysql_query("SELECT * FROM tabla");
  3. if (mysql_num_rows($query)){
  4.     while ($row = mysql_fetch_array($quey)){
  5. ?>
  6.         <div>
  7.             <h4> <?=$row["titulo"]?> </h4>
  8.         </div>
  9.  
  10.         <div>
  11.             <a href = 'ejemplo.php?id=<?=$row["id"]?>'>
  12.                 <img src = '<?=$row["imagen"]?>' />
  13.             </a>
  14.         </div>
  15.  
  16.         <div>
  17.             <h4> <?=$row["producto"]?> </h4>            
  18.         </div>
  19. <?php        
  20.     }
  21. }
  22. ?>

Si es parecido a lo que buscas, adáptalo a tus necesidades, saludos.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #14 (permalink)  
Antiguo 27/01/2014, 16:50
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Ordenar por categorias dependientes.

No, eso no me funciona porque yo tengo dos tablas... Una de productos y otra de categorias.

La tabla productos esta ligada a la de categorias:

Código PHP:
$productos mysql_query("SELECT categorias.*,productos.* FROM categorias,productos WHERE categorias.categoria_id = productos.categoria_padre ORDER BY categorias.categoria_nombre ASC , productos.nombre ASC"); 
  #15 (permalink)  
Antiguo 27/01/2014, 16:53
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Ordenar por categorias dependientes.

Hombre, la consulta es lo de menos, te estoy tratando de decir que analices la forma en como estructuro los datos a mostrar, puedes hacer JOINs con más tablas si gustas, ese es tema aparte.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #16 (permalink)  
Antiguo 27/01/2014, 16:57
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Ordenar por categorias dependientes.

Ok, olvidate que sepa mucho de php amigo... porque soy muy nuevo. Ese script lo tenía guardado y a penas entiendo como funciona.

Pruebo y pruebo y nada.
  #17 (permalink)  
Antiguo 27/01/2014, 17:06
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Ordenar por categorias dependientes.

Es que ya no se trata del lenguaje que estés usando sino de orden en la estructura mediante la cual presentas los datos, es lo que vengo diciéndote desde el primer comentarios, cierras los Divs después de haber cerrado la condición y el bucle que los contienen y eso está mal, debes ir cerrando de adentro hacia afuera.

Código PHP:
Ver original
  1. <?php
  2. while ($condicion1){ //Inicio del bucle
  3.     if ($condicion2){ //Inicio de la condición
  4. ?>
  5.         <div> <!-- Inicio del Div -->
  6.             Hola Mundo
  7.         </div> <!-- Fin del Div -->
  8. <?php
  9.     } //Fin de la condición
  10. } //Fin del bucle
  11. ?>

Si sigues y mantienes un orden, no tendrás complicaciones con cosas tan sencillas como estas. Saludos.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #18 (permalink)  
Antiguo 27/01/2014, 17:19
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Ordenar por categorias dependientes.

A ver si esto esta bien? pero no anda igual:

Código PHP:
Ver original
  1. <?php
  2.                 //Catactual viene Nulo
  3.                 $catactual = NULL;
  4.                 //Inicio Bucle de conección a categorias y productos
  5.                 while ($fila = mysql_fetch_assoc($productos)) {
  6.                     //Si la categoria actual es distinta a la ID de la categoria
  7.                 if ($catactual != $fila['categoria_id']) {
  8.                 ?>
  9.                 <!--Start Recent Projects-->
  10.                 <div class="recent-projects">
  11.                    <h4 class="title"><span><?php echo $fila['categoria_nombre']; ?></span></h4>
  12.                 <div class="projects-carousel touch-carousel">
  13.                 <?php
  14.                 //transforma Categoriactual en la categoria_id
  15.                 $catactual = $fila['categoria_id'];
  16.                 if ($catactual == $fila['categoria_padre']) {
  17.                 ?>
  18.                             <!-- INICIA -->
  19.                             <div class="portfolio-item item">
  20.                                 <div class="portfolio-border">
  21.                                     <!-- Start Project Thumb -->
  22.                                     <div class="portfolio-thumb">
  23.                                         <a class="lightbox" data-lightbox-type="ajax" href="https://vimeo.com/78468485">
  24.                                             <div class="thumb-overlay"><i class="icon-video-1"></i></div>
  25.                                             <img alt="" src="images/<?php echo $fila['imagen']; ?>" />
  26.                                         </a>
  27.                                     </div>
  28.                                     <!-- End Project Thumb -->
  29.                                     <!-- Start Project Details -->
  30.                                     <div class="portfolio-details">
  31.                                         <a href="#">
  32.                                             <h4><?php echo $fila['nombre']; ?></h4>
  33.                                         </a>
  34.                                     </div>
  35.                                     <!-- End Project Details -->
  36.                                 </div>
  37.                             </div>
  38.                             <!-- TERMINA -->
  39.                 <?php
  40.                 } //Cierra el IF
  41.                 } //CIERRA EL PRIMER IF
  42.                 } //Cierra el WHILE
  43.                 ?>
  #19 (permalink)  
Antiguo 27/01/2014, 17:21
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Ordenar por categorias dependientes.

Lamento estarte comiendo la cabeza con esto pero realmente desde las 8 de la mañana estoy con esto y no puedo sacarlo!
  #20 (permalink)  
Antiguo 27/01/2014, 17:33
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Ordenar por categorias dependientes.

Dale con calma hermano, no eres el primer ni el último programador que algunas vez se haya estancado en alguna sección de su código. No te satures, descansa y mañana, ya descansado y con más calma, inténtalo nuevamente, si no puedes con una forma, hazlo con otra y sino, con otra, pero nunca caigas en la desesperación.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #21 (permalink)  
Antiguo 27/01/2014, 18:12
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Ordenar por categorias dependientes.

Intentaré bueno por las dudas a ver si tu sabes como puedo programarlo:

La tabla es esta:

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `categorias` (
  2.   `categoria_id` bigint(200) NOT NULL,
  3.   `categoria_nombre` varchar(200) NOT NULL,
  4.   `categoria_nombre_en` varchar(200) NOT NULL
  5. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  6.  
  7. CREATE TABLE IF NOT EXISTS `productos` (
  8.   `producto_id` bigint(200) NOT NULL AUTO_INCREMENT,
  9.   `nombre` varchar(255) DEFAULT NULL,
  10.   `nombre_en` varchar(200) DEFAULT NULL,
  11.   `descripcion` text,
  12.   `descripcion_en` text,
  13.   `imagen` varchar(200) DEFAULT NULL,
  14.   `categoria_padre` int(200) NOT NULL,
  15.   PRIMARY KEY (`producto_id`)
  16. ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;
  #22 (permalink)  
Antiguo 28/01/2014, 06:44
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Ordenar por categorias dependientes.

Hoy 10am no doy con el resultadoooooooooooooooooooooamksamkn anl fasnlfsa nlfa snlsa nls alnksa !!!!!!!!!!!!!!!!
  #23 (permalink)  
Antiguo 28/01/2014, 10:37
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Ordenar por categorias dependientes.

Analizando con más calma tu problema, el inconveniente se te presenta porque estás intentando mostrar todas las imágenes relacionadas a una categoría, pero con una consulta inadecuada, puesto que de ese modo, siempre mostrarás una y solamente una imagen por cada categoría.

Lo que debes hacer es agrupar a todos los nombres e imágenes asociadas a cada categorías y cuando imprimas los datos de la categoría, también imprimes a todos los nombres e imágenes que estén asociadas a dicha categoría, así con cada una.

Código PHP:
Ver original
  1. <?php
  2. $query = mysql_query("SELECT C.*, GROUP_CONCAT(P.nombre) AS name, GROUP_CONCAT(P.imagen) AS img FROM categorias C INNER JOIN productos P ON C.categoria_id = P.categoria_padre GROUP BY C.categoria_id ORDER BY C.categoria_nombre ASC, P.nombre ASC");
  3. if (mysql_num_rows($query)){
  4.     $catactual = NULL;
  5.     while ($row = mysql_fetch_array($query)){
  6.         if ($catactual != $row["categoria_id"]){
  7.             $catactual = $row["categoria_id"];
  8. ?>
  9.             <div class = "recent-projects">
  10.                 <h4 class="title">
  11.                     <span>
  12.                         <?=$row["categoria_nombre"]?>
  13.                     </span>
  14.                 </h4>
  15.                 <div class = "projects-carousel touch-carousel">
  16. <?php
  17.                     $nombres = explode(",", $row["name"]);
  18.                     $imagenes = explode(",", $row["img"]);
  19.                     for ($i = 0, $limite = count($nombres); $i < $limite; $i++){
  20. ?>             
  21.                         <div class = "portfolio-item item">
  22.                             <div class = "portfolio-border">
  23.                                 <div class = "portfolio-thumb">
  24.                                     <a class = "lightbox" data-lightbox-type = "ajax" href = "https://vimeo.com/78468485">
  25.                                         <div class="thumb-overlay">
  26.                                             <i class="icon-video-1"></i>
  27.                     </div>
  28.                                         <img src="images/<?php echo $imagenes[$i]; ?>" />
  29.                                     </a>
  30.                                 </div>
  31.                                 <div class="portfolio-details">
  32.                                     <a href="#">
  33.                                         <h4><?=$nombres[$i]?></h4>
  34.                                     </a>
  35.                                 </div>
  36.                             </div>
  37.                         </div>
  38. <?php
  39.                     }
  40. ?>                  
  41.                 </div>
  42.             </div>
  43. <?php
  44.         }
  45.     }
  46. }
  47. ?>

En esencia, con GROUP_CONCAT, agrupo a todos los nombres e imágenes que estén relacionadas a cada categoría, por ejemplo, categoría 1 tiene los nombres A1, A2 y A3 y las imágenes A1.jpg, A2.jpg, A3.jpg, de este modo, dichos nombres e imágenes son agrupados junto a ese registro y cuando imprimo la información, quito las comas con las que esta función de MySQL agrupa a los datos, convirtiéndose dicho grupo en un array y dado a que debe existir la misma cantidad de nombres como de imágenes, recorro con un bucle al array de los nombres y en cada iteración, muestro la imagen y nombre respectivo estando aún dentro del Div principal de la categoría en curso. Así será con cada categoría.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #24 (permalink)  
Antiguo 28/01/2014, 11:37
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Ordenar por categorias dependientes.

SOS UN GENIOOOOOOOOOOOOOOO esa era la solución... como me costó por favor... Sos un genio...

Ahora entendí el problema.

Te pido lo último a ver si me puedes ayudar en otro problema que tengo creando categorias y subcategorias.

Te dejo puntos hasta que se me caigan los deods jajaja...

http://www.forosdelweb.com/f18/lista...tabla-1089145/

Etiquetas: categorias, mysql, select
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 04:28.