我试图弄清楚如何显示依赖于产品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();
任何帮助将不胜感激!感谢
答案 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。