Вопрос по PHP, внесение из базы в массив

453
05 декабря 2017, 22:03

Вопрос заключается в следующем: Имеем скрипт (ниже).

Зачем в этом случае записывать массив в переменную $array 2 раза, если можно просто запись произвести в цикле, и почему в этом случае выводится блок с пустым содержимым 7-м блоком?

        $per_page = 6;
        if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0;
        $start=abs($page*$per_page);
        $result = mysql_query("SELECT * FROM `news` ORDER BY id DESC LIMIT $start,$per_page");
        $array = mysql_fetch_array($result);

        do
        {
        echo ""."<a href='/newsfull.php/?single=$array[id]' class='news-block'><img class='news-img' src='statimg/$array[file]' alt=''><div class='news-content'><h4>". $array[zagolovok] . "</h4><p>" . $array[smallopisanie] . "</p><p style='text-align: right; display: block;'>" . $array[time] . " <i class='fa fa-calendar-o' aria-hidden='true'></i></p></div></a>"."";
        }
        while ($array = mysql_fetch_array($result));

Мои предположения относительно переработки скрипта, хочу узнать почему так не работает:

            include 'bd.php';
            $per_page = 6;
            if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0;
            $start=abs($page*$per_page);
            $result = mysql_query("SELECT * FROM `news` ORDER BY id DESC LIMIT $start,$per_page");

            do
            {
            echo ""."<a href='/newsfull.php/?single=$array[id]' class='news-block'><img class='news-img' src='statimg/$array[file]' alt=''><div class='news-content'><h4>". $array[zagolovok] . "</h4><p>" . $array[smallopisanie] . "</p><p style='text-align: right; display: block;'>" . $array[time] . " <i class='fa fa-calendar-o' aria-hidden='true'></i></p></div></a>"."";
            }
            while ($array = mysql_fetch_array($result));

Answer 1

Вся соль в этом куске кода

  do
            {
            echo ""."<a href='/newsfull.php/?single=$array[id]' class='news-block'><img class='news-img' src='statimg/$array[file]' alt=''><div class='news-content'><h4>". $array[zagolovok] . "</h4><p>" . $array[smallopisanie] . "</p><p style='text-align: right; display: block;'>" . $array[time] . " <i class='fa fa-calendar-o' aria-hidden='true'></i></p></div></a>"."";
            }
            while ($array = mysql_fetch_array($result));

Сначала Вы выводите, а потом запрашиваете данные для вывода, в результате у Вас 1 блок пустой (без данных), для того что бы работало нормально

  while ($array = mysql_fetch_array($result))
            {
            echo ""."<a href='/newsfull.php/?single=$array[id]' class='news-block'><img class='news-img' src='statimg/$array[file]' alt=''><div class='news-content'><h4>". $array[zagolovok] . "</h4><p>" . $array[smallopisanie] . "</p><p style='text-align: right; display: block;'>" . $array[time] . " <i class='fa fa-calendar-o' aria-hidden='true'></i></p></div></a>"."";
            }

Рекомендую ознакомится с справкой

do {} while (); http://php.net/manual/ru/control-structures.do.while.php

и while() {} http://php.net/manual/ru/control-structures.while.php

Принцип похож но имеет различия во времени проверки условий выполнения циклов

READ ALSO
Занесение в базу данных phpMyAdmin

Занесение в базу данных phpMyAdmin

Доброго времени сутокДля обучения работы с selenium мне понадобилась форма регистрации, заносящая данные в БД

406
Как задать первому элементу из списка класс active?

Как задать первому элементу из списка класс active?

Добрый день есть такой кодПодскажите пожалуйста как сделать что бы у первого элемента из цикла был класс active

404
PHP, едит поста в модальном окне bootstrap

PHP, едит поста в модальном окне bootstrap

id поста у меня передается таким образом:

144
Склонение русских слов по падежам (php)

Склонение русских слов по падежам (php)

Посоветуйте бесплатный сервис, относительно небольшую библиотеку или способы реализации для склонения русских слов по падежам на сайтеРаньше,...

342