PHP购物车 - 类别页面不按预期工作

时间:2015-02-13 05:16:07

标签: php mysql shopping-cart cart

我有2张桌子

产品products

和类别
categories
(CatParentId 0是父类别)。

我想要实现的是当用户点击父类别时,它应该获取该类别中列出的产品以及它的子类别产品,如果用户点击任何子类别,它应该获取仅限于儿童类别中列出的产品。

这是我到目前为止使用的完整代码,但没有成功:

<section class="col-lg-9 col-md-9 col-sm-9">
    <?php
    $catId = $catName = $n = "";
    $id = 0;
    require_once 'Classes/class.Validation.php';
    $validate = new Validation();
    if ( isset( $_GET['name'] ) && $_GET['name'] != "" ) {
        $catName = $_GET['name'];
        $u = "SELECT CatId, CatName, CatParentId FROM categories WHERE CatName = '".$catName."'";
        $validate->Query($u);
        if ($validate->NumRows() >= 1) {
            while ($rows = $validate->FetchAllDatas()) {
                $id = $rows['CatId'];
                $n = $rows['CatName'];
                $query = "SELECT
                              c.CatName,
                              p.ProdCode,
                              p.ProdName
                          FROM
                              products p,
                              categories c
                          WHERE
                              c.CatId = p.CatId
                              AND
                              c.CatParentId = '".$id."'";
                $validate->Query($query);
                if ($validate->NumRows() >= 1) {
                    while ($row = $validate->FetchAllDatas()) {
                        // show products here
                    }
                } else {
                    $query = "SELECT
                                  c.CatName,
                                  p.ProdCode,
                                  p.ProdName
                              FROM
                                  products p,
                                  categories c
                              WHERE
                                  c.CatParentId = p.CatId
                                  AND
                                  c.CatId = '".$id."'
                              ";
                    $validate->Query($query);
                    if ($validate->NumRows() >= 1) {
                        while ($row = $validate->FetchAllDatas()) {
                            // show products here
                        }
                    }
                }

            }
        }
    }
    ?>
</section>

我很确定我有一个逻辑错误,但我无法找到它所在的位置。请帮助我。任何帮助将受到高度赞赏。

更新1

我自己解决了这个问题。使用INNER JOIN

以下是代码 - 供将来参考: - &gt;

<section class="col-lg-9 col-md-9 col-sm-9">
    <?php
    $catId = $catName = $n = "";
    $id = 0;
    require_once 'Classes/class.Validation.php';
    $validate = new Validation('benef8w7_ecommerce');
    if ( isset( $_GET['name'] ) && $_GET['name'] != "" ) {
        $catName = $_GET['name'];
        $query = "SELECT
                      p.ProdCode,
                      p.ProdRate,
                      c1.CatId,
                      c1.CatName,
                      c2.CatParentId
                  FROM
                      categories c2
                          INNER JOIN
                              categories c1
                          ON
                              c2.CatId = c1.CatParentId
                                  INNER JOIN
                                      products p
                                  ON
                                      p.CatId = c1.CatId
                  WHERE
                      c2.CatName = '".$catName."'";
        $validate->Query($query);
        if ($validate->NumRows() >= 1) {
            while ($row = $validate->FetchAllDatas()) {
                // show all the products here for both parent and child categories.
            }
        } else {
            $query = "SELECT
                          p.ProdCode,
                          p.ProdName,
                          c.CatId,
                          c.CatParentId,
                          c.CatName
                      FROM
                          products p
                               INNER JOIN
                                   categories c
                               ON
                                   c.CatId = p.CatId
                      WHERE
                          c.CatName = '".$catName."'";
            $validate->Query($query);
            if ($validate->NumRows() >= 1) {
                while ($row = $validate->FetchAllDatas()) {
                    // show products here if there are no child categories.
                }
            }
        }
    }
    ?>
</section>

但是在更新1之后,我想我已经提出了其他错误/错误: - &gt;

如果父类别中没有产品,但子类别中有产品,则更新1中的上述查询工作正常。如果父类别中有产品(具有子类别),则不会显示父类别产品,并且仅显示子类别产品。

如果用户点击父类别,我想显示父类别的所有产品以及子类别的所有产品。

如何解决此错误/错误?

0 个答案:

没有答案