簡體   English   中英

PHP 為每個產品創建一行而不是每行 3 個產品

[英]PHP Creating one row for each product instead of 3 products per row

我正在嘗試設計我的網站,但由於某種原因,當我添加 php 時,它會為每個產品創建一個新行,而不是每行 3 個產品。

    <main>
       <div class="container">
         <div class="row">
            <div class="col">
                <div class="card" style="width: 18rem;height: 400px;">
                    <?php
                    $query = "SELECT products.ProductName, products.Price, products.Weight, products.image FROM products";
                    $result = $link->query($query);
                    while ($row = mysqli_fetch_assoc($result)) {
                    ?>
                        <img src="<?php echo "{$row['image']}" ?>" width="100%">
                        <div class="card-body"><br>
                            <h5 class="card-title"><?php echo "{$row['ProductName']}" ?></h5>
                            <p>Weight: <?php echo "{$row['Weight']}" ?></p>
                            <p>€<?php echo "{$row['Price']}" ?></p>
                        </div>
                    <?php
                    }
                    ?>
                </div>
            </div>
        </div>
     </div>
</main>

您需要在每行的列中呈現您的產品,即構建一個網格。 我整理了一個小演示,展示了如何每行渲染 3 個產品。

foreach() ) 中調用的 function renderProduct() ) 模仿了您用於從數據庫中檢索產品的while循環; 它為每個產品生成一個column

該代碼使用HEREDOC ,因為它有助於分離PHP和HTML,同時允許注入PHP變量(變量被擴展) ,可愛。

<?php

function renderProduct($product = []) {
    $htmlProduct = <<<HEREDOC
            <div class="col">
                <div class="card" style="width: 18rem;height: 400px;">
                        <img src="{$product["img"]}" width="100%">
                        <div class="card-body"><br>
                            <h5 class="card-title">{$product["name"]}</h5>
                            <p>Weight: {$product["weight"]}</p>
                            <p>€{$product["price"]}</p>
                        </div>
                </div>
            </div>
    HEREDOC;

    return $htmlProduct;
}

$htmlStart = <<<HEREDOC
<!DOCTYPE html> <html lang="en" dir="ltr">   
<head>
    <meta charset="utf-8">
    <title>demo</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
    <link rel="stylesheet" href="something.css">
    </head>
<body>
<div class="container">
<div class="row">
HEREDOC;

$htmlEnd = <<<HEREDOC
</div> <!-- close row -->
</div> <!-- close container -->
</body>
</html>
HEREDOC;


// render page
echo $htmlStart;

$products = [
    ['img' => '1.png', 'name' => 'prod1', 'weight' => '300g', 'price' => '30'],
    ['img' => '2.png', 'name' => 'prod2', 'weight' => '400g', 'price' => '40'],
    ['img' => '3.png', 'name' => 'prod3', 'weight' => '500g', 'price' => '50'],
    ['img' => '4.png', 'name' => 'prod4', 'weight' => '600g', 'price' => '60'],
    ['img' => '5.png', 'name' => 'prod5', 'weight' => '700g', 'price' => '70'],
    ['img' => '6.png', 'name' => 'prod6', 'weight' => '800g', 'price' => '80'],
];
foreach($products as $prod) {
    echo renderProduct($prod);
}

echo $htmlEnd;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM