【问题标题】:How to fetch news from a db and print them on a PHP page?如何从数据库中获取新闻并将其打印在 PHP 页面上?
【发布时间】:2019-03-29 04:17:41
【问题描述】:

我想从数据库中获取最后两条新闻,然后使用函数将它们打印到 PHP 页面上。

这两个新闻应该一个接一个地打印出来。

这是我到目前为止所做的,我做错了什么?

这就是问题所在:

<?php
    function getAllNewsHome(){
        $connection = mysqli_connect("localhost", "root", "", "serverName");
        $connection->query("SET NAMES 'utf8'");
        $rsNewsHome = mysqli_query($connection, "SELECT * FROM news ORDER BY id DESC LIMIT 2");
        $newsHome = mysqli_fetch_all($rsNewsHome, MYSQLI_ASSOC);
        mysqli_close($connection);
        for($i=0; $i < count($newsHome); $i++){
            echo "
                <div class='container'>
                    <div class='row'>
                        <div class='col-xs-6'>
                            <h1>".$newsHome[$i]['title']."
                            </h1>
                            <p>".$newsHome[$i]['content']."
                        </div>
                        <div class='col-xs-6'>
                            <h1>".$newsHome[$i]['title']."
                            </h1>
                            <p>".$newsHome[$i]['content']."
                        </div>
                    </div>
                </div>
            ";
        }
    }
?>

【问题讨论】:

  • 您对上述代码有什么问题?此外,最好关闭 PHP 标记,删除 echo,然后将 HTML 输出为 HTML 并使用 &lt;?= $var ?&gt; 回显。
  • 发生这种情况是因为您要打印两次。您需要做的是将类放入循环中,然后可能添加一个计数器来决定是否需要关闭/打开容器。或者您可以在两个 6col div 之间的循环中间执行 $i++ 以获得下一个结果,但只需确保检查下一个迭代是否确实存在。
  • @aynber 我曾尝试打印一次,但它们会在另一个之上,我需要它们并排。我在回声中遗漏了什么吗?

标签: php mysql html bootstrap-4


【解决方案1】:

这可能是最简单的:在循环中增加$i,然后在回显之前确保它存在。这将允许您保持 div 对齐:

for($i = 0; $i < count($newsHome); $i++) {
    echo "
                    <div class='container'>
                        <div class='row'>
                            <div class='col-xs-6'>
                                <h1>" . $newsHome[$i]['title'] . "
                                </h1>
                                <p>" . $newsHome[$i]['content'] . "</p>
                            </div>";
    $i++;
    echo "
                            <div class='col-xs-6'>";
    if(array_key_exists($i, $newsHome)) {
        echo "<h1>" . $newsHome[$i]['title'] . "
                                </h1>
                                <p>" . $newsHome[$i]['content'] . "</p>";
    }

    echo "
                            </div>
                        </div>
                    </div>
                ";
}

【讨论】:

    【解决方案2】:

    它完全按照您的指示去做!在 for($i=0; $i &lt; count($newsHome); $i++) 循环中,它产生 2 个 div,每个 div 都包含相同的“新闻”($newsHome[$i]['title']两次

    您希望第一个 div 包含第一篇文章,第二个 div 包含第二篇文章。

    如果您在 for 循环中删除第二个 div,它将为每个“新闻”创建一个 div。

    (您可能必须将 2 个外部 div(&lt;div class='container'&gt;&lt;div class='row'&gt; 移到循环外)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      • 1970-01-01
      • 2017-10-20
      • 1970-01-01
      相关资源
      最近更新 更多