Jeg fandt netop Michaels løsning, mens jeg søgte svar, men forstår ikke rigtigt hvorfor det skal gøres sådan som du gør det, når det burde kunne gøres nemmere.
Jeg har allerede prøvet at lave en while inde i en while, men eftersom jeg skal tjekke på om jeg er placeret på en bestemt side, så skal jeg jo både have en while i min if og i min else inde i den første while.
Når jeg har indsat en ekstra while, så ser min kode således ud:
- if($stmt=$mysqli->prepare('SELECT `page_id`, `title`, `parent` FROM `content` WHERE `parent`=0')) {
- $stmt->execute();
- $stmt->bind_result($menu_id, $menu_title, $menu_parent);
- while($stmt->fetch()) {
- if($page_id == $menu_id) {
- echo '<li class="current_page_item"><a href="'.$_SERVER['DOCUMENT_ROOT'].'/index.php?page_id='.$menu_id.'">'.$menu_title.'</a>';
- if($submenu=$mysqli->prepare('SELECT `page_id`, `title` FROM `content` WHERE `parent` > 0')) {
- $submenu->execute();
- $submenu->bind_result($sub_id, $sub_title);
- echo '<ul>';
- while($submenu->fetch()) {
- echo '<li><a href="'.$_SERVER['DOCUMENT_ROOT'].'/index.php?page_id='.$sub_id.'">'.$sub_title.'</a><li>';
- }
- $submenu->close();
- echo '</ul>';
- }
- echo '</li>';
- }
- else {
- echo '<li><a href="'.$_SERVER['DOCUMENT_ROOT'].'/index.php?page_id='.$menu_id.'">'.$menu_title.'</a>';
- if($submenu=$mysqli->prepare('SELECT `page_id`, `title` FROM `content` WHERE `parent` > 0')) {
- $submenu->execute();
- $submenu->bind_result($sub_id, $sub_title);
- echo '<ul>';
- while($submenu->fetch()) {
- echo '<li><a href="'.$_SERVER['DOCUMENT_ROOT'].'/index.php?page_id='.$sub_id.'">'.$sub_title.'</a></li>';
- }
- $submenu->close();
- echo '</ul>';
- }
- echo '</li>';
-
- }
- }
- $stmt->close();
- }
Dog giver dette intet resultat. Men det har med stor sandsynlighed noget med at gøre med at jeg ikke afslutter min første forbindelse, inden jeg starter den næste.
Indlæg senest redigeret d. 27.01.2013 10:23 af Bruger #17072