entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

llenar carousel de una base de datos

Hola a todos. A ver si me pueden ayudar.
Tengo un carousel el cual tengo que llenar con datos de una BBDD. Lo tengo que llenar con bloques de 6. Osea, ir llenando el carousel hasta 6, y al llegar a 6, comenzar a cargar el siguiente bloque. Pero no hay manera de que salga. He probado con for, con if, con while, pero no doy con la tecla.....
Les dejo el código:

<div class="carousel-inner">
                            <div class="item active">
                                <div class="row">

                                    <?php
                                    $qRead = $bd->Consultar("select * from music order by id ASC");
                                    while( $pop = mysql_fetch_array($qRead) ){?>

                                    <div class="col-sm-4">
                                        <div class="single-event">
                                            <img class="img-responsive" src="<?php echo $pop['image'] ?>" alt="event-image">
                                            <h4><?php echo $pop['name'] ?></h4>
                                            <h5><?php echo $pop['title'] ?></h5>
                                            <h6>Rock</h6>
                                        </div>
                                    </div>

                                    <?php
                                        }
                                    ?>

                                </div>
                            </div>
                            <div class="item">
                                <div class="row">
                                    <div class="col-sm-4">
                                        <div class="single-event">
                                            <img class="img-responsive" src="images/event/event1.jpg" alt="event-image">
                                            <h4>Chester Bennington</h4>
                                            <h5>Vocal</h5>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>

La cosa esta en que cuando acaba de llenar el item-active con 6, comience a llenar otro item, y una vez llene el item con 6, cree otro item con 6 más........
Gracias y un

1voto

Leonardo-Tadei comentado

No me queda claro el problema: querés un carrousel de 6 elementos, pero que cuando terminen los 6, vaciarlo y cargar otros 6?

Es que si es esto, no le encuentro mucho sentido a cargarlos de a 6 para al final, terminar mostrándolos a todos...

1voto

cobasESP comentado

Lo que quiere, según creo yo, es que quiere hacer carrouseles de 6 elementos como máximo, y cuando se llenen crear otro y volver a llenarle, supongo.

2 Respuestas

1voto

nachito777sk Puntos2050

Gracias por las respuestas.
Al final lo he hecho de otra manera, ya que con lo que me has dado me daba error...... Puede ser por crear varios item active, que en teoría active solo se tendría que crear el primero, los siguientes serían item, sin el active. Lo he hecho de la siguiente manera (después de probar muchas..):

<div class="carousel-inner">
                            <div class="item active">
                                <div class="row">

                                    <?php
                                    $qRead = $bd->Consultar("select * from music order by id ASC");
                                    $a = 1;
                                    while( ($a < 7) && ($pop = mysql_fetch_array($qRead)) ){
                                         ?>

                                    <div class="col-sm-4">
                                        <div class="single-event">
                                            <img class="img-responsive" src="<?php echo $pop['image'] ?>" alt="event-image">
                                            <h4><?php echo $pop['name'] ?></h4>
                                            <h5><?php echo $pop['title'] ?></h5>
                                            <h6>Rock</h6>
                                        </div>
                                    </div>

                                    <?php
                                    $a = $a + 1;
                                        }
                                    ?>

                                </div>
                            </div>

                            <?php
                            while($pop = mysql_fetch_array($qRead) ){
                            ?>
                            <div class="item">
                                <div class="row">

                                    <div class="col-sm-4">
                                        <div class="single-event">
                                            <img class="img-responsive" src="<?php echo $pop['image'] ?>" alt="event-image">
                                            <h4><?php echo $pop['name'] ?></h4>
                                            <h5><?php echo $pop['title'] ?></h5>
                                            <h6>Rock</h6>
                                        </div>
                                    </div>

                                    <?php

                                    $a = 1;
                                    while( ($a < 6) && ($pop = mysql_fetch_array($qRead)) ){
                                         ?>

                                    <div class="col-sm-4">
                                        <div class="single-event">
                                            <img class="img-responsive" src="<?php echo $pop['image'] ?>" alt="event-image">
                                            <h4><?php echo $pop['name'] ?></h4>
                                            <h5><?php echo $pop['title'] ?></h5>
                                            <h6>Rock</h6>
                                        </div>
                                    </div>

                                    <?php
                                    $a = $a + 1;
                                        }
                                    ?>

                                </div>
                            </div>
                            <?php
                                }
                            ?>
                        </div>

Lo que hago es crear un item active si hay objetos suficientes. Una vez acabo esto creo un item, y así mientras haya items..... No se si me he explicado bien, pero en el código se ve claramente.
Gracias de nuevo.

2votos

cobasESP Puntos19650

Esto lo deberías hacer con un doble bucle anidado, da igual for o while, pero al saber que tenemos que rellenarlos todos con 6, usaremos un for, y como no sabemos cuantos carruseles tenemos que llenar usaremos para el primero un while.

El primer while contendra las etiquetas y estilos del div class='item', en otras palabras, un objeto del carrusel.
El bucle anidado contendrá los datos que cogemos de la base de datos, de tal forma que ocurrira esto, te pongo un ejemplo con pseudocódigo, cosa que te recomiendo que uses para que en un futuro no te eche humo la cabeza:

Pseudocódigo
-----------------
//Crear bucle que inicia un item del carrusel
      //Crear el contenedor 
           //Crear bucle for que rellene 6 items
                //por cada vuelta del bucle, rellenar div con datos
      //al acabar un bucle for que rellene 6 items, cierro el primer item del  
        carrusel y vuelve a empezar el while       

Este es nuestro pseudocódigo, ahora hay que borrar cada linea y reemplazarla con código que asi todo es mas fácil, a mi me queda algo asi:

<div class="carousel-inner">
        <?php
             $qRead = $bd->Consultar("select count(estilos) from music");
             //Esto es un ejemplo para rellenar cada item con 6 canciones de diferentes tipos y que el bucle while tenga un maximo, que son los tipos de musica(rock, pop, dance... etc)
             while( $pop = mysql_fetch_array($qRead) ){?>
                   <div class="item active">
                                <div class="row">

                                    <?php
                                    $contador = 0;//Para saber cuando llegamos a 6
                                    $qRead = $bd->Consultar("select * from music order by id ASC");
                                    while( $pop = mysql_fetch_array($qRead) && $contador <6){?>

                                    <div class="col-sm-4">
                                        <div class="single-event">
                                            <img class="img-responsive" src="<?php echo $pop['image'] ?>" alt="event-image">
                                            <h4><?php echo $pop['name'] ?></h4>
                                            <h5><?php echo $pop['title'] ?></h5>
                                            <h6>Rock</h6>
                                        </div>
                                    </div>

                                    <?php
                                        //incrementamos en 1 el contador y cerramos bucle
                                        $contador++;
                                        }
                                    ?>
                              </div>
                            </div>
                  <?php } //cerramos el primer bucle while o bucle global ?>

Solo te e puesto el algoritmo de tu problema no lo siguiente de abajo, es menos lioso, lo que hago es, sacar los tipos de musica(tu hazlo como lo tengas pensado o directamente pon ahi un numero), y ese bucle se repetira x veces, al empezar el bucle creara un nuevo item, e iniciara otro bucle que sacara todos los datos de un tipo de musica, por cada cancion incrementara el contador en 1, si el contador es 6 o se acaban los datos saldra de ese bucle, l salir cerrara los divs del item y volvera a empezar de nuevo este bucle, creara otra vez otro item, y empezara a rellenar lodatos de este... etc etc.

Asi hasta que se acaben los datos del a tabla o llegue a un limite si quieres ponersele de carruseles.

Espero que no te sea muy lioso y que te sirva, pregunta por aqui si te sigues quedando con dudas.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta