Как получить новости из БД и распечатать их на странице PHP? - PullRequest
0 голосов
/ 26 марта 2019

Я хочу получить последние две новости из БД, а затем распечатать их на странице 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>
            ";
        }
    }
?>

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Это может быть самым простым: увеличить $i внутри вашего цикла, затем убедиться, что он существует, прежде чем вывести его на экран. Это позволит вам выровнять свои дивы:

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>
                ";
}
0 голосов
/ 26 марта 2019

Он делает именно то, что вы сказали, чтобы сделать! Внутри цикла for($i=0; $i < count($newsHome); $i++) он производит 2 деления, каждое из которых содержит одинаковые «новости» ($newsHome[$i]['title']) дважды !

Вы хотите, чтобы первый div содержал первую статью, а второй div содержал вторую статью.

Если вы удалите второй div в цикле for, он создаст один div для каждой новости.

(И вам, вероятно, придется переместить 2 внешних элемента (<div class='container'> и <div class='row'> вне цикла)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...