我有三个表countriesproduct_categoriesvats,其中包括以下信息

产品类别
包括两列product_category_codeproduct_category_name_en

国家
php - 使用PDO从MySQL打印矩阵表-LMLPHP

大桶
php - 使用PDO从MySQL打印矩阵表-LMLPHP

一个视图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/

10-08 21:48