2017-02-11 2 views
0

私は多くのアルバムを持つWebページを構築しています。アルバムの1つをクリックすると画像が表示されます。複数のテーブルにPHPが表示されるMySQL

問題1:私が今問題にしているのは、アルバムを1つだけクリックすると、異なるアルバムのすべての画像が表示されるということです。

問題2:アルバムをクリックした後のphpファイルです。私は1つの製品のみのための唯一の画像を表示したいが、私のコードは正しく

t1.recordid = t2.categoryrecordid

t2.productrecordid = t3.productid

私のMySQLのテーブルの構造を動作していないようですデザイン: カテゴリー: enter image description here

製品: enter image description here

Productimage:

enter image description here

私のアルバムのためのコード:

  <div class="row"> 
      <?php 
      $stmt = $DB_con->prepare('SELECT recordid, catcode,title,imgfile,catdesc FROM category ORDER BY recordid DESC'); 
      $stmt->execute(); 

      if ($stmt->rowCount() > 0) { 
       while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
        extract($row); 
        ?> 
        <div class="col-xs-3"> 

         <p><img src="./images/<?php echo $row['catcode']?>/<?php echo $row['imgfile']; ?>" class="img-rounded" width="190px" height="160px" /></p> 
         <p><a class="page-header" href="collectionGallery.php?cat= <?php echo $row['catcode']; ?>"><?php echo $row['title']; ?></a></p> <br/> 
        </div>  
        <?php 
       } 
      } else { 
       ?> 
       <div class="col-xs-12"> 
        <div class="alert alert-warning"> 
         <span class="glyphicon glyphicon-info-sign"></span> &nbsp; No Data Found ... 
        </div> 
       </div> 
       <?php 
      } 
      ?> 
     </div> 
    </div> 

私はアルバム(そのアルバムの表示画像)をクリックした後のコード:

 <div class="row"> 
     <?php 
     $stmt = $DB_con->prepare('SELECT category.*, product.*, productimage.* FROM category JOIN product ON product.categoryrecordid=category.recordid JOIN productimage ON productimage.productid=product.productrecordid'); 
     $stmt->execute(); 

     if ($stmt->rowCount() > 0) { 
      while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
       extract($row); 
       ?> 
       <div class="col-xs-3"> 
        <p><img src="./images/<?php echo $row['catcode'].'/'. $row['imagefilename']; ?>" class="img-rounded" width="190px" height="160px" /></p> 
        <p><?php echo $row['productcode'].' Price:'.$row['price']; ?></a></p> 
       </div>  
       <?php 
      } 
     } else { 
      ?> 
      <div class="col-xs-12"> 
       <div class="alert alert-warning"> 
        <span class="glyphicon glyphicon-info-sign"></span> &nbsp; No Data Found ... 
       </div> 
      </div> 
      <?php 
     } 
     ?> 
    </div> 
+3

あなたのSQLクエリはすべてのレコードを選択しています、クリックされたものだけではありません。あなたが探しているものは 'WHERE'節と呼ばれます:https://dev.mysql.com/doc/refman/5.7/en/select.html基本的には、それらのすべてを表示します。 – David

+0

返信いただきありがとうございます!しかし、アルバムのそれぞれが自分が属する画像だけを表示できるようにするにはどうすればいいですか?私は質問を上に編集しています。 – xhinvis

+0

アルバムごとに画像を表示するには、 'WHERE'を使用する必要があります。これに関連する小さな例をお送りしたい場合は、' ELSE'データベースにテーブルを追加するなど、いくつかの変更が必要です。 –

答えて

1

ので、同様のがありますあなたが理解するのを助けることができるコードの例。 これはPDOとして私自身がMysqli Object orientedにあります。しかし、私はこれが良い理解に役立つと確信しています。

ここで私はのMysqliに配向PHPオブジェクトを使用していますが声明

1を調製した)名前のデータベース内のテーブルを作成します。アルバム

albums table

2)は、名前のデータベース内のテーブルを作成します。 productimg

productimg table

3)インデックスページ:index.phpを

<?php 
    include('products.php'); 
$newprod = new products(); 
?> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>PHP MYSQL SHOW ALBUMS</title> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
</head> 
<body> 
    <div class="container"> 
     <ul class="breadcrumb" style="width:100px;"> 
      <li><a href="#">d</a></li> 
      <li><a href="#">d</a></li> 
      <li><a href="#">d</a></li> 
     </ul> 
     <div class="row"> 
      <?php $newprod->showAlbums(); ?> 
     </div> 
    </div> 
</body> 
</html> 

4)このファイルを表示し、アルバムや製品イメージ:products.php

<?php 
    class products{ 
     private $link; 

     function __construct(){ 
      $this->link = new mysqli('localhost','root','admin','codexworld'); 
      if(mysqli_connect_errno()){ 
       die("connection failed".mysqli_connect_errno()); 
      } 
     } 

     function showAlbums(){ 
      $sql = $this->link->stmt_init(); 
      if($sql->prepare("SELECT pname,album_name,product_code FROM albums")){ 
       $sql->bind_result($pname,$albumname,$pcode); 
       $sql->execute(); 
       while($sql->fetch()){ 
      ?> 
        <div class="col-md-4"> 
         <a href="displproduct.php?pcode=<?php echo $pcode;?>"><img src="albumimages/<?php echo $albumname;?>" alt="<?php echo $pname; ?>" class="" style="width:200px;height:200px;"> 
         <h4>ALBUM :<strong><?php echo $pname;?></strong></h4></a> 
        </div> 
      <?php 
       } 
      } 
     } 

     function showproducts($productcode){ 
      $sql = $this->link->stmt_init(); 
      if($sql->prepare("SELECT productname,productid,image FROM productimg WHERE productid = ?")){ 
       $sql->bind_param('s',$productcode); 
       $sql->bind_result($pname,$pid,$img); 
       $sql->execute(); 
       while($sql->fetch()){ 
      ?> 
        <div class="col-md-4"> 
         <img src="productimg/<?php echo $img;?>" alt="<?php echo $pname; ?>" class="" style="width:200px;height:200px;"> 
         <h4>Product Image :<strong><?php echo $pname;?></strong></h4> 
        </div> 
      <?php 
       } 
      } 
     } 
    } 
?> 

5)このファイルは、製品を表示します。displproduct.phpは

<?php 
    include('products.php'); 
    $newprod = new products(); 
?> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>PHP MYSQL SHOW ALBUMS</title> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
</head> 
<body> 
    <div class="container"> 
     <div class="row"> 
      <?php if(isset($_GET['pcode'])){ 
        $productcode = $_GET['pcode']; 
        $newprod->showproducts($productcode); 
       } 
      ?> 
     </div> 
    </div> 
</body> 
</html> 
+0

これは本当に私に役立ちます、ありがとう! – xhinvis

+0

mysqli prepareを使用すると、PHPオブジェクト指向とPDOは、きれいな外観を作り、コードを管理し、複雑な問題を解決するのに役立ちます。 –

関連する問題