Sai*_*nce 5 php mysql shopping-cart cart
我有2张桌子
制品
和类别

(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>
Run Code Online (Sandbox Code Playgroud)
我很确定我有一个逻辑错误,但我找不到它在哪里.请帮助我.任何帮助将受到高度赞赏.
更新1:
我自己解决了这个问题.用过INNER JOIN.
这是代码 - 供将来参考: - >
<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>
Run Code Online (Sandbox Code Playgroud)
但是在Update 1之后,我想我已经提出了其他错误/错误: - >
如果父类别中没有产品但子类别中有产品,则更新1内的上述查询工作正常.如果父类别中有产品(具有子类别),则不显示父类别产品,并且仅显示子类别产品.
如果用户单击父类别,我想显示父类别的所有产品以及子类别的所有产品.
如何解决此错误/错误?
| 归档时间: |
|
| 查看次数: |
287 次 |
| 最近记录: |