【问题标题】:Viewing sizes based on the product ID根据产品 ID 查看尺寸
【发布时间】:2018-02-06 10:04:06
【问题描述】:

我试图弄清楚如何根据产品 ID 显示尺寸的下拉列表。我有一个包含信息的产品 tbl 和一个 productdetails 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();

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

【问题讨论】:

  • 你在product display code有什么问题?
  • 它在下面打印的 Display Shop 代码中运行查询。
  • 尝试将$row = $stmt-&gt;fetch()更改为$row = $stmt-&gt;fetch(PDO::FETCH_ASSOC)
  • 尝试了 (PDO::FETCH_ASSOC) 但我仍然有相同的输出。 :(

标签: php database phpmyadmin


【解决方案1】:

我刚刚在我的本地主机上尝试过。我创建了两个 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>";
}
?>

此代码适用于我的本地主机。

【讨论】:

  • 嗨@MatijaLukic,感谢您的回复。它现在可以工作了:D!
【解决方案2】:

我可以看到两个 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>
} ?>

【讨论】:

  • 感谢您的帮助!
  • 嗨@MatijaLukic 我已经阅读了你的答案,并在我的 Shop.php 主页中找到了以下代码:'code'
    但是,现在页面上没有显示尺寸... :(,您是否有可能在我的代码中发现错误?因为我我不确定我哪里出错了。
猜你喜欢
  • 2014-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-22
  • 2013-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多