Как отобразить 2 изображения на слайде в карусели, используя php при l oop? - PullRequest
1 голос
/ 16 января 2020

У меня проблема с отображением изображений в карусели. Я хочу отобразить 2 изображения на слайд карусели. Я взял изображения из базы данных, используя l oop для создания слайдов. Проблема в том, что с моим кодом на слайде отображается только одно изображение.

Вот как это выглядит сейчас: Проверьте изображение

<?php
                $brojacPoStrani = 0;
                $sqlIzvestaji = mysqli_query($con, "SELECT operacije.nazivEng, izvestaji.operacija, izvestaji.ucinak, izvestaji.id FROM izvestaji INNER JOIN operacije ON izvestaji.operacijaId=operacije.id WHERE projekatId='$projekatId' AND datum='$datum'");
                while ($row = mysqli_fetch_array($sqlIzvestaji)) {
                    $id = $row['id'];

                    $sqlSlike = mysqli_query($con, "SELECT img_name FROM slike WHERE izvestajId='$id' AND datum='$datum'");

                    $brojacDuplikata = false;
                    while ($row2 = mysqli_fetch_array($sqlSlike)) {
                        if ($brojacPoStrani % 2 == 0) {
                ?>
                            <div class="carousel-cell" style="background-image: url('img/izvestaji.jpg'); background-repeat: no-repeat; background-size: 100% 350px;">
                                <h1 style="color: #fff; text-align: left; padding-left: 15px; font-weight: bold;"><?php echo $row['nazivEng']; ?></h1>
                                <?php
                                if ($brojacDuplikata === false) {
                                    $brojacDuplikata = true;
                                ?>
                                    <p style="text-align: left; padding-left: 45px; padding-top: 20px; padding-bottom: 10px;"><?php echo $row['operacija'] . " - " . $row['ucinak']; ?></p>
                                <?php
                                } else {
                                ?>
                                    <p style="text-align: left; padding-left: 45px; padding-top: 40px; padding-bottom: 10px;"></p>
                                <?php
                                }
                                ?>
                                <div class="row">
                                    <?php
                                    if ($brojacPoStrani % 2 == 0) {
                                    ?>
                                        <div class="col-lg-6">
                                            <img src="../files/izvestaji/<?php echo $project; ?>/<?php echo $datum; ?>/<?php echo $row['nazivEng']; ?>/<?php echo $row2['img_name']; ?>" style="width: 350px; height: 350px; padding-left: 10px;" class="float-right" />
                                        </div>
                                    <?php
                                    } else {
                                    ?>
                                        <div class="col-lg-6">
                                            <img src="../files/izvestaji/<?php echo $project; ?>/<?php echo $datum; ?>/<?php echo $row['nazivEng']; ?>/<?php echo $row2['img_name']; ?>" style="width: 350px; height: 350px; padding-right: 10px;" class="float-left" />
                                        </div>
                                    <?php
                                    }
                                    ?>

                                </div>
                                <br />
                            </div>
                <?php
                        }
                        $brojacPoStrani++;
                    }
                    $brojacPoStrani = 0;
                }

1 Ответ

1 голос
/ 16 января 2020

Как уже упоминалось, похоже, что вы должны иметь возможность использовать один запрос, а не иметь вложенные запросы - и на display 2 images per carousel slide вы фактически хотите выбирать данные из текущей и следующей строк. Один из простых способов сделать это - присвоить переменную весь набор записей, а затем обработать этот массив, используя for l oop. Ниже приведена упрощенная версия с полупсевдокодом, которая пытается объединить запросы sql и назначить набор записей массиву. Это не проверено как таковое, но может? быть полезным.

$sql="select 
        o.naziveng, 
        i.operacija, 
        i.ucinak, 
        i.id,
        s.img_name
    from izvestaji i
        inner join operacije o on i.operacijaid=o.id
        inner join slike s on s.izvestajId=i.id
    where projekatid='$projekatid' and datum='$datum'";

$res = mysqli_query( $con, $sql );
if( $res ){
    $arr = mysqli_fetch_all( $res, MYSQLI_BOTH );

    for( $i=0; $i < count( $arr ); $i+=2 ){
        try{

            $r1=array_key_exists( $i+0, $arr ) ? $arr[ $i+0 ] : false;
            $r2=array_key_exists( $i+1, $arr ) ? $arr[ $i+1 ] : false;

            /*
                generate the HTML structure and add two images
            */
            echo '<div class="carousel-cell">'; # simplified version
            if( $r1 )echo 'row 1: '.$r1['img_name'];
            if( $r2 )echo 'row 2: '.$r2['img_name'];
            echo '</div>';

        }catch( Exception $e ){
            continue;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...