Vraag & Antwoord

Webprogrammeren & scripting

php include menu gaat mis op pagina in andere map[opgelost]

9 antwoorden
  • Ik zit met t probleem dat mijn menu (php include) wel werkt op alle pagina's in de map waar menu.php staat. maar bij een pagina die in een andere map staat, gaat dit dus mis. Omdat de link simpelweg index.php is, en niet ../index.php Is hier een oplossing voor? of moet ik nu per map een menu include gaan maken?
  • Volgens mij moet includen ook met een absoluut pad lukken. Dus ipv [code:1:ab08569462]include('../menu.php');[/code:1:ab08569462] doe je bijvoorbeeld [code:1:ab08569462]include('/includes/menu.php');[/code:1:ab08569462]
  • [quote:d9dbe2cb10="Gooly"]Volgens mij moet includen ook met een absoluut pad lukken. Dus ipv [code:1:d9dbe2cb10]include('../menu.php');[/code:1:d9dbe2cb10] doe je bijvoorbeeld [code:1:d9dbe2cb10]include('/includes/menu.php');[/code:1:d9dbe2cb10][/quote:d9dbe2cb10] Post is inmiddels aangepast, dat probleem is er niet meer, zat een typfout in de pagina ;) (post al aangepast voor jij postte) gaat er nu dus om dat de pagina die als include wordt weergegeven een menu is, en dit menu werkt enkel op de pagina's die in dezelfde map als het menu staan. Anders gebeurt er dit: root/map1/index.php terwijl dit eigenlijk zou moeten gebeuren: root/index.php Hoe krijg ik dat voor elkaar bij een menu die bij elke pagina opnieuw als include wordt weergegeven?
  • In het geval dat absolute paden niet werken (absolute paden kun je ook als links in je menu gebruiken) dan kun je het root path definieren in je bron bestand en die in je include (je menu) gebruiken. Dus bijvoorbeeld: [b:81fac60880]root/pagina.php[/b:81fac60880] [code:1:81fac60880]$root_path = '';[/code:1:81fac60880] [b:81fac60880]root/map/pagina.php[/b:81fac60880] [code:1:81fac60880]$root_path = '../';[/code:1:81fac60880] en dan in [b:81fac60880]menu.php[/b:81fac60880] [code:1:81fac60880]$menuitem = "<li><a href='" . $root_path . "link.html'>tekst</a></li>[/code:1:81fac60880]
  • ik begrijp m niet helemaal. Absoluut pad zou eventueel kunnen werken. Echter hoe doe ik dat? Ik heb een hoofdmap (de webhosting zelf) met daarin een paar mappen met pagina's die hetzelfde menu moeten dragen. Ik heb de website echter nog niet online staan. Dus het websiteadres ervoor plakken is niet echt logisch. ik snap t niet goed hoe ik er een absolute link van moet maken. Ik begrijp dat t kan werken, maar niet hoe het er zou moeten staan. Probleem ligt er misschien in dat de huidige situatie iets anders in elkaar zit: localhost/site/submap/pagina1.php in de online opstelling zal het op deze manier zijn: site/submap/pagina1.php Online zal het denk ik wel werken met een simpele / voor de link te zetten. Nu werkt dat niet. Ik wil echter zowel nu als straks een werkende oplossing voor alle pagina's. Heb ik hiervoor de laatst gegeven php code nodig dan? of werkt dat in dit geval ook niet?
  • [quote:d48db4c8ce="The_Ultimate"] localhost/site/submap/pagina1.php in de online opstelling zal het op deze manier zijn: site/submap/pagina1.php Online zal het denk ik wel werken met een simpele / voor de link te zetten. Nu werkt dat niet. [/quote:d48db4c8ce]Ik snap eigenlijk niet waarom dat niet zou werken. [quote:d48db4c8ce="The_Ultimate"] Heb ik hiervoor de laatst gegeven php code nodig dan? of werkt dat in dit geval ook niet?[/quote:d48db4c8ce]In mijn vorige post werk je met relatieve urls, dus dat moet hoe dan ook werken.
  • Ik zet mijn includes vaak in een directory met de toepasselijke naam 'includes' bij elkaar, meestal direct in de root van de website waar ook index.php staat. includen gaat dan met [code:1:cdc944abf8]include ("/includes/menu.php");[/code:1:cdc944abf8] en als dat niet werkt zou je misschien kunnen proberen om het pad naar de map includes in een constante te zetten en zo includen [code:1:cdc944abf8]define("INCLUDES", $_SERVER['DOCUMENT_ROOT']."/includes");[/code:1:cdc944abf8] en dan includen met [code:1:cdc944abf8]include(INCLUDES/menu.php);[/code:1:cdc944abf8] Maar dat laatst lijkt me een beetje overkill, want met die slash werkt het altijd prima bij mij.
  • dus zegmaar de include pagina ook in een eigen map zetten. Het gaat hier enkel om 1 include. Het menu dus. En dat werkt alleen op de pagina's die in dezelfde map staan als de include. De include zelf werkt dus wel gewoon. Enkel de links erin niet. edit: Heb net de include in een andere map geplaatst. Vooralsnog lijkt het te werken door te linken naar item3.php dus zonder puntjes of slashes. Ik ga even alle pagina's voorzien van include, en dan kijken of het dan nog steeds werkt. Edit2: Include nu werkend ook op pagina's in een submap. Maar dan klopt de link dus weer niet in de include. Dit betekend dat de link naar de include wel iets anders is als op de hoofdpagina, maar dat is nog niet zo erg. dit is wat hij zou moeten doen: hoofdmap/link1.php wat hij doet op een pagina die in een submap staat is dit: hoofdmap/submap/link1.php En die pagina bestaat dus niet. Of moet ik dan een 2e include maken met de links vanuit een pagina in de submap (ook omdat deze include link al afwijkt van de normale pagina's) Lijkt mij persoonlijk de simpelste oplossing, maar dat betekend bij menu-aanpassing wel 2x werk ipv 1x. En daarmee is het hele idee achter het gebruik van de include nogal vervaagd.
  • Ondertussen weer wat verder op internet rondgezocht, maar ik kom er nog steeds niet uit. Om het even iets eenvoudiger en duidelijker weer te geven: menu.php bestaat hieruit: [code:1:a8cc607977]<li><a href="pagina1.php" >pagina1</a></li>[/code:1:a8cc607977] Bij een pagina in de hoofdmap staat de include zo: [code:1:a8cc607977] include("includes/menu.php");[/code:1:a8cc607977] Bij een pagina in een submap staat de include zo: [code:1:a8cc607977] include("../includes/menu.php");[/code:1:a8cc607977] Dit werkt. Klik ik op een van de linkjes in menu.php bij een pagina in de hoofdmap krijg ik dit: pagina.php Wil ik dit echter bij een pagina uit een submap doen. krijg ik dus dit: /submap/pagina.php De link in menu.php klopt dus wel voor pagina's in de hoofdmap, maar niet voor de pagina's in de submap. Nu vond ik dit: [code:1:a8cc607977]echo $_SERVER['HTTP_HOST'];[/code:1:a8cc607977] Die geeft dit: localhost/pagina.php Doel is dit: localhost/hoofdmap/pagina.php En in online mode dit: hoofdmap(server)/pagina.php Dus online werkt deze code waarschijnlijk wel. Maar nu, in de ontwikkelingsfase niet. Is dit op te lossen of moet ik voorlopig in de ontwikkelingsfase met 2 menu.php werken of zonder menu? Met die laatste code gaat het dus ook fout in de pagina's die in de hoofdmap staan.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.