Отображение изображения в виде галереи изображений с использованием PHP, полученного из phpmyadmin (MySQL)

Я использую PHP, HTML и MySQL для создания веб-сайта.

Итак, моя цель - создать галерею изображений для моей веб-страницы, которая должна отображать только 3 изображения в каждой строке.

Но мой код кажется неправильным, и я не знаю, где мне сделать исправление.

-) Вот мой код:

    $query = mysql_query("SELECT DISTINCT * FROM products WHERE catID = 11 ORDER BY typeID ASC"); 

echo "<table>";

while ($row = mysql_fetch_assoc($query)) 
{

echo "<tr>";

    for ($c = 0; $c < 3; $c += 1){

      echo "<td>";

        echo    '<img src="data:image/jpg;base64,'.base64_encode($row['productImg'] ).'" width="300" height="200" alt=""
             />';

        echo    "<br>";

            echo "<b>";
        echo    $row['productName'];
            echo "</b>";

        echo    "<br>";

        // More detail button set up
        ?><a href="show.php?productID=<?php echo $row["productID"]; ?>">More Detail <i class="fa fa-arrow-circle-o-right"></i></a> <?php



      echo "</td>";
    }

 echo "</tr>";

}

 echo "</table>";

-) Вот результат: неверное изображение результата

Результат получается не тот, что я ожидал, так как на 1 ряд выводит 3 одинаковых изображения. Я хотел отображать 3 разных изображения в каждой строке. Я не знаю, где я сделал неправильно.


person Json    schedule 13.11.2018    source источник


Ответы (1)


Результат получается не тот, что я ожидал, так как на 1 ряд выводит 3 одинаковых изображения.

Это из-за цикла for, вы перебираете одно и то же изображение три раза. Вместо этого используйте переменную счетчика $counter для отслеживания количества итераций и отображения трех разных изображений в строке.

<?php
    $query = mysql_query("SELECT DISTINCT * FROM products WHERE catID = 11 ORDER BY typeID ASC"); 

    if(mysql_num_rows($query)){
        $counter = 0;
        echo "<table><tr>";
        while ($row = mysql_fetch_assoc($query)) {
            if($counter != 0 && $counter % 3 == 0){
                echo "</tr><tr>";
            }
            echo "<td>";
                echo '<img src="data:image/jpg;base64,'.base64_encode($row['productImg'] ).'" width="300" height="200" alt=""/>';
                echo "<br>";
                echo "<b>";
                echo $row['productName'];
                echo "</b>";
                echo "<br>";
                // More detail button set up
                ?>
                <a href="show.php?productID=<?php echo $row["productID"]; ?>">More Detail <i class="fa fa-arrow-circle-o-right"></i></a> 
                <?php
            echo "</td>";
            ++$counter;
        }
        echo "</tr></table>";
    }
?>

Примечание: не используйте функции mysql_*, они устарели в PHP 5.5 и полностью удалены в PHP 7.0. Используйте mysqli или pdo вместо этого. И именно поэтому вам не следует использовать mysql_* функции.

person Rajdeep Paul    schedule 13.11.2018
comment
Спасибо! Из-за университетских целей я почему-то придерживаюсь PHP v5.5. Ваш код работает нормально, но я обнаружил проблему, заключающуюся в том, что счетчику $counter лучше присвоить значение 0, иначе расположение будет странным (1-я строка показывает 3 изображения, а следующая строка отображает 4 изображения). Но не беспокойтесь, код работает нормально! Спасибо еще раз... - person Json; 14.11.2018
comment
@Json, спасибо, что подняли вопрос, я инициализировал $counter на 0 и соответственно изменил условие if, теперь все должно работать нормально. - person Rajdeep Paul; 14.11.2018