Avatar billede kio_liex Nybegynder
16. januar 2004 - 13:41 Der er 1 kommentar og
1 løsning

funktion der lister indhold fra db

Jeg har en tabel der indeholder flg.:
id, overkat_id, navn

id er det nummer den nu får i tabellen.
overkat_id er nummeret på en evt. overkategori
navn er navnet på kategorien

Denne måde gør det muligt at lave uendelige underkategorier.
Nu er det så jeg skal ha det liste disse kategorier, på flg. måde:

kat1
-underkat1
-underkat2
--underunderkat1
kat2
kat3
-underkat3

osv.

Jeg har lavet en funktion der ikke virker helt...
-------------|FRA INDEX.PHP|------------------
<select name="overkategori" size="10">
<?
$id="0";
$nr="0";
vis_kategorier($id,$nr);   
?>
</select>
-------------|FRA FUNCTIONS.PHP|--------------
function vis_kategorier($id,$nr){       
$sql="select * from kategorier where overkat_id='$id' order by navn asc";

connect_sql();
$resultat=output($sql);
$x =0;
while(isset($resultat[$x])){
extract($resultat[$x]);
?>
<option value="<?echo $id;?>"><?echo $nr;?><?echo $navn;?><?echo $id;?></option>
<?
$tjekker="select * from kategorier where overkat_id='$id'";
       
$tjekker=output($tjekker);

if(isset($tjekker[0])){
$nr++;
vis_kategorier($id,$nr);
}else{
//ved ikke helt hvad skal ske her
}

$x++;
}
disconnect_sql();
}
------------------------------

Kan I hjælpe?
Avatar billede razor Nybegynder
16. januar 2004 - 14:27 #1
Du behøver ikke tilslutte til databasen ved hvert kald til funktionen. Hvad er $nr? Derudover virker din kode meget ustruktureret. Prøv at stille den lidt pænere op så det er lettere at overskue. Kan du bruge http://home.razor.dk/~razor/rekursiv.phps til noget?
Avatar billede kio_liex Nybegynder
16. januar 2004 - 15:32 #2
Så har jeg selv fundet ud af det...


function vis_kategorier($id,$indryk){       
    $sql="select    id,navn from kategorier where overkat_id='$id' order by navn asc";

    $resultat=output($sql);

    $x =0;
    $i =0;
    while(isset($resultat[$x])){
        extract($resultat[$x]);

        if($i <1){
            $i=0;
        }
        while($i < $indryk){
            $indryk_tegn=$indryk_tegn."-";
            $i++;
        }

?>
        <option value="<?echo $id;?>"><?echo $indryk_tegn;?><?echo $navn;?></option>
<?

        $sql_tjek_frem="select id from kategorier where overkat_id='$id'";
        $tjek_frem=output($sql_tjek_frem);
        if(isset($tjek_frem[0])){
            $tjek = $id;
            $indryk++;
            vis_kategorier($id,$indryk);
        }

        if($tjek == $id){
            $indryk--;
        }
       
        $x++;
    }
}
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