このコードを持っていますが、クエリの順序がわかりません
function get_All_Categories(){
//new instance of mysqli
$mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);
//if it doesn't work give an error
if (!$mysqli) {
die('There was a problem connecting to the database.');
}
$queryCats ="SELECT Catid, Catname
FROM ProductCats
ORDER BY Catid";
$querySubCats ="SELECT Subcatname, Parentid
FROM ProductSubCats, ProductCats
WHERE ProductSubCats.Parentid = ProductCats.Catid
ORDER BY Subcatname;";
if ($catResults = $mysqli->query($queryCats)){
if (!$catResults) {
echo 'Could not run query: ' . mysql_error();
exit;
}
else{
$subCatResults = $mysqli->query($querySubCats);
}
while ($rows = $catResults->fetch_assoc()) {
echo '<div class = "categoryCluster">';
echo '<a href="../index.php?Cat='.$rows["Catname"].'">'.$rows["Catname"].'</a>';
echo '<br>';
while($rowsSub = $subCatResults->fetch_assoc()){
echo '<div class="subCategoryCluster">';
echo ' '.'<a href="../index.php?Cat='.$rows["Catname"].'&'.'Subcat='.$rowsSub["Subcatname"].'">'.$rowsSub["Subcatname"].'</a>';
echo '<br>';
echo '</div>';
}
echo '</div>';
}
}
$mysqli->close();
}
この出力を表示します:
Header 1
Subcat 1
Subcat 2
OtherSubcat 1
Header 2
Header 3
Header 4
Header 5
Header 6
しかし、私の問題は、サブキャット1とサブキャット2の親IDが1で、ヘッダー1に準拠しているのに対し、他のサブキャット1の親IDは5で、実際にはヘッダー5に準拠していることです。 。
これが間違っている理由がわかりました。これは、whileループのwhileループが最後に表示されるように命令し、そこに貼り付けているためです。
しかし、次のように表示されるようにこれを作り直す方法がまったくわかりません。
Header 1
Subcat 1
Subcat 2
Header 2
Header 3
Header 4
Header 5
OtherSubcat 1
Header 6
サンプルテーブル:
> ProductSubCats
> Subcatid | Subcatname | Parentid
> 1 | Subcat 1 | 1
> 2 | Subcat 2 | 1
> 3 | Othersubcat 3 | 5
>
>
>
> ProductCats
> Cat id | Catname
> 1 | Header 1
> 2 | Header 2
> 3 | Header 3
> 4 | Header 4
> 5 | Header 5
> 6 | Header 6
ご協力ありがとうございました