Avatar billede neo-fisk Nybegynder
16. maj 2009 - 20:57 Der er 13 kommentarer og
2 løsninger

php/mysql menu

Jeg mangler et php script, der trækker indhold ud fra en mysql database til styring af en menu efter flg. format.
Der skal kun vises undermenu´er når den pågældende hovedmenu er valgt.

Jeg vil gerne undgå javascript hvis dette kan lade sig gøre, menutekst og links skal trækkes fra mysql.

ex på valgt Hovedmenu 1

Hovedmenu 1
- under 1a
- under 1b
Hovedmenu 2
Hovedmenu 3


ex på valgt Hovedmenu 2:

Hovedmenu 1
Hovedmenu 2
- under 2a
- under 2b
Hovedmenu 3
Avatar billede labisama Nybegynder
16. maj 2009 - 22:04 #1
Hvis du udelukkende vil lave det i PHP, så skal du umiddelbart have fat i noget $_GET.

Antag af ved tryk på Hovedmenu1, så står der dette i din URL:

www.domain.dk/?hovedmenu=1

Og så kan du lave en if-sætning.

Men det er ikke holbart med PHP udelukkende til sådan et formål.
Avatar billede neo-fisk Nybegynder
16. maj 2009 - 22:12 #2
vil du så mene der skal noget javascript ind over?
Avatar billede labisama Nybegynder
16. maj 2009 - 22:14 #3
Avatar billede neo-fisk Nybegynder
16. maj 2009 - 22:20 #4
ja men de forbliver åbne selv om jeg går videre til en anden menu
Avatar billede zuran Nybegynder
17. maj 2009 - 01:18 #5
Det kan faktisk også godt laves i CSS. Måske er CSS ikke beregnet til det, men det kan lade sig gøre, og så validerer det ovenikøbet ifg. W3C.

Prøv at kigge her: http://www.cssplay.co.uk/menus/final_drop.html
Avatar billede neo-fisk Nybegynder
17. maj 2009 - 12:43 #6
bare ikke helt det jeg søger :) dit eksempel lukker menuerne sig igen..

Jeg har besluttet mig for at det skal være i php/mysql som jeg selv skrev..

så jeg mangler faktisk bare lige en ide/noget kode til hvordan den nød lige skal knækkes :)
Avatar billede repox Seniormester
17. maj 2009 - 12:55 #7
Hvis din menu er baseret på tilgængelige sider på dit website, skal du have en struktur i databasen der giver mening:

pageId | parentId | pName | pUrl | osv...

Når du så besøger en side med et parentId der knytter sig til en foregående side, så kan du med nogle lette conditions vise den tilhørende undermenu.

Hvis det nu er et varekatalog, ville det smarteste nok være at benytte dig af $_GET variabler, som zuran er inde på, eller path info, for at undgå for mange fysiske filer, for at vise en menu.

Det er svært at vide hvad du vil, når du ikke har specificeret mere end du har. Muligvis er det du ønsker kun løseligt via en javascript/css menu - zuran har givet dig masser af gode svar.
Avatar billede neo-fisk Nybegynder
17. maj 2009 - 13:17 #8
jeg har en tabel det minder meget om den opbygning :)

men mangler noget kode der kan styre det hvis den har en parent id og den hovedmenu er valgt skal du komme frem under den, men kun hvis den rette hoved menu er valgt..
Avatar billede repox Seniormester
17. maj 2009 - 14:06 #9
Hvad er din tabelopbygning? Har du noget kode du har forsøgt dig med? Det gør det nemmere at komme med et svar der passer til dit behov.
Avatar billede neo-fisk Nybegynder
17. maj 2009 - 14:15 #10
<?php
$prefix = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
               
$result = mysql_query("SELECT menunavn, id FROM sider WHERE submenu = 0")or die("MySql Fejl: " . mysql_error());

while ($over = mysql_fetch_array($result)) {
?>
<b><?php echo "<a href='index.php?id=".$over['id']."&mainid=".$mainid."'>" . $over['menunavn'];></a></b><br>
<?php
if ($id == '3' && $mainid == '3') {
echo '123';
echo '456';
}
}
?>

dette har jeg prøvet indtil videre og det virker delvist.. når jeg trykker på den første menu er undermenuerne skjulte men når jeg trykker på anden menupunkt laver den undermenuer på beege menupunkter
Avatar billede neo-fisk Nybegynder
17. maj 2009 - 14:26 #11
min sql:
id  menunavn  overskrift  indhold  aktiv  submenu  mainid  sortering
Avatar billede repox Seniormester
17. maj 2009 - 14:44 #12
Den kode der burde slet ikke virke...

Uanset, så forsøg dig med at danne menuen først, så alt er visuelt klart. Bagefter, kan du forsøge dig med at skjule dine menupunkter efter behov, for du har ikke overblikket til at tænke det ind imens du implementerer. Når du så har fået vist hele menuen, som den skal se ud, så vend tilbage of få hjælp til den kode du har, så man kan opnå det resultat du ønsker.
Avatar billede neo-fisk Nybegynder
17. maj 2009 - 14:48 #13
hmm prøver lige at paste alt jeg har i den fil, ser ud som om det hele ikke kom med:

<?PHP
include("cms/connect/connect.php");
$id = @$_GET [ 'id' ];
$mainid = @$_GET [ 'mainid' ];
?>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="style/style.css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#CCCCCC" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<table class="Table_01" width="1024" height="768" border="0" cellpadding="0" cellspacing="0" align="center">
    <tr>
        <td colspan="5" background="images/index_01.jpg" width="1024" height="15">
        </td>
    </tr>
    <tr>
        <td rowspan="3" background="images/index_02.jpg" width="36" height="160">
        </td>
        <td colspan="3" background="images/index_03.jpg" width="949" height="119">
        </td>
        <td rowspan="3" background="images/index_04.jpg" width="39" height="160">
        </td>
    </tr>
    <tr>
        <td colspan="3" background="images/index_05.jpg" width="949" height="30" class="menu_top">
        </td>
    </tr>
    <tr>
        <td colspan="3" background="images/index_06.jpg" width="949" height="11">
        </td>
    </tr>
    <tr>
        <td background="images/index_07.jpg" width="36" height="549">
        </td>
        <td background="images/index_08.jpg" width="203" height="549" class="menu_left">
           
            <?php
                $prefix = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
               
                $result = mysql_query("SELECT menunavn, id FROM sider WHERE submenu = 0")or die("MySql Fejl: " . mysql_error());

                while ($over = mysql_fetch_array($result)) {
                ?>
                <b><?php echo "<a href='index.php?id=".$over['id']."&mainid=".$mainid."'>" . $over['menunavn']; ?></a></b><br>
                                           
                <?php
                if ($id == '3' && $mainid == '3') {
                echo '123';
                echo '456';
                //undermenuer
                //$result1 = mysql_query("SELECT menunavn, mainid, id FROM sider WHERE submenu = 1 AND mainid='".$over['id']."'")or die("MySql Fejl: " . mysql_error()); 
                //while ($under = mysql_fetch_array($result1)) { 
                //echo $prefix . "<a href='edit_menu.php?id=".$under['id']."'>" . $under['menunavn']; ?></a><br>
                <?php
                }
                }
               
            ?>
           
           
           
           
        </td>
        <td background="images/index_09.jpg" width="12" height="549">
        </td>
        <td background="images/index_10.jpg" width="734" height="549" class="content">
        <?PHP
        $query = mysql_query("SELECT overskrift, indhold FROM sider WHERE id = $id")or die("MySql Fejl: " . mysql_error());
       
        $row = mysql_fetch_array ( $query );

        $overskrift = $row [ 'overskrift' ];

        $indhold = $row [ 'indhold' ];
       
        echo $overskrift . '<br><br>';
        echo $indhold;
       
        ?>       
        </td>
        <td background="images/index_11.jpg" width="39" height="549">
        </td>
    </tr>
    <tr>
        <td colspan="5" background="images/index_12.jpg" width="1024" height="44">
        </td>
    </tr>
</table>
</body>
</html>
<?PHP mysql_close(); ?>
Avatar billede neo-fisk Nybegynder
17. maj 2009 - 14:52 #14
hvis jeg så skrive http://domæne.dk/index.php?id=3&mainid=3

så udskriver den:

Forside
123456
Hovedmenu2
123456

men det ønskede resultat er:

Forside
Hovedmenu2
123456
håber det hjalp lidt på forståelsen..
Avatar billede neo-fisk Nybegynder
16. juli 2009 - 16:09 #15
stadig inge der kan hjælpe?
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