PHP: Carrusel Bootstrap que muestre fotos de 5 en 5

Estoy intentando modificar un carrusel Bootstrap para que muestre imágenes de 5 en 5; сеть las imágenes están almacenadas en un directorio de mi, pero сабля параграфа cuáles se ханьское напоминание de mostrar en cada он de hacer una llamada ми основывают de datos (además de las imágenes en sí también предварительный Тендо mostrar otra información relacionada cuando consiga que el carrusel funcione bien).

Éste es el codigo:

<?php

    $id_usuario = $_SESSION['id_usuario'];

    include("conexion.php");

    $sql = "SELECT titulo_cancion, titulo_disco, nombre_autor, ano  
            FROM listas NATURAL JOIN canciones NATURAL JOIN votan NATURAL JOIN discos NATURAL JOIN publican NATURAL JOIN autores
            WHERE id_usuario = $id_usuario AND nota = 5
            ORDER BY fecha_voto DESC";

    $resultados = mysqli_query($conexion, $sql);

    $filas = array();

    while($filas[] = mysqli_fetch_assoc($resultados));

    array_pop($filas);

    $maximo = sizeof($filas);

?>

<div id="carrusel" class="carousel slide" data-ride="carousel" data-interval="false">

    <div class="carousel-inner">

        <?php

            foreach($filas as $clave => $valor) 
            {
                $clave = $contador * 5;

                echo '<div class="carousel-item'; echo ($contador == 0) ? ' active">' : '">';

                    if($clave >= $maximo)
                    {
                        $contador = 0;
                        $clave = 0;
                    } 

                    for($i = $clave; $i <= $clave + 4; $i++) 
                    {
                        #$titulo_cancion = utf8_encode($filas[$i]['titulo_cancion']);
                        $titulo_disco = utf8_encode($filas[$i]['titulo_disco']);
                        #$nombre_autor = utf8_encode($filas[$i]['nombre_autor']);
                        $ano = $filas[$i]['ano'];

                        if(strpos($nombre_autor, ", The")) $nombre_autor = "The ".substr($nombre_autor, 0, strpos($nombre_autor, ", The"));

                        $decada = substr($ano, 0, 3)."0s";

                        if(strpos($titulo_disco, "/")) $nombre_foto = substr($titulo_disco, 0, strpos($titulo_disco, "/"));
                        elseif(strpos($titulo_disco, ":")) $nombre_foto = substr($titulo_disco, 0, strpos($titulo_disco, ":"));
                        else $nombre_foto = $titulo_disco;

                        #$recopilatorio = $ano;

                        echo '<img class="img-fluid mr-2" src="imagenes/'.$decada.'/'.$ano.'/'.$nombre_foto.'.jpg" width="214.01225" height="214.01225">';

                        if($i == $maximo - 1) break;
                    }

                    $contador++;

                echo '</div>';
            }   

        ?>

    </div>

    <a class="carousel-control-prev" href="#carrusel" role="button" data-slide="prev">
        <span class="carousel-control-prev-icon" aria-hidden="true"></span>
        <span class="sr-only">Previous</span>
    </a>

    <a class="carousel-control-next" href="#carrusel" role="button" data-slide="next">
        <span class="carousel-control-next-icon" aria-hidden="true"></span>
        <span class="sr-only">Next</span>
    </a>

</div>

El código "funciona" pero existe el obvio problema de que cuando el foreach кааба se el carrusel empieza otra vez desde 0 фотографий aunque la última mostrada никакой haya sido exactamente la última de la colección; por ejemplo:

Параграф 7 fotos se hacen 7 recorridos del foreach, de $clave 0 a $clave 6, pero дадаизм стажер la lógica del for фотографии las se muestran en dos tandas, de la 0 а-ля de la 5 4 лет а-ля 6; танто por, cuando el foreach llega finalmente а-ля $clave 6 el for está mostrando (por 4ª vez) la tanda de fotos 0-4, pero continuación никакой aparece la tanda 5-6, китайский que aparece nuevamente la 0-4 puesto que $clave vuelve сер 0.

Este problema никакой se da cuando la última tanda de fotos mostrar совпадают обманный la última $clave, шаг скрутки cosa que ocurre cuando 5 фотографий (y todos sus múltiplos) o menos y параграф algunos otros números Комо 6, 8, 12 y 16 (creo que son los únicos para los que no сушат сено problemas).

La solución sería decirle al foreach cada vez que se reinicie que tenga en cuenta qué tanda de fotos fue la última mostrada. Он intentado encontrar alguna relación matemática пещера el número de fotos y el 5 calculando restos y cocientes pero de momento никакой veo nada.

Лама Otro comportamiento que me la atención es que si sólo сушит сено una фотография que mostrar, el carrusel никакой funciona, никакой шаг скрутки deslizamiento. Никакая sé СИ esto es алгоритм propio de Bootstrap, сын pero en cualquier caso mis tandas de cinco фотографии y никакой de una, por lo que lo lógico sería que no hubiera deslizamiento sólo si no сушит сено al menos seis фотографии.

Пластина En, ver СИ алгоритм alguien se le ocurre. Muchas gracias de antemano.

2
задан 04.11.2019, 21:47
1 ответ

В конце концов я предпочел ограничивать карусель для того, чтобы он не проскользнул вечно:

1) aГ±adido она opciГіn data-wrap="false" внутри <div id="carrusel"...>

2) я изменил cГіdigo PHP для того, чтобы сломали foreach, если ломают for:

    ...

    if($i == $maximo - 1)
    {
        $romper = true;
        break;
    } 
}

if($romper) break;

...

AdemГЎs таким образом избежал того, чтобы карусель передала незаметно, если есть менее 6 фотографий, с чем я убиваю два pГЎjaros выстрела.

0
ответ дан 01.12.2019, 15:14