我有三个表countries
,product_categories
和vats
,其中包括以下信息
产品类别
包括两列product_category_code
和product_category_name_en
国家
大桶
一个视图vats_view
包含以下查询
SELECT
countries.country_code,
product_categories.product_category_code,
product_categories.product_category_name_en,
vats.vat,
vats.editedBy,
vats.editedTimestamp
FROM
vats,
countries,
product_categories
WHERE
countries.country_code = vats.country
AND product_categories.product_category_code = vats.product_category
我想基于此信息创建一个HTML矩阵表。在这种情况下,表格看起来像
---------------------------------------------------
| | AL | DE | DK | SE |
---------------------------------------------------
| Category 10 | 14.00 | | | 10.00 |
| Category 20 | 15.00 | | | |
| Category 30 | | | | |
---------------------------------------------------
我已经完成以下代码。我知道这是完全错误的,并且尚无法解决,但我正在寻求有关如何执行此操作的想法。
echo "<table class=\"table table-bordered\"><tr><th></th>";
$sql = $pdo->query("SELECT country_code FROM countries WHERE active = 1 ORDER BY country_code ASC");
while($country = $sql->fetch(PDO::FETCH_ASSOC)) {
echo "<th class=\"text-center\">".$country['country_code']."</th>";
}
echo "</tr>";
$sql = $pdo->query("SELECT * FROM product_categories");
while($vat = $sql->fetch(PDO::FETCH_ASSOC)) {
echo "<tr><td>".$vat['product_category_name_'.$lang]."</td>";
$sqlvats= $pdo->query("SELECT * FROM vats_view WHERE product_category_code = '".$vat['product_category_code']."'");
while($row = $sqlvats->fetch(PDO::FETCH_ASSOC)) {
echo "<td>".$row['vat']."</td>";
}
echo "</tr>";
}
echo "</table>";
任何想法都欢迎。提前致谢。
最佳答案
好的,因此我修复了第二个查询以使用适当的$ vat变量,用准备好的语句替换了第三个查询(这只是一个好习惯),并用if替换了while,以处理空结果
echo "<table class=\"table table-bordered\"><tr><th></th>";
$sql = $pdo->query("SELECT country_code FROM countries WHERE active = 1 ORDER BY country_code ASC");
while($country = $sql->fetch(PDO::FETCH_ASSOC)) {
echo "<th class=\"text-center\">".$country['country_code']."</th>";
}
echo "</tr>";
$vat = $pdo->query("SELECT * FROM product_categories");
while($vat = $sql->fetch(PDO::FETCH_ASSOC)) {
echo "<tr><td>".$vat['product_category_name_'.$lang]."</td>";
$sqlvats = $pdo->prepare("SELECT * FROM vats_view WHERE product_category_code = ?");
$sqlvats->bindParam(1, $vat['product_category_code']);
$sqlvats->execute();
if ($row = $sqlvats->fetch(PDO::FETCH_ASSOC)) {
echo "<td>".$row['vat']."</td>";
} else {
echo "<td></td>";
}
echo "</tr>";
}
echo "</table>";
关于php - 使用PDO从MySQL打印矩阵表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32095406/