2017-02-11 10 views
0

Я создаю веб-страницу с множеством альбомов. Он будет отображать изображения, когда я нажимаю один из альбомов.Несколько таблиц отображают php MySQL

ISSUE 1: Проблема, с которой я сталкиваюсь сейчас, заключается в том, что все изображения из разных альбомов будут отображаться при нажатии на один из альбомов.

ВЫПУСК 2: В файле php, который находится после щелчка по альбому. Я хочу, чтобы отобразить только один снимок только для одного продукта, но мой код, кажется, не работает правильно

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

Так Существует аналогичный пример кода, который может помочь вам понять. , но это в Mysqli Object oriented как я сам учусь PDO. Но я уверен, что это даст хорошее понимание.

Здесь я использую PHP объектно-ориентированное с Mysqli подготовил заявление

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 object oriented и PDO поможет вам создать аккуратный, управляемый код и решить сложные проблемы. –