MySQLテーブルを使用してWebサイトにブレッドクラムを追加しようとしていますが、現在問題が発生しています。
'includes'という名前のテーブルを作成しました。このテーブルには、ページのカテゴリ、ページ、サブページ、タイトル、および参照(url)に関する情報が格納されています。カテゴリ、ページ、およびサブページはすべて、ユーザーがいるページから渡されるphpパラメーターです。
私のテーブルは次のようにレイアウトされています。
|----------------------------------------------------------------|
| ID | Category | Page | Subpage | Title | Ref |
|----------------------------------------------------------------|
| 0 | | | | Home | ... |
| 1 | Software | | | Software | ... |
| 2 | Software | Desktop | | Desktop Software | ... |
| 3 | Software | Mobile | | Mobile Software | ... |
| 4 | Software | Desktop | Blah | Blah Blah | ... |
| ...
|----------------------------------------------------------------|
私がやろうとしているのは、パンくずリストに必要なステップだけを家に戻すクエリを作成することです。
つまり、ユーザーが「example.com/software/desktop/blah」を使用している場合、クエリは行0、1、2、および4を返します。または、/ software / mobileを使用している場合は、行のみを返します。 0、1、および3。
私の現在の試みは次のようなものでした:
SELECT * FROM `includes` WHERE
`category` IS NULL AND `page` IS NULL AND `subpage` IS NULL OR
`category`='$category' AND `page` IS NULL AND `subpage` IS NULL OR
`category`='$category' AND `page`='$page' AND `subpage` IS NULL OR
`category`='$category' AND `page`='$page' AND `subpage`='$subpage'
これは機能しないだけでなく、必要以上に複雑に見えます。
私はおそらくこれを複雑にしすぎているか、あるいはまったく間違った方法を実行している可能性があります。それが私がここに目を向けた理由です。
誰かがこれに対する可能な解決策を持っていますか?より複雑なクエリを検討する必要がありますか?(確かに、SQLは私の得意分野ではありません)または、新しいSQLテーブル、あるいはまったく異なるメソッドを検討する必要がありますか?