wollte ich habe 2 TabellenPHP Warenkorb - Kategorien Seite funktioniert nicht wie
Produkte
und Kategorien
(CatParentId 0 ist die übergeordnete Kategorie).
Was ich versuche zu erreichen ist, wenn ein Benutzer auf die übergeordnete Kategorie klickt, sollte es die in dieser Kategorie gelisteten Produkte sowie seine Produkte der untergeordneten Kategorie abrufen und wenn der Benutzer auf eine der untergeordneten Kategorien klickt, sollte dies geschehen rufen Sie nur die Produkte ab, die in der untergeordneten Kategorie aufgeführt sind.
Hier ist der vollständige Code, die ich bisher benutzt haben, aber ohne Erfolg:
<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>
Ich bin mir ziemlich sicher, dass ich einen logischen Fehler, aber ich kann es nicht finden, wo ich es gemacht habe. Bitte hilf mir. Jede Hilfe wird sehr geschätzt.
Update 1:
Ich habe es auf meinem eigenen gelöst. Verwendet INNER JOIN
.
Hier ist der Code - Für die Zukunft: ->
<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>
Aber nach Update 1, ich glaube, ich habe mit anderen Bug/Fehler kommen: ->
Die obigen Abfragen innerhalb Das Update 1 funktioniert einwandfrei, vorausgesetzt, es gibt keine Produkte in der übergeordneten Kategorie, aber es gibt Produkte in der untergeordneten Kategorie. Wenn Produkte in der Elternkategorie (mit Kindkategorie) vorhanden sind, werden die Elternkategorieprodukte nicht angezeigt und nur Kinderkategorieprodukte werden angezeigt.
Ich möchte alle Produkte der übergeordneten Kategorie und auch der untergeordneten Kategorie anzeigen, wenn der Benutzer auf die übergeordnete Kategorie klickt.
Wie behebe ich diesen Bug/Fehler?
bitte mir helfen. Ich versuche das seit 3 Tagen .. –