Avatar billede expnet Seniormester
03. marts 2012 - 11:11 Der er 7 kommentarer og
1 løsning

kategorisystem med to tabeller

Hej eksperter.
Jeg er ved at få grå hår af mit kategorisystem.
Jeg prøver at få lavet et træ, hvor den skal liste alle hovedkategorierne, og underkategorierne.
Hvis jeg står på en af hovedkategori, skulle den kun udskrive hovedkategorien, og underkategorierne.
Men jeg kan kun få den til at liste en hovedkategori med underkategorier.
Håber der er en venlig sjæl der kan hjælpe med at bikse noget kode sammen der kan gør det muligt.
Sådan her ser min tabel struktur ud.

TABLE  "category"
category_id
category_name

TABLE "category_xref"
category_parent_id
category_child_id
03. marts 2012 - 11:26 #1
Det er et almindeligt problem, prøv at google på php treview; her er et eksempel på noget kode:

http://stackoverflow.com/questions/333735/how-to-build-a-tree-view-with-php-sql

Men du skal nok have det placeret i en enkel tabel, for eksempel således:

Categories
id name parent
1  hoved NULL
2  venstre 1
3  Højre  1
4  Midte  1
5  venstre1 2
6  venstre2 2
7  venstre1højre 5
8  venstre1venstre 5

o.s.v.

Så kan du også have underkategorier af underkategorier.
Avatar billede expnet Seniormester
03. marts 2012 - 11:33 #2
Det et system jeg har hente, så vil gerne undså at skulle omskrive hele system

så det ville være dejligt hvis det kunne laves med to tabeller

og jeg kan godt lave underkategorier med underkategorier
03. marts 2012 - 11:54 #3
Jamen så vis den kode du har hentet og som ikke virker i det system du har hentet.
Avatar billede expnet Seniormester
03. marts 2012 - 12:23 #4
end til vider gå det fremad med det link du sendt fik idé fra dit link men synes ikke den afslutter og lave html tags rigtigt steder
<?

$q = mysql_query("SELECT c.category_id, cx.category_child_id, cx.category_parent_id, c.category_name
    FROM category AS c, category_xref AS cx
    WHERE c.category_id=cx.category_child_id");
   
    while($cate = mysql_fetch_assoc($q)){
        $cats[] = array('category_id' => $cate['category_id'], 'category_parent_id' => $cate['category_parent_id'], 'category_name' => $cate['category_name']);
    }

function generate_tree_list($array, $parent = 0, $level = 0){

  foreach ($array as $value)
  {
    $has_children=false;

    if ($value['category_parent_id']==$parent)
    {

      if ($has_children==false)
      {
        $has_children=true;
        echo '<ul>'."\n\n";
      }

      echo '<li>'.$value['category_name'].'';

      generate_tree_list($array,$value['category_id'],$level);

      echo '</li>'."\n\n";
    }

    if ($has_children==true) echo '</ul>'."\n\n";

    echo $value['parent_id'];
  }

}
generate_tree_list($cats);
echo "<hr>";

// 11 er for en af mine hovedkategorier, men der vil den så heller ikke udskrive selve hovednavnet først
generate_tree_list($cats,11);
?>
04. marts 2012 - 21:41 #5
Jeg kom fra det igen (jeg har haft for meget om ørene.)  Hvad er status?  Fandt du ud af det?
Avatar billede expnet Seniormester
05. marts 2012 - 01:12 #6
nej, det svære ikke endnu
07. marts 2012 - 21:52 #7
expnet, jeg får ikke gjort noget ved at finde en løsning med brug af to tabeller som du insisterer på.  Og du fik ikke andre indlæg, og eftersom spørgsmålet nu står på side 10 i 'Alle kategorier' er der begrænsede chancer for at nogen finder det og kommer med nye indlæg.  Jeg tror du må konstatere, at du ikke fik hjælp til dette spørgsmål som du formulerede det.  Kan jeg bede dig lukke det igen (med points til dig selv ved at du selv opretter et svar og accepterer det?)  Så er der ryddet op, og så står spørgsmålet ikke længere som åbent i min liste af indlæg.
Avatar billede expnet Seniormester
11. marts 2012 - 15:02 #8
Lukker her
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester