【问题标题】:PHP MySQL - For every 6 rows insert a div?PHP MySQL - 每6行插入一个div?
【发布时间】:2018-07-07 15:08:42
【问题描述】:

PHP:

<?php
$stmt = $db->prepare("SELECT * FROM `users`");
$stmt->execute();
$result = $stmt->get_result();

//<div class="ui stackable six cards">

if($result->num_rows > 0) {
  while($row = $result->fetch_assoc()) {
    echo $one[] = "image div".$row["avatar"]."image div";
    echo $two[] = "content div".$row["username"]."content div";
  }
  echo "</table>";
}
$stmt->close();
?>

HTML:

<div class="ui center aligned stackable grid container" style="padding: 4em !important;">
                <div class="center aligned row">
                    <div class="column">
                        <h2 class="header">Members </h2>
                    </div>
                </div>

                <div class="ui stackable six cards">
                    <div class="ui card small">
                        <div class="image">
                            <img src="assets/img/players/.jpg">
                        </div>

                        <div class="content">
                            <a class="header"></a>
                        </div>
                    </div>

                    <div class="ui card small">
                        <div class="image">
                            <img src="assets/img/players/.jpg">
                        </div>

                        <div class="content">
                            <a class="header"></a>
                        </div>
                    </div>
                    <div class="ui card small">
                        <div class="image">
                            <img src="assets/img/players/.jpg">
                        </div>

                        <div class="content">
                            <a class="header"></a>
                        </div>
                    </div>
                    <div class="ui card small">
                        <div class="image">
                            <img src="assets/img/players/.jpg">
                        </div>

                        <div class="content">
                            <a class="header"></a>
                        </div>
                    </div>

                    <div class="ui card small">
                        <div class="image">
                            <img src="assets/img/players/.jpg">
                        </div>

                        <div class="content">
                            <a class="header"></a>
                        </div>
                    </div>

                    <div class="ui card small">
                        <div class="image">
                            <img src="assets/img/players/.jpg">
                        </div>

                        <div class="content">
                            <a class="header"></a>
                        </div>
                    </div>
                </div>

                <div class="ui stackable six cards">
                    <div class="ui card small">
                        <div class="image">
                            <img src="assets/img/players/.jpg">
                        </div>

                        <div class="content">
                            <a class="header"></a>
                        </div>
                    </div>

                    <div class="ui card small">
                        <div class="image">
                            <img src="assets/img/players/.jpg">
                        </div>

                        <div class="content">
                            <a class="header"></a>
                        </div>
                    </div>
                    <div class="ui card small">
                        <div class="image">
                            <img src="assets/img/players/.jpg">
                        </div>

                        <div class="content">
                            <a class="header"></a>
                        </div>
                    </div>
                    <div class="ui card small">
                        <div class="image">
                            <img src="assets/img/players/.jpg">
                        </div>

                        <div class="content">
                            <a class="header"></a>
                        </div>
                    </div>
                    <div class="ui card small">
                        <div class="image">
                            <img src="assets/img/players/.jpg">
                        </div>

                        <div class="content">
                            <a class="header"></a>
                        </div>
                    </div>

                    <div class="ui card small">
                        <div class="image">
                            <img src="assets/img/players/.jpg">
                        </div>

                        <div class="content">
                            <a class="header"></a>
                        </div>
                    </div>
                </div>
            </div>

所以基本上我需要弄清楚的是,我究竟会得到什么

//<div class="ui stackable six cards">

每次达到 6 行时回显!这可能吗?

我假设我会使用 foreach 循环?

我需要它做的是从数据库中回显头像和用户名,并将其放在我的 HTML 代码中,我可以做到这一点。

但问题是我不知道如何让它每 6 行(最后是 a)添加到此代码中

附注我的英语说得不太好,所以我真的希望你明白我的意思!

【问题讨论】:

标签: php mysql


【解决方案1】:

我会参考这个问题,因为这是您需要的: checking if a number is divisible by 6 PHP

你的逻辑你基本上应该是:如果一个数字能被 6 整除,那么做一些事情,否则做其他事情。

if ($row_number % 6 == 0) {
    // Row number is 6, 12, 18 and so on
} else {
    // Other rows
}

【讨论】:

  • 这更像是一个提示/评论而不是一个答案。完整的解决方案有更多的活动部件。请看我的回答。
  • @mickmackusa 有时这是人们需要的,一个提示。感谢您的反馈。
【解决方案2】:

我建议你检查这个http://php.net/manual/en/function.array-chunk.php

例子:

$rows = array_chunk($yourArrayfetch, '3'); // 3 = column count;
foreach ($rows as $columns) {
    echo "<div class='row'>";
    foreach ($columns as $column) { 
        echo "<div class='column'>$column</div>"; 
    }
    echo "</div>";
}

【讨论】:

    【解决方案3】:

    请参阅我的内联 cmets,了解我的答案是如何工作的。

    此外,您并不需要为您的案例准备好语句,您应该只在SELECT 子句中包含您打算使用的列。

    代码:(Demo)

    $resultset=[
        ['avatar'=>1,'username'=>'A'],
        ['avatar'=>2,'username'=>'B'],
        ['avatar'=>3,'username'=>'C'],
        ['avatar'=>4,'username'=>'D'],
        ['avatar'=>5,'username'=>'E'],
        ['avatar'=>6,'username'=>'F'],
        ['avatar'=>7,'username'=>'G']
    ];
    if(sizeof($resultset)){  // your num rows
        $counter=0;  // initialize the counter
        foreach($resultset as $row){ // you while loop
            if($counter%6==0){  // see if counter is evenly divisible by 6
                if($counter){
                    echo "</div>";  // if counter does not equal zero, close previous group
                }
                echo "<div class='ui stackable six cards'>";  // start new group
            }
            echo "<div class='ui card small'>";
                echo "<div class='ui card small'><div class='image'><img src='".$row["avatar"]."'></div>";
                echo "<div class='content'><a class='header'>Dias".$row["username"]."</a></div></div>";
            echo "</div>";
            ++$counter;  // increment counter
        }
        echo "</div>";  // always close the final group
    }
    

    输出:

    <div class='ui stackable six cards'>
        <div class='ui card small'>
            <div class='ui card small'><div class='image'><img src='1'></div>
            <div class='content'><a class='header'>DiasA</a></div></div>
        </div>
        <div class='ui card small'>
            <div class='ui card small'><div class='image'><img src='2'></div>
            <div class='content'><a class='header'>DiasB</a></div></div>
        </div>
        <div class='ui card small'>
            <div class='ui card small'><div class='image'><img src='3'></div>
            <div class='content'><a class='header'>DiasC</a></div></div>
        </div>
        <div class='ui card small'>
            <div class='ui card small'><div class='image'><img src='4'></div>
            <div class='content'><a class='header'>DiasD</a></div></div>
        </div>
        <div class='ui card small'>
            <div class='ui card small'><div class='image'><img src='5'></div>
            <div class='content'><a class='header'>DiasE</a></div></div>
        </div>
        <div class='ui card small'>
            <div class='ui card small'><div class='image'><img src='6'></div>
            <div class='content'><a class='header'>DiasF</a></div></div>
        </div>
    </div>
    <div class='ui stackable six cards'>
        <div class='ui card small'>
            <div class='ui card small'><div class='image'><img src='7'></div>
            <div class='content'><a class='header'>DiasG</a></div></div>
        </div>
    </div>
    

    【讨论】:

    • @dallider 您对我的方法有任何疑问吗?你知道如何在 Stackoverflow 上接受答案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 2012-12-05
    相关资源
    最近更新 更多