Avatar billede discotk Nybegynder
16. december 2009 - 16:45 Der er 9 kommentarer og
1 løsning

Hovedmenu og undermenu i while

Hej allesammen!

Sidder og bakser med en menu hvor der skal komme et hovedpunkt (hovedpunk 1) og dernæst skal alle underpunkterne (underpunkt 1.1, 1.2, 1.3, 1.4) der er tilknyttet hovedpunktet (hovedpunkt 1) være osv....

et lille eksempel.

-Hovedpunkt 1
.Underpunkt 1.1
.Underpunkt 1.2
.Underpunkt 1.3
.Underpunkt 1.4

-Hovedpunkt 2
.Underpunkt 2.1
.Underpunkt 2.2
.Underpunkt 2.3
.Underpunkt 2.4... osv

---------------------------------------
Har ikke noget problem med at få hovedsiderne eller undersiderne frem hver for sig, men de skal inder under hinanden :)

Her er koden og hvor jeg er gået i stå :S  håber i kan hjælpe mig...

Der er 2 variabler der skal være lig hinanden

$row_rsSubpages['mainid'] og $row_rsMainpages['id']

------------------KODEN----------------------------


mysql_select_db($database_cms, $cms);
$query_rsMainpages = "SELECT * FROM sideindhold WHERE mainid = 0";
$rsMainpages = mysql_query($query_rsMainpages, $cms) or die(mysql_error());
$row_rsMainpages = mysql_fetch_assoc($rsMainpages);
$totalRows_rsMainpages = mysql_num_rows($rsMainpages);

mysql_select_db($database_cms, $cms);
$query_rsSubpages = "SELECT * FROM sideindhold";
$rsSubpages = mysql_query($query_rsSubpages, $cms) or die(mysql_error());
$row_rsSubpages = mysql_fetch_assoc($rsSubpages);
$totalRows_rsSubpages = mysql_num_rows($rsSubpages);
?>

<?php do { ?>
  <?php echo $row_rsMainpages['navn']; ?><br />
  <?php if ($row_rsSubpages['mainid'] == $row_rsMainpages['id']) { ?> <?php echo $row_rsSubpages['navn']; ?><br /><br />
  <?php } while ($row_rsMainpages = mysql_fetch_assoc($rsMainpages)); ?>
Avatar billede jakobdo Ekspert
16. december 2009 - 21:39 #1
Du kunne jo lave det sådan her:

SELECT * FROM menu WHERE main_id = 0

Løb løkken igennem...
while(....){
udskriv menu punkt...
lav ny sql, som finder undermenuer...
løb undermenuer igennem og udskriv dem...
}

Det vil dog give dårlig performance, og jeg kan bedre lide at trække alt ud og smide det i et array og så løbe det igennem efterfølgende.
Men det er jo nok smag og behag.
Avatar billede discotk Nybegynder
16. december 2009 - 21:52 #2
jeg er kommet frem til dette, men virker kun på den første :S

<?php do { ?>
<b><?php echo $row_rsMainpages['navn']; ?> <?php echo $row_rsMainpages['id'] ?></b>
<br />
  <?php
while($row_rsSubpages = mysql_fetch_assoc($rsSubpages))
  {
  if ($row_rsMainpages['id'] == $row_rsSubpages['mainid'])
  echo "" . $row_rsSubpages['navn'] . " " . $row_rsSubpages['id'] . "<br />";
  }
  ?>
<br />
  <?php } while ($row_rsMainpages = mysql_fetch_assoc($rsMainpages)); ?>
Avatar billede discotk Nybegynder
16. december 2009 - 22:12 #3
men er skam frisk på at lære noget nyt, hvordan kan det gøres med array i forhold til det jeg har?
Avatar billede jakobdo Ekspert
16. december 2009 - 22:14 #4
Prøv denne kode:

mysql_select_db($database_cms, $cms);
$query_rsMainpages = "SELECT * FROM sideindhold WHERE mainid = 0";
$rsMainpages = mysql_query($query_rsMainpages, $cms) or die(mysql_error());
while($row_rsMainpages = mysql_fetch_assoc($rsMainpages)){
  echo $row_rsMainpages['navn'] . '<br />';
  $query_rsSubpages = "SELECT * FROM sideindhold WHERE mainid = $row_rsMainpages['id']";
  while ($row_rsMainpages = mysql_fetch_assoc($rsMainpages)){
    echo $row_rsSubpages['navn'] . '<br />';
  }
}
Avatar billede discotk Nybegynder
16. december 2009 - 22:30 #5
får:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in...

denne lijne:

$query_rsSubpages = "SELECT * FROM sideindhold WHERE mainid = $row_rsMainpages['id']";
Avatar billede discotk Nybegynder
17. december 2009 - 10:28 #6
Fandt endelig en løsning i nat :) Her er resultatet til andre der skulle være ved at gå amok og sindssyge fordi de ikke kan få det til at virke :D

<div id="sitetree" class="menuheader expandable">Sider</div>
<ul class="categoryitems">
<?php
    $query_rsMainpages = mysql_query("SELECT * FROM sideindhold WHERE mainid = 0");
        while ($navi = mysql_fetch_array($query_rsMainpages)) {
    ?>
        <li><a id="sub-folder" class="subexpandable"><?php echo "$navi[navn]"; ?></a>
    <ul class="subcategoryitems">
                <?php if ($menu_id = $navi['id']) { $navi_query2 = mysql_query("SELECT id, navn, mainid FROM sideindhold WHERE mainid='$menu_id'");
                        while ($navi2 = mysql_fetch_array($navi_query2)) { ?>

                        <li><a id="sub-page_white" href="index.php?page=_esp&id=<?php echo "$navi2[id]"; ?>"><?php echo "$navi2[navn]"; ?></a></li>
                <?php }}?>
    </ul>

    <?php } ?>
</li>
Avatar billede discotk Nybegynder
17. december 2009 - 11:09 #7
Lukker :)
Avatar billede jakobdo Ekspert
17. december 2009 - 13:27 #8
Fordi ?
Hvad blev din løsning ?
Avatar billede discotk Nybegynder
17. december 2009 - 16:00 #9
jakobo, se kommentar #6

:) der er min løsning som skrevet
Avatar billede jakobdo Ekspert
17. december 2009 - 19:07 #10
Tja, det kan du da have ret i.
Min kode er skrevet i hovedet kun.
Jeg kan ikke teste den live på dit system og jeg synes nu stadig din kode lugter lidt af "teknikken" fra mit eksempel.
Men hvis du mener du selv har løst dit problem helt alene, så er det da ok du selv lægger svar og tager dine point igen.
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