Avatar billede dingkee Nybegynder
14. august 2004 - 16:26 Der er 7 kommentarer og
1 løsning

Vise liste udfra sql (sitemap)

Jeg skal have lavet en liste over alle de sider der er på min hjemmeside, altså en form for sitemap...

Det skal være nogenlunde sådan her:

Overmenu1:
  - Undermenu1
Overmenu2
  - Undermenu2

osv osv... hvis i forstår...

Indtil videre har jeg dette, og det lister det bare i en lang liste:
<?PHP

$sql = "SELECT * FROM sch_kategori";
$result = mysql_query($sql) or die (mysql_error());
while($r = mysql_fetch_array($result)) {
$navn = $r["navn"];
$kat_id = $r["id"];

echo "&nbsp;&nbsp$navn</a><br> ";

}

?>

Hvis det er en undermenu, er der et tal i tabellen under, det tal er svarende til ID på overmenuen

Håber der er nogen der kan hjælpe
Avatar billede dingkee Nybegynder
14. august 2004 - 16:46 #1
Jeg er kommet lidt videre, med dette:

      $sql1 = mysql_query("SELECT * FROM sch_kategori WHERE id > 9 AND under = id");
      while ($r1 = mysql_fetch_array($sql1)) {
      echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;" . $r1[navn] . "</a><br>";
      }
    }

Så nu skal jeg faktisk bare have den til at lave ID og til den forgående overmenu's ID... Hvordan gør jeg det??
Avatar billede prec Nybegynder
14. august 2004 - 18:13 #2
I din sql tabel har du det id der pejer på det overliggende menu punkt, i de øverste punkter sætter du dette til 0.
Herefter laver du en funktion som tager et parameter som vi også bare kalder parent. Denne funktion henter og udskriver menupunkter der har den angivne parent som parent, du kalder så bare funktionen inde i sig selv igen for hver menupunkt hvor parent så udskiftes med det nuværende punkt.
For at lave indrykningen kan du f.eks lave et tal som forøges hver gang den går et skridt ind i "dimensionen" og så kan du skrive en "spacer" af en art det antal gange der nu er angivet.

Håber det er svar nok til at du kan tage det videre
Avatar billede dingkee Nybegynder
14. august 2004 - 18:35 #3
okay, hvordan skriver jeg så det??

har prøvet dette:
$sql1 = mysql_query("SELECT * FROM sch_kategori WHERE id > 9 AND under = parent");

Men det virker ikke... hvadså??
Avatar billede jammerlab Nybegynder
14. august 2004 - 19:13 #4
Taget lige ud af hovedet... kan man ikke bare dette? :)

$query = mysql_query("SELECT * FROM sch_kategori");
while($row=mysql_fetch_array($query)) {

echo "$row[navn]";

$query2 = mysql_query("SELECT * FROM sch_kategori WHERE tal = '$row[id]'");
$row2=mysql_fetch_array($query2)

echo "&nbsp;&nbsp;&nbsp;&nbsp;$row2[navn]";

}
Avatar billede jammerlab Nybegynder
14. august 2004 - 19:13 #5
$query = mysql_query("SELECT * FROM sch_kategori");
while($row=mysql_fetch_array($query)) {

echo "$row[navn]";

$query2 = mysql_query("SELECT * FROM sch_kategori WHERE tal = '$row[id]'");
while($row2=mysql_fetch_array($query2){

echo "&nbsp;&nbsp;&nbsp;&nbsp;$row2[navn]";

}
}
Avatar billede prec Nybegynder
14. august 2004 - 19:28 #6
Den løsning vil kun give en liste i 2 niveauer, den jeg beskrev giver så mange niveauer man vil have.

Jeg er bange for at det er lidt for meget kode til noget jeg skrive her. Så du må altså regne det ud selv, læs den beskrivelse jeg skrev og prøv dig frem, jeg har selv lavet det tidligere, så jeg ved at metoden er rigtig.
Avatar billede dingkee Nybegynder
14. august 2004 - 19:54 #7
jammerlab >> Det du skrev virker helt fint...

Laver du ikke et svar, så får du point??
Avatar billede jammerlab Nybegynder
14. august 2004 - 19:55 #8
jow fint med mig :) men den fungere som prec sagde kun hvis det er 2 levels du skal vise :)
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