根据产品ID查看尺寸

时间:2018-02-06 10:04:07

标签: php database phpmyadmin

我试图弄清楚如何显示依赖于产品ID的尺寸下拉列表。我有一个产品tbl,其中包含信息和产品详细信息tbl,其中包含productid作为外键,库存尺寸和单位。

我想只显示每种特定产品可用的尺寸。

产品展示代码

<?php while ($row = $stmt->    fetch()) { ?>
<div class="col-sm-12 col-md-6">
<div class="thumbnail">
<div class="productimage">
<img src="<?= $row['pimage'] ?>" alt="<?= $row['name'] ?>" onclick="window.location.href = '../Controller/Expand.php?id=<?= $row['productid'] ?>'">   
</div>
<div class="caption">                        
<h5><?= $row['name'] ?></h5>
<h6> <select name="size" id="size">                               
<?php foreach ($data as $row): ?>
<option><?= $row['size'] ?></option>
<?php endforeach ?>
</select></h6>
<br/>
</div>
</div>
</div>
<?php
}
?>

展示商店

   <?php

require_once 'DatabaseConnection.php';

extract($_GET);
  $sql = "SELECT
  Product.name,
  Product.colour,
  Product.unitprice,
  Product.pimage,
  Product.unitweight,
  ProductDetails.unitsinstock,
  ProductDetails.size,
  Product.discount,
  Product.productid,
  ProductDetails.productid
  FROM
  Product,
  ProductDetails
  WHERE
  Product.productid=ProductDetails.productid
  AND
  ProductDetails.unitsinstock>0";

  $stmt = $pdo->prepare($sql) or die(implode(':', $stmt->errorInfo()));
  $stmt->execute() or die(implode(':', $stmt->errorInfo()));
  $cols = $stmt->columnCount(); 

Sizes.Controller

    <?php
    require_once 'DatabaseConnection.php';
    $smt = $pdo->prepare("SELECT ProductDetails.size, ProductDetails.productid, Product.productid 
FROM ProductDetails, Product 
WHERE unitsinstock>0 
AND ProductDetails.productid=Product.productid");
    $smt->execute();
    $data = $smt->fetchAll();

任何帮助将不胜感激!感谢

2 个答案:

答案 0 :(得分:0)

正如我所看到的,两个SELECT查询是相同的。 我认为你的$ stmt查询应该是:

SELECT pimage, name, product_id FROM Product;

此查询的结果应该在变量$ row;

该查询将返回所有产品。 while循环将使用product_id捕获一行,例如1。 然后在foreach循环中你应该有$ data,它是查询结果:

SELECT * FROM ProductDetails;

$ data包含表ProductDetails中的所有产品 $ data中的每一行都是$ details。 然后你可以用php过滤产品:

<?php if($row['product_id'] == $details['product_id']) {
<option>
<?php echo $details['size']; ?>
</option>
} ?>

答案 1 :(得分:0)

我刚试过我的本地主机。我创建了两个mysql表(product和productdetails),这是一个简化的模板,用于从每个产品的productdetails中提取产品大小。

<?php
$pdo = new PDO('mysql:host=localhost;dbname=shop', 'root', 'root'); // root is username and also password :)

$stmt = $pdo->prepare("SELECT * FROM product") or die(implode(':', $stmt->errorInfo()));
$stmt->execute() or die(implode(':', $stmt->errorInfo()));

$stm = $pdo->prepare("SELECT * FROM productdetails");
$stm->execute();

$data = $stm->fetchAll();

while ($product = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo "<ul>";
    echo "<li>". $product['name'] ."</li>";
        echo "<ul>";
        foreach ($data as $details) {
            if($product['productid'] == $details['productid']) {
                echo "<li>" . $details['size'] . "</li>";
            }
        }
        echo "</ul>";
    echo "</ul>";
}
?>

此代码适用于我的localhost。