Avatar billede Morten Professor
26. december 2015 - 17:54 Der er 7 kommentarer

Undermenu mysqli problem

Hej Eksperter.

Jeg har et problem med at få mine undermenu vis ved de enkelte hovedmenuer.
Jeg får kun vis den sidste feks "database" = id=2 har så 2 submid=2 den bliver fint vist. men den anden  id=1 har så 2 submid=1 bliver ikke vist.
Har her min kode:


<?php

echo '<ul>';
ini_set("display_startup_errors", "on");
ini_set("display_errors", "on");
ini_set("html_errors", "false");
error_reporting(-1); // -1 viser alle slags fejl beskeder
ini_set("ignore_repeated_errors", 0);

/* Select et prepared statement */
if ($stmt = $con->prepare('SELECT `id`, `mid`, `submid`, `menu`, `overskrift`, `text`, `datetime`, `forfatter` FROM `tbl_artikel` WHERE mid')) {


    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Bind resultatet */
    $stmt->bind_result($M_id, $M_mid, $M_submid, $M_menu, $M_overskrift, $M_text, $M_datetime, $M_forfatter);

    /* Hent rækker og udskriv data */
    while ($stmt->fetch()) {
    echo '<li><a href=index.php?id='. $M_id .'>'. $M_menu .'</a>';

   
    ;}}
   
    /* Select et prepared statement */
if ($stmt = $con->prepare('SELECT `id`, `mid`, `submid`, `menu`, `overskrift`, `text`, `datetime`, `forfatter` FROM `tbl_artikel` WHERE submid = ?')) {

    /* Bind parametre */
    $stmt->bind_param('i', $submid);

    /* Sæt værdier på parametrene */
    $submid = $M_submid;
   
    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Bind resultatet */
    $stmt->bind_result($submid_id, $submid_mid, $submid_submid, $submid_menu, $submid_overskrift, $submid_text, $submid_datetime, $submid_forfatter);
echo '<ul>';
    /* Hent rækker og udskriv data */
    while ($stmt->fetch()) {
   
    echo '<li><a href=index.php?id='. $submid_id .'>'. $submid_menu .'</a></li>';

   
   
    ;}
    }
    echo '</ul>';
    echo '</li>';
    echo '</ul>';
   
    ?>


Med venlig hilsen
Morten
Avatar billede Morten Professor
26. december 2015 - 17:58 #1
Her er lige dump:


-- Struktur-dump for tabellen `tbl_artikel`
--

CREATE TABLE IF NOT EXISTS `tbl_artikel` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `mid` int(11) NOT NULL,
  `submid` int(11) NOT NULL,
  `meid` int(11) NOT NULL,
  `menu` varchar(255) COLLATE utf8_danish_ci NOT NULL,
  `overskrift` varchar(255) COLLATE utf8_danish_ci NOT NULL,
  `text` text COLLATE utf8_danish_ci NOT NULL,
  `datetime` datetime NOT NULL,
  `forfatter` varchar(255) COLLATE utf8_danish_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci AUTO_INCREMENT=8 ;

--
-- Data dump for tabellen `tbl_artikel`
--

INSERT INTO `tbl_artikel` (`id`, `mid`, `submid`, `meid`, `menu`, `overskrift`, `text`, `datetime`, `forfatter`) VALUES
(1, 1, 0, 0, 'Forside', 'overskrift', 'tekstwewertrwertwert', '0000-00-00 00:00:00', 'Morten'),
(2, 1, 1, 0, 'Test', 'Test', 'Test', '2015-12-21 01:40:00', 'Morten'),
(3, 1, 1, 0, 'Test menu', 'Overskrift', 'Tekst', '0000-00-00 00:00:00', 'Morten'),
(4, 0, 2, 0, 'Testest', 'testest', 'testest', '0000-00-00 00:00:00', 'Testest'),
(5, 0, 2, 0, 'testmenu', 'Test', 'test', '0000-00-00 00:00:00', '');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Avatar billede olsensweb.dk Ekspert
26. december 2015 - 18:51 #2
Avatar billede Morten Professor
26. december 2015 - 22:01 #3
Hej ronols

Det er ikke der den er gal har lige testet uden alt li og ul.
Det er noget i koden, kan bare ikke finde ud af hvor?
Avatar billede olsensweb.dk Ekspert
26. december 2015 - 22:43 #4
FROM `tbl_artikel` WHERE mid')) {

where mid what ???
Avatar billede Morten Professor
26. december 2015 - 23:10 #5
det er fordi mid er topmenuen og de andre er den anden submid som er undermenuerne
jeg kunne have nøjes med at skrive 1 uden foran da det er mid der er top og ikke nødvendig at skrive noget.
Avatar billede Morten Professor
26. december 2015 - 23:20 #6
så tager den bare dem med et tal som jeg feks. har lavet som 1
Avatar billede olsensweb.dk Ekspert
27. december 2015 - 08:15 #7
afprøvede coden i #0, og får dette HTML

<ul>
    <li>
        <a href=index.php?id=1>Forside</a>
        <li>
            <a href=index.php?id=2>Test</a>
            <li>
                <a href=index.php?id=3>Test menu</a>
                <ul>
                    <li>
                        <a href=index.php?id=2>Test</a>
                    </li>
                    <li>
                        <a href=index.php?id=3>Test menu</a>
                    </li>
                </ul>
            </li>
           
        </li> her mangler der et for at være valid HTML
    </li> her mangler der et for at være valid HTML   
   
</ul>
       
er det dette du forvendter ??

der mangler iøvrigt også plinger omkring dine link

hvordan kan et menupunkt være hoved menu og submenu ??

(2, 1, 1, 0, 'Test', 'Test', 'Test', '2015-12-21 01:40:00', 'Morten'),
(3, 1, 1, 0, 'Test menu', 'Overskrift', 'Tekst', '0000-00-00 00:00:00', 'Morten'),


hvilke HTML forsøger du at opnå ??

du kan ikke gøre det som du forsøger med 2 query's

du kunne også kigge på denne
http://stackoverflow.com/questions/4413776/php-mysql-build-tree-menu
skal dog oversættes til mysqli, eller PDO

nb: FROM `tbl_artikel` WHERE mid')) {
er meget dårlig sql stil, det kan godt være det virker i dette tilfælde, men udvider du coden lidt er det ikke sikkert det virker
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

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