23. juli 2005 - 21:33Der er
11 kommentarer og 1 løsning
SQL betingelse - Sub kategorier
Jeg overvejer at lave en kategoriopbygning ud fra følgende MySQL opsætning (tabel)
Kategoriid Stamid Tekst
Stamid = -1 betyder at det er grund-kategorierne. Ellers vil den indeholde Kategoriid for den kategori som er et trin højere oppe end den selv.
Er det muligt, på en måde at få MySQL til at returnere alle de forhenværende kategorier til en udskrevet kategori? Eller skal det gøres i scriptkoden omkring, og så lave en masse kald til MySQL (lyder for mig som en langsom løsning)..
Evt. forslag til en hurtig metode, eller lignende?
Jeg ved ikke om vi er gået lidt forbi hinanden, eller du tænkte at det kunne laves med lidt finesse.. men Altså, jeg vil ikke udskrive alle kategorilevels...
men hvis jeg får vist kategori 34, vil jeg have listet alle de "parent" så der ex. stod: bundkategori - underkategori1 - underkatgori 2 - kategori34 som en slags kategoristi.. altså en slags GET_PARENT_STI AS sti
wicez... jeg har intet problem med at lave en funktion der gentages indtil -1 findes.. men tænkte løsningen måtte være lidt langsom, hvis man nu skal liste 30 tilfældige kategoriers "sti"
Arne.. som jeg forstår din metode, så skal jeg skrive en komplet sti i en anden database (så kunne den jo ligeså godt være i samme database)... og grunden til, at jeg ikke vil det, er at jeg så kan flytte en kategori fra et sted til et andet, blot ved at ændre parent..
mit alternativ er selvfølgelig php... hvis nogle andre skulle ønske og vide hvordan det kan gøres er her et eksempel (ikke testet): function hentsti($id) { $sql_qyery = mysql_query("SELECT * FROM tabel WHERE id='" .$id. "'"); $sql_array mysql_fetch_array($sql_qyery); if ($sql_array["parent"] == -1) return $sql_array["text"]. " "; else return hentsti($sql_array["parent"]). " - " .$sql_array["text"]; } men tror stadig den er lidt langsom
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.