Brug evt SQL-kommandoen COUNT, så kan du tælle hvor mange underliggende sider den har. Så hvis en side ingen underliggende sider har, skal du ikke kalde lave nogen <ul>.
function list($parent = 0) {
echo "<ul>";
$q = mysql_query("SELECT a1.*, COUNT(a2.id) n FROM articles a1 LEFT JOIN articles a2 ON (a1.id = a2.parentid) WHERE parentid = $parent GROUP BY a2.parentid;"); while ($d = mysql_fetch_assoc($q)) { echo "<li>".$d["title"]." (".$d["n"]." undersider)</li>"; if ($d["n"]) list($d["id"]); } echo "</ul>";
nåja, $q = mysql_query("SELECT a1.*, COUNT(a2.id) n FROM articles a1 LEFT JOIN articles a2 ON (a1.id = a2.parentid) WHERE a1.parentid = $parent GROUP BY a2.parentid;");
$q = "SELECT a1.*, COUNT(a2.id) n FROM articles a1 LEFT JOIN articles a2 ON (a1.id = a2.parentid) WHERE a1.parentid = $parent GROUP BY a2.parentid;"; $hm = $this->db->query($q); while ($d = $hm->row()) { echo "<li>".$d[link_title]." (".$d[n]." undersider)</li>\n";
</ul> skal være efter while-lykken uanset hvad. Men den stopper nok fordi du bruger samme objekt til begge queries.. Det kan du ikke gøre når det er rekursivt. Det der DB-objekt har aldrig hjulpet noget :-p gør som jeg skrev. Bare skriv det her i første linje af filen: mysql_connect("localhost", "username", "password"); mysql_select_db("databasenavn");
$q = mysql_query("SELECT a1.*, COUNT(a2.id) n FROM articles a1 LEFT JOIN articles a2 ON (a1.id = a2.parentid) WHERE a1.parentid = $parent GROUP BY a2.parentid;"); while ($d = mysql_fetch_assoc($q)) { echo "<li>".$d["link_title"]." (".$d["n"]." undersider)</li>";
Det var så lidt :-) Men jeg ville nok gøre noget ala det her i stedet:
function getGroup($parent = 0) {
$group = array(); $q = mysql_query("SELECT id, title, menuname FROM sites WHERE pid = '$parent' ORDER BY menuname;"); while ($d = mysql_fetch_assoc($q)) $group[] = array($d["title"], $d["menuname"], $d["link"], getGroup($d["id"]));
return $group; }
print_r(getGroup(0));
Så er du fri for først at selecte undersiderne 2 gange. getGroup(0) returnerer altså et array, hvor sidste element i arrayet er et nyt array med undersider i og så derudad. Så hvis der er nul elementer i arrayet er der ingen undersider.
Tror jeg vil prøve med din metode til et andet projekt =)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.