динамическая сетка с использованием php и bootstrap - PullRequest
0 голосов
/ 24 января 2019

Я хочу создать динамическую сетку, используя php и bootstrap.Например,

Случай 1 => Если у меня всего 6 записей, то строка 1 содержит сетки col-md-4, а строка 2 содержит сетки col-md-4. Случай 2 => Если у меня всего 5 записей, строка1 содержит сетки col-md-4, а в строке 2 - сетки col-md-6 Случай 3 => Если у меня всего 4 записи, то в строке 1 содержатся сетки col-md-4, а в строке 2 - сетки col-md-12

Как это сделать, я понятия не имею, какое-либо решение?

<?php foreach($Banners as $i=>$DATA){
    if($count%3==1){
        echo "<div class='row'>";
        $lgclass = "col-lg-4";
    }
    if($count%4==0){
        $lgclass = "col-lg-6";
    }
    if($count%5==0){
        $lgclass = "col-lg-6";
    }
?>
<div class="<?php echo $lgclass;?> col-xs-12 col-sm-12" <?php echo $count;?>>
    <h2 class="section-title" >&nbsp;</h2>
    <a href="http://mymegarealty.net/index.php?option=com_jointeam">
        <div class="full-width"> 
            <img src="<?php echo $Imageurl;?>" class="img-responsive" style="height:250px;;display:unset;">
        </div>
    </a>
</div>
<?php 
if($count%3==0){
    echo "</div>";
} 
$count++;} ?>

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Вы должны быть в состоянии просто достичь этого с помощью flex.Но с начальной загрузкой попробуйте использовать рекурсию: маленький пример ниже

<?php

$elements = [1, 2, 3, 4];

function displ(&$el, $out = "") {
    if (count($el) === 0) {
        return $out;
    } elseif (count($el) > 3) {
        $i = 0;
        foreach ($el as $k=>$v) {
            $out .= "<div class=\"col-md-4\">" . $v . "</div>";
            unset($el[$k]);
            $i++;
            if ($i === 3) {
                return displ($el, $out);
            }
        }
        return displ($el, $out);
    } elseif (count($el) < 3) {
        foreach ($el as $k=>$v) {
            $out .= "<div class=\"col-md-" . 12 / count($el) . "\">" . $v . "</div>";
            unset($el[$k]);
        }
        return $out;
    }
}

echo displ($elements);
0 голосов
/ 24 января 2019

было бы лучше рекурсивное решение, если вы хотите, вы можете сделать это.Я написал вам в начале логику, если я последую примеру, опрокинутому на ваши нужды.моя логика была процедурной.

<?php
/*
logic
while myElements !=0 
    if myElements > 2
        dispay row whith 3 elements
        myElements remove firs 3
    else if myElements == 2
        dispay row whith 2 elements
        myElements remove firs 2
    else if myElements == 1
        dispay row whith 1 elements
        myElements remove firs 1
end while
*/
// init my data
$data=[];
$element=5;
for($i=0;$i<$element;$i++){array_push($data,$i);}
var_dump($data);

// do code

function displayElement($data, $classAdd){
    echo "<div class='".$classAdd."'>";
    echo $data; // your cell
    echo "</div>";
}

while (sizeof($data)!=0){
    if (sizeof($data)>2){
        echo "<div class='row'>";
        displayElement($data[0],"col-lg-4");
        displayElement($data[1],"col-lg-4");
        displayElement($data[2],"col-lg-4");
        echo "</div>";
        $data=array_slice($data,3);
    }elseif (sizeof($data)==2){
        echo "<div class='row'>";
        displayElement($data[0],"col-lg-6");
        displayElement($data[1],"col-lg-6");
        echo "</div>";
        $data= array_slice($data,2);
    }elseif (sizeof($data)==1){
        echo "<div class='row'>";
        displayElement($data[0],"col-lg-12");
        echo "</div>";
        $data= array_slice($data,1);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...