[PHP/MySQL] sublink menu maken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik ben bezig met een cms systeem. Nu heb ik het simpel voor elkaar dat alle pagina titels onder elkaar gezet worden (zegmaar als menu) dit dmv een While lus.
Nu heb ik alleen natuurlijk ook subpagina's, die niet in het menu komen, maar zegmaar wel bij een bepaald onderdeel horen.
Die pagina's wil ik graag in een overzicht krijgen (voor de admin) tussengevoegd bij de bijbehorende hoofdpagina.

Zegmaar zoiets:

Home
Info
  Meer info1
  Meer info 2
Bedrijf
  Uitgebreide info
Contact

Dus dat de subpagina's op de goede plaats bij de hoofdpagina's komen te staan.

Ik heb daarvoor 2 tabellen in MySQL, met allebei een kolom die Linknaam heet.

Hier dan mijn script:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php

$opdracht = "SELECT id,linknaam FROM $table_name ORDER BY linknr ASC";
$resultaat = mysql_query ($opdracht);

$opdracht2 = "SELECT id,linknaam,sublinknaam FROM $table_name2 ORDER BY linknr ASC";
$resultaat2 = mysql_query ($opdracht2);


while ($rij = mysql_fetch_array ($resultaat))
{
        $id = $rij["id"];
        $linknaam = $rij["linknaam"];
        
        print ("<b>$linknaam</b><br>");
        
        while ($rij2 = mysql_fetch_array ($resultaat2))
        {
            $id2 = $rij2["id"];
            $linknaam2 = $rij2["linknaam"];
            $sublinknaam2 = $rij2["sublinknaam"];
        
            if ($linknaam == $linknaam2)
            {
                print ("&nbsp;&nbsp; $linknaam2 : $sublinknaam2<br>");
            }
            else {}
        }
            
}   
?>


MAAR, dit werkt niet, hij voegt alleen de eerste subpagina's onder de eerste bijhorende hoofdpagina bij.

Ik krijg dus dit:

Home
Info
  Meer info1
  Meer info 2
Bedrijf
Contact

Ik denk dat het hier mee te maken heeft:
code:
1
<?php if ($linknaam == $linknaam2) ?>

Dat hij hier alleen het eerste record pakt, en daardoor de rest als "niet overeenkomstig" bestempeld.

Weet iemand hier een oplossing voor? graag net zoiets doodsimpels als hierboven, want ik heb mijn vraag al eerder gepost op phpfreakz en daar werd ik niet echt wijzer van het ingewikkelde script dat daar gepost werd.

Acties:
  • 0 Henk 'm!

  • AK47
  • Registratie: Juli 2001
  • Laatst online: 04-05-2024
Mhh...Je probleem is dat PHP niet alle menu'tje die open gevouwen waren "onthoud". Do I have that one right?

Wat je zou kunnen doen steeds (via HTTP_POST_VARS of HTTP_GET_VARS e.d.) alle ID's van alle opgevouwen menu'tje mee te sturen, en dan bij de intialisatie van de pagina de menu'tje laten openvouwen.

Je krijg dan bijv. zoiets: index.php?open=12,20,30
Dit gaat eerst nog niet werken, maar mbv de func. explode naar de komma (',') kun je een array laten maken met alle ID's erin. Mbv een loopje laat je dan alle menu's openvouwen die opengevouwd moeten worden :)

Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou het zo doen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php

$opdracht = "SELECT id,linknaam FROM $table_name ORDER BY linknr ASC";
$resultaat = mysql_query ($opdracht);

while ($rij = mysql_fetch_assoc ($resultaat))
{
        $id = $rij["id"];
        $linknaam = $rij["linknaam"];
        
        print ("<b>$linknaam</b><br>");
        
$opdracht2 = "SELECT id,linknaam,sublinknaam FROM $table_name2 WHERE linknaam='$linknaam' ORDER BY linknr ASC";
$resultaat2 = mysql_query ($opdracht2);

        while ($rij2 = mysql_fetch_assoc ($resultaat2))
        {
            $id2 = $rij2["id"];
            $linknaam2 = $rij2["linknaam"];
            $sublinknaam2 = $rij2["sublinknaam"];
        
            print ("&nbsp;&nbsp; $linknaam2 : $sublinknaam2<br>");
        }
            
}   
?>

Acties:
  • 0 Henk 'm!

  • RolandWitvoet
  • Registratie: Maart 2001
  • Niet online
Je moet regel 7 verplaatsen naar regel 16.

-edit-
dit is bedoeld voor de TS.

De oplossing vam Mister R is nog beter. Veel efficiënter ook (al zal geen kip het merken op een menuutje van 10 items.)

Je zou ook eerst alle hoofitems in een array kunnen zetten en dan 1 keer alle subitems opvragen en die per subitem in het array aan de string plakken en dan het array afbeelden. ik zal even coden...

Je geeft de links in het hoofdmenu wel ID's mee, maar als je er naar verwijst dan doe je dat via de linknaam? verwijs er gewoon naar de ID.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php

$resultaat = mysql_query ("SELECT id,linknaam FROM $table_name ORDER BY linknr ASC");

while ($rij = mysql_fetch_array ($resultaat))
{  $html[$rij["id"]="<b>"+$rij["linknaam"]+"</b><br>";    
}

$resultaat2 = mysql_query ("SELECT id,linkid,sublinknaam FROM $table_name2 ORDER BY linknr ASC");

while ($rij2 = mysql_fetch_array ($resultaat2))
  { $html[$rij2["linkid"]]=$html[$rij2["linkid"]]+""&nbsp;&nbsp;"+$rij2["sublinknaam"]+"<br>";
  }    

for ($i=0; $i<100; $i=$i+1)
{ print $html[$i];
}

?>


Ik hoop dat het duidelijk is, sorry voor mijn slechte PHP, ik spreek normaal Perl 8)

[ Voor 134% gewijzigd door RolandWitvoet op 26-12-2003 13:31 ]

NE2000 3-9 augustus, Elburg Open-air lan-party, 5 jaar alweer! Computers, kamperen, kampvuur, activiteiten, schier-eiland, dropping, tap-eiland, lezingen, workshops, bands, gezelligheid. NE2000, de andere Lanparty


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
GEWELDIG dat script van je, je weet niet hoe blij ik nu ben, ik heb deze versie al eens eerder gehad:

code:
1
$opdracht2 = "SELECT id,linknaam,sublinknaam FROM $table_name2 WHERE $linknaam ORDER BY linknr ASC";


maar zoals ik nu zie was dat net niet goed.

Heej Hele fijne kerstdagen en ik ben weer blij, op naar de visite :D.