आप इस क्वेरी को चला सकते हैं:
SELECT c.id AS cid, c.slug AS cslug, c.name AS cname,
s.id AS sid, s.name AS sname
FROM categories AS c
LEFT JOIN snippets AS s ON s.category = c.id
WHERE c.live=1
ORDER BY c.name, s.name
फिर उचित शीर्षक बनाने के लिए परिणामों के माध्यम से पुनरावृति करें जैसे:
// last category ID
$lastcid = 0;
while ($r = $navQuery->fetch_object ()) {
if ($r->cid != $lastcid) {
// new category
// let's close the last open category (if any)
if ($lastcid)
printf ('</li></ul>');
// save current category
$lastcid = $r->cid;
// display category
printf ('<li><a href="/%s">%s</a>', $r->cslug, $r->cname);
// display first snippet
printf ('<li><a href="/%s/%s">%s</a></li>', $r->cslug, $r->sname, $r->sname);
} else {
// category already processed, just display snippet
// display snippet
printf ('<li><a href="/%s/%s">%s</a></a>', $r->cslug, $r->sname, $r->sname);
}
}
// let's close the last open category (if any)
if ($lastcid)
printf ('</li></ul>');
ध्यान दें कि मैंने printf
. का उपयोग किया है लेकिन आपको इसके बजाय अपने स्वयं के फ़ंक्शन का उपयोग करना चाहिए जो प्रिंटफ के चारों ओर लपेटता है, लेकिन चलता है htmlspecialchars
मापदंडों के माध्यम से (पहले पाठ्यक्रम को छोड़कर)।
अस्वीकरण:मैं जरूरी नहीं कि <ul>
. के इस तरह के उपयोग को प्रोत्साहित करता हूं स.
यह कोड केवल एक क्वेरी के साथ प्राप्त पदानुक्रमित डेटा को संसाधित करने के मूल विचार को दिखाने के लिए यहां है।