2016-05-17 2 views
1

が、機能は私が「製品」テーブルから、データベース「デモ」からのデータを表示することができます:表示データ

class Product 
{ 
private $conn; 
private $id; 
private $name; 
private $description; 
private $price; 
private $category_id; 
private $category_name; 
private $created; 

public function __construct($db) 
{ 
    $this->conn = $db; 
} 

public function readAll() 
{ 
    $stmt = $this->conn->prepare('SELECT name, description, price, CategoryID, created FROM products'); 
    $stmt->execute(); 
    while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) { 
     $n = $result['name']; 
     $d = $result['description']; 
     $p = $result['price']; 
     $ca = $result['CategoryID']; 
     $c = $result['created']; 
     echo $n . " - " . $d . " - " . $p . " - " . $ca . " - " . $c . "<br />" . "<br />"; 
    } 
} 
} 

ここに私のデータベース接続があります:

class Database { 

public function getConnection() { 
    $result = false; 
    try { 
     $result = new PDO('mysql:host=localhost;dbname=demo', 'root', ''); 
    } catch(PDOException $e) { } 
    return $result; 
} 
} 
$db = new Database(); 
$conn = $db->getConnection(); 
if (!$conn) { 
die("Error connecting to the database"); 
} 

私はこのようなデータを表示できます。

<div> 
     <h3>readAll:</h3> 
     <form action="" method="post"> 
      <label>Products: <br /> (Name - Description - Price - Category ID - Creation date): </label><br /> 
      <?php 
      $cat = new Product($conn); 
      echo $cat->readAll(); 
      ?> 
     </form> 
    </div> 

をしかし、どのように、私は、テーブル内のデータベースからデータを表示することができますか?

+0

配列内をループしてループ内に表示する必要があります – Poria

+0

配列としてデータを取得するときにforeachループを使用できます。 var_dump($ cat-> readAll());を実行します。 –

答えて

2

ここにヒントがあり、それはあなたのPHPの構造によって異なります。

ただ、whileループの前に、

echo '<table>'; 

が//あなたが

While(...){ 

    $a = $row['...']; 

    echo ' 
    <tr><td>'.$a.'</td></tr> 
    '; 
    //you can add as many columns as you wish 

    } 

    echo '</table> 

を喜ば場合、私はあなたがこの

+0

ええ、私はちょうどそれをやって、おかげで管理:) – artur47wien

+0

あなたは大歓迎です –

1

から理解を選んだ願って、テーブルのヘッドを追加することができます。ここに簡単な方法がありますあなたがしようとしているものを達成する。しかしその前に、あなたが構築しているアプリケーションへのあなたのアプローチについて少し話しましょう。

最初。あなたのPHPコードでhtmlを構築するのは良い習慣ではありません。あなたが取り組むことができる最良の方法は、プレゼンテーションのためにデータを準備し、プレゼンテーションレイヤにこのデータを提供することです(この考え方についてのより広範な説明については、MVC patternをご覧ください)。

だから、データを準備しましょう。製品を入手した機能では、単に製品を返すだけです。私たちが構築しようとしている何のために、のgetAll()READALL()より説明的であるため、

public function getAll() 
{ 
    $stmt = $this->conn->prepare('SELECT name, description, price, CategoryID, created FROM products'); 
    $stmt->execute(); 
    $allProducts = $stmt->fetchAll(PDO::FETCH_ASSOC); 

    return $allProducts; 
} 

は、私はまた、機能の名前を変更しました。

今、私たちは必要なデータをすばやく簡単に取得できます。

プレゼンテーションをしましょう。

ビューのPHPファイルで、データを取得します。

<?php 
    // Get all products. 
    $products = (new Product($conn))->getAll(); 
?> 

あなたはMVC(または任意のMV *)に深く掘る場合は、パターン、あなたはデータを求めビューが(データを引っ張って)最善のアプローチではないことを知るでしょう。より良いものは、のデータをビューにプッシュすることです。しかしそれは今や別の話です。

したがって、私たちは製品に私たちの製品を持っています。それを反復しよう。最初にユーザーがいるかどうかを確認することを忘れないでください。

<?php if (! empty($products)) : ?> 
    <table> 
    <thead> 
     <tr> 
      <th>Name</th> 
      <th>Description</th> 
      <th>Price</th> 
      <th>CategoryID</th> 
      <th>Created</th> 
     </tr> 
    </thead> 

    <?php foreach ($products as $product) : ?> 
     <tr> 
      <td><?php $product['name'] ?></td> 
      <td><?php $product['description'] ?></td> 
      <td><?php $product['price'] ?></td> 
      <td><?php $product['CategoryID'] ?></td> 
      <td><?php $product['created'] ?></td> 
     </tr> 
    <?php endforeach; ?> 
    </table> 
<?php endif; ?> 

これだけです。私はベストプラクティスについてのあなたの視点を広げるようインスピレーションを与えたいと思っています。:)