Avatar billede bx Nybegynder
02. oktober 2007 - 17:40 Der er 15 kommentarer og
1 løsning

Kategori liste

Hej.

Jeg leder efter en stump kode der kan lave en kategori liste med underkategorier. Den skulle gerne kun viser underkategorierne for den kategori som der klikkes på.

De kode stumper jeg har rodet med er enten langsomme eller bruger java/AJAX til at gemme kategorier.
Avatar billede jakobdo Ekspert
02. oktober 2007 - 17:44 #1
Den tror jeg du skal forklare lidt mere.
Du skriver gemme?
Snakker vi gemme eller vise kategori liste?
Avatar billede bx Nybegynder
02. oktober 2007 - 19:10 #2
Jeg mener bare vise kategori listen.

Men man skal ikke kunne se underkategorien før man klikker på hovedkategorien.
Avatar billede w13 Novice
02. oktober 2007 - 19:24 #3
Så skal den bare liste kategorierne således:
----------------------------------------------
<script type="text/javascript">
function ToggleShow(elm){
  elm=document.getElementById(elm);
  elm.style.display=elm.style.display=="none"?"inline":"none"
}
</script>

<a href="java script:void(0)" onclick="ToggleShow('Hovedkategori1')">Hovedkategori1</a><br>
  <div id="Hovedkategori1" style="display:none">
  - <a href="linkher.php">Underkategori1</a><br>
  - <a href="linkher.php">Underkategori2</a><br>
  </div>

<a href="java script:void(0)" onclick="ToggleShow('Hovedkategori1')">Hovedkategori2</a><br>
  <div id="Hovedkategori2" style="display:none">
  - <a href="linkher.php">Underkategori1</a><br>
  - <a href="linkher.php">Underkategori2</a><br>
  </div>
Avatar billede w13 Novice
02. oktober 2007 - 19:27 #4
Skal den hente dem fra en database?
Avatar billede w13 Novice
02. oktober 2007 - 19:32 #5
Hov, 2. hovedkategori skal være:

<a href="java script:void(0)" onclick="ToggleShow('Hovedkategori2')">Hovedkategori2</a><br>
  <div id="Hovedkategori2" style="display:none">
  - <a href="linkher.php">Underkategori1</a><br>
  - <a href="linkher.php">Underkategori2</a><br>
  </div>
Avatar billede bx Nybegynder
02. oktober 2007 - 19:51 #6
Ja, det skal være fra en database. Er der er måde at gøre det uden java? Det er okay hvis der ikke er.

Herunder er en kode jeg bruger som er hurtig (jeg kører med PHP5). Men ikke viser/skjuler underkategorierne. Databasen har felterne: catid(INT), parcat(INT), name(VARCHAR 150) i tabellen: tree.

Hvis du har et alternativ er det super hvis jeg kan se det.

<?php
function maketree($rootcatid,$sql,$maxlevel){
// $sql is the sql statement which fetches the data
// you MUST keep this order:
// 1) the category ID, 2) the parent category ID, 3) the name of the category
        $mysqli = mysqli_connect('localhost', 'brugernavn', 'kodeord', 'databasenavn');
        $result = mysqli_query($mysqli,$sql);
                while(list($catid,$parcat,$name)=$row=mysqli_fetch_array($result)){
                $table[$parcat][$catid]=$name;
                $partable[$catid][$parcat]=$name;
                };
        $result=buildparent($rootcatid,$table,$partable)."<br>";
        $result.=makebranch($rootcatid,$table,0,$maxlevel);
        RETURN $result;
}
// this function builds the branches,
// sorting them in alphabetical order
function makebranch($parcat,$table,$level,$maxlevel){
        $list=$table[$parcat];
        asort($list); // here we do the sorting
                while(list($key,$val)=each($list)){
                      // do the indent
                      if ($level=="0"){
                      $output="<img src=./images/se.gif width=12 height=12>";
                      }else{
                      $width=($level+1)*24;
                      $output="<img src=./images/e.gif width=$width height=12>";
                      };
                // the resulting HTML - feel free to change it
                // $level is optional
                $result.= "$output <a href=index.php3?catid=$key>$val</a> ($level)<br>\n";
                      if ((isset($table[$key])) AND (($maxlevel>$level+1) OR ($maxlevel=="0"))){
                      $result.= makebranch($key,$table,$level+1,$maxlevel);
                      };
                };
        RETURN $result;
}
// this function makes the list of the parent categories
// this function is optional
function buildparent($catid,$table,$partable){
        if ($catid!=0){
        $list=$partable[$catid];
        $result=each($list);
        $output="<a href=index.php3?catid=$result[0]>$result[1]</a> / ";
        $output=buildparent($result[0],$table,$partable).$output;
        };
        RETURN $output;
}

    // set the default category
    if (!isset($catid)){
    $catid=0;
    };
    // build and print the tree NOTE: $maxlevel is the maximum level,
    // set to 0 to show all levels
    $maxlevel=0;
    print maketree($catid,"SELECT catid,parcat,name FROM tree order by parcat",$maxlevel);

?>
Avatar billede w13 Novice
02. oktober 2007 - 21:52 #7
Nej, du bliver nødt til at bruge javascript. Ellers skal hele siden opdateres igen, hver gang man vil vise/lukke en underkategori, og det bliver langt mere rodet.
Avatar billede bx Nybegynder
02. oktober 2007 - 22:10 #8
Prøv at tjekke den her: http://myiosoft.com/?1.151.0.0

Problemet er bare at når du laver en refresh i browseren viser den alle underkategorierne.
Avatar billede w13 Novice
02. oktober 2007 - 22:33 #9
Jeg synes personligt, det er enormt irriterende, at den skal loade siden hver gang, man vil åbne en underkategori, og det ta'r en evighed på min computer med den side.
Avatar billede bx Nybegynder
07. oktober 2007 - 13:26 #10
Jeg blev opmærksom på en ting. Når jeg klikker på kategorien går den jo til en prokut list side. Men så husker systemet jo ikke hvilke kategori jeg har været.

Eksempel jeg har klikket:

Hovedkategori1
-- Under katergori1
-- Under katergori2
-- Under katergori3 (f.eks. jeg har klikket her)
Hovedkategori2
Avatar billede w13 Novice
07. oktober 2007 - 13:38 #11
Nej, ellers skulle den overføre en querystring, evt.
Avatar billede w13 Novice
08. april 2008 - 11:58 #12
Lukketid?
Avatar billede bx Nybegynder
08. april 2008 - 12:05 #13
Jep
Avatar billede bx Nybegynder
08. april 2008 - 12:06 #14
Smid et svar :)
Avatar billede w13 Novice
08. april 2008 - 12:07 #15
:)
Avatar billede w13 Novice
08. april 2008 - 12:09 #16
:)
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