1

基本的な Web サイト用に基本的な MVC をセットアップしました。データベース(モデル)を呼び出してクエリを実行するクラスがあり、ビューにアクセスするためのビューメソッドもあります

<?php
class Products {

    public function view( $file_name, $data = null ) 
    {
        if( is_array($data) ) {
           extract($data);
        }

        include 'application/view/' . $file_name;
    }

    public function getProducts () {
        $stmt = Database::get()->query ('SELECT * FROM retrofootball_products WHERE id>4');
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
        return $result;

    }
}

次に、これをビューに渡し、これを表示します

<?php require 'application/view/template/header.html'; ?>

<div class="product">


<div class="eight columns">

</div>    

<div class="eight columns">
<?php echo "$productname    ";echo  "| Price £$price";?>

</div>

</div>

最初のリストのようにすべてのフィールドをリストに表示したいのですがManchester City 1999 Playoff Winning Shirt | Price £40、私のビューは同じように列名にしかアクセスできません$productname

クエリをループしてすべての製品を表示する方法はありますか? 配列を返そうとしましたが、ビューでこれを宣言できません。列名のみを渡すことができます。私の小さなウェブサイトの構造を要旨に追加しました。

https://gist.github.com/d7a21ceee5e36b4f6198

4

1 に答える 1

1
public function getProducts () {
    $stmt = Database::get()->query ('SELECT * FROM retrofootball_products WHERE id>4');
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

これにより、すべての結果行を含む配列が得られます。テンプレートでは、foreachループを使用して行を反復処理できます。

<?php require 'application/view/template/header.html'; ?>
<?php foreach($products as $product) { ?>
  <div class="product">
    <div class="eight columns"></div>    
    <div class="eight columns">
      <?php echo htmlspecialchars($product['name']) .' | Price £' . $product['price']; ?>
    </div>
  </div>
<?php } ?>
于 2013-01-07T16:30:28.250 に答える