Avatar billede bx Nybegynder
07. september 2007 - 21:11 Der er 1 kommentar

Kategori liste

Hej.

Jeg har et stykke kode som viser en liste over alle kategorierne i min MYSQL database (jeg bruger PHP5). Med denne kode får jeg udskrevet alle hovedkategorierne og underkategorierne på en gang.

Det tager lang tid at udføre for serveren og der slet ikke brug for at få udskrevet alle kategorierne på én gang.

Jeg ønsker kun at få hovedkategorierne vist samt underkategorie(r) til den hovedkategori man klikker.

---------------------------------
- Eksempel på nuværende output: -
---------------------------------
Tøj
...T-shirts
...Jakker
......Læderjakker
Køkken
...Kopper
...Tallerkner
Software
...Linux
...Windows Vista
------------------
- Ønsket output: -
------------------
Tøj
...T-shirts
...Jakker
......Læderjakker
Køkken
Software


------------------------
- Categories.class.php -
------------------------
<?php
class Categories {
    protected $dbname = 'ss4';
    protected $dbhost = 'localhost';
    protected $dbuser = 'root';
    protected $dbpass = '';
    protected $dbport = '';
    protected $children = 0;
    protected $no_children = array();
   
    function show_categories($parent_id=0,$level=0,$start=0) {
        echo '<ul>';
        $this->build_tree($parent_id,$level,$start);
        echo '</ul>';
    }

    function build_tree($parent_id=0,$level=0,$start=0) {
        $mysqli = mysqli_connect($this->dbhost, $this->dbuser, $this->dbpass, $this->dbname);
        $categories_query = mysqli_query($mysqli, "SELECT * FROM categories WHERE categories_parent = $parent_id");
        while($row = mysqli_fetch_assoc($categories_query)) {
            if ($level > 0) {
                echo '<li class="categories_child">';
                print str_repeat('&nbsp;&nbsp;&nbsp;',$level);
            } else {
                echo '<li class="categories_parent">';
            }
            echo '<a href="productlisting.php?cat_id='.$row[categories_id].'">'.$row[categories_name].'</a>';
            echo '</li>';
          $this->build_tree($row[categories_id],$level+1,$start);
        }
    }
}
?>
Avatar billede jakobdo Ekspert
08. september 2007 - 12:40 #1
Du skal fjerne din if($level > 0) ting, samt : $this->build_tree($row[categories_id],$level+1,$start);

Og den kode skal så føst eksekveres, hvis kategorien er aktiveret.
Jeg håber du har lidt kode skills selv, for kan ikke lige overskue din kode, samt database opbygning nu.
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