problemen met includen van eenzelfde header-file in pagina's met verschillende locaties

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jimmy Godin

Jimmy Godin

16/10/2011 11:09:09
Quote Anchor link
In mijn root van de website heb ik:

home.php
producten.php
contact.php
header.inc.php

De header.inc.php "include" ik bovenaan in elke pagina (home.php, producten.php, contact.php).
De header.inc.php bestaat uit een header met daaronder navigatiemenu. Dit navigatiemenu in de header.inc.php navigeert o.m. naar <a href="home.php> </a>, <a href="producten.php> </a><a href="home.php> </a>

Nu wil ik niet al mijn pagina's in de root zetten, maar producten.php wil ik onderbrengen in een submap producten en gezien producten.php de header.inc.php (die in de root staat) "includes" kom ik in de problemen met mijn verwijzingen naar de url's.

Wat is nu eigenlijk de locatie van de header.inc.php? Is dat zijn werkelijke locatie in de root of verandert die locatie naargelang de locatie van de pagina waarin deze header "ge-include" is?

Wie weet raad?

Bedankkt!
 
PHP hulp

PHP hulp

08/11/2024 16:13:21
 

16/10/2011 11:18:43
Quote Anchor link
Voorbeeld:
Rootmap
- home.php
- contact.php
Submap overige
- producten.php
De includes map
- header.inc.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

    // Includen header.inc.php in home.php of contact.php:
    include_once('includes/header.inc.php');

    // Includen header.inc.php in producten.php:
    include_once('../includes/header.inc.php');

?>

URL
Plaats een volledige url.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
home.php -> http://example.com/home.php
producten.php -> http://example.com/overige/producten.php
Gewijzigd op 16/10/2011 12:51:17 door
 
Jacco Brandt

Jacco Brandt

16/10/2011 11:46:19
Quote Anchor link
include_once('/includes/header.inc.php');
->
include_once('includes/header.inc.php');

/ gaat vanaf de serverroot, niet vanaf het documentroot.
 
Jimmy Godin

Jimmy Godin

16/10/2011 12:00:28
Quote Anchor link
heb alle verwijzingen automatisch laten veranderen met dreamweaver maar het gaat fout:

home.php (code:)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
require_once 'includes/header.inc.php';
?>

<div id="undernavigationwrapper">
<div id="undernavigation">
<div id="undernavigationleft">
</div><!--end undernavigationleft-->
<div id="undernavigationright">
</div><!--end undernavigationright-->
</div><!--end undernavigation-->
</div><!--end undernavigationwrapper-->
<div id="contentwrapper">
<div id="content">
<div id="contentleft">
</div><!--end contentleft-->
<div id="contentmiddle">
</div><!--end contentmiddle-->
<div id="contentright">
</div><!--end contentrigth-->
</div><!--end content-->
</div><!--end contentwrapper-->
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
include 'includes/footer.inc.php';
?>

</body>
</html>



header.inc.php (code:)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
header('Content-Type: text/html; charset=iso-8859-1');
header('Content-Language= nl');
header('Content-Style-Type: text/css');
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jisolutions</title>
<link href="../css/main.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="container">
<div id="headerwrapper">
<div id="header">
header
</div><!--end header-->
</div><!--end headerwrapper-->
<div id="navigationwrapper">
<div id="navigationbar">
<div id="navigationmiddle">
<ul>
<li><a href="../home.php" id="home">Home</a></li>
<li><a href="../websites.php" id="websites">Websites</a></li>
<li><a href="../producten/producten.php" id="producten">Producten</a></li>
<li><a href="../contact.php" id="contact">Contact</a></li>
<li><a href="../nieuws.php" id="nieuws">Nieuws</a></li>
</ul>
</div><!--end navigationmiddle-->
<div id="navigationright"></div><!--end navigationright-->
</div><!--end navigationbar-->
</div><!--end navigationwrapper-->
 
Jacco Brandt

Jacco Brandt

16/10/2011 12:02:13
Quote Anchor link
wát gaat er fout?
 
Jimmy Godin

Jimmy Godin

16/10/2011 12:12:59
Quote Anchor link
ten eerste wordt de main.css niet meer uitgevoerd en ten tweede werkt geen enkele link meer in het navigatiemenu (file not found)

Toevoeging op 16/10/2011 12:20:09:

ik heb iets ontdekt:

als ik in mijn header.inc.php het volgende doe dan werkt het wel:

<link href="css/main.css" rel="stylesheet" type="text/css" />
<li><a href="home.php" id="home">Home</a></li>
<li><a href="websites.php" id="websites">Websites</a></li>
<li><a href="producten/producten.php" id="producten">Producten</a></li>
<li><a href="contact.php" id="contact">Contact</a></li>
<li><a href="nieuws.php" id="nieuws">Nieuws</a></li>

dus dat betekent dat header.inc.php precies de locatie wil aannemen van de pagina waarin het "ge-include" is....
 
Jacco Brandt

Jacco Brandt

16/10/2011 12:51:24
Quote Anchor link
Dat is correct. Dus om het op te lossen kun je ook nog de complete path gebruiken:
/home.php
/css/main.css
etc
 

16/10/2011 12:58:14
Quote Anchor link
Normaal zou je toch zoiets moeten hebben als header.inc.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<!DOCTYPE html>
<html>
<head>

   <title>Paginatitel</title>

   <link rel="stylesheet" type="text/css" href="http://example.com/css/main.css">

</head>

Dit include je dan gewoon zoals hierboven bescreven op het allereerste begin van de pagina.

Dan kom de body met het navigatiemenu (navigatie.inc.php):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
   <ul>
   <li><a href="http://example.com/home.php">Home</a></li>
   <li><a href="http://example.com/producten/producten.php">Producten</a></li>
   <!-- Nog meer links -->
   </ul>

En in home.php ergens waar het menu moet komen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

   // Het navigatiemenu includen
   include_once('includes/navigatie.inc.php');

?>

En in producten.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

   // Het navigatiemenu includen
   include_once('../includes/navigatie.inc.php');

?>

Zo heb ik het al verschillende keren gedaan en dat werkt perfect!
Gewijzigd op 16/10/2011 13:00:39 door
 
Jacco Brandt

Jacco Brandt

16/10/2011 12:59:06
Quote Anchor link
Met een / voor de css/main.css.
 
Jimmy Godin

Jimmy Godin

16/10/2011 13:00:23
Quote Anchor link
nog eens getest en mijn conclusie is inderdaad dat header.inc.php de locatie aanneemt van de pagina waarin je het "include".

Dat betekent dus dat koppelingen naar pagina's of css-files in het bestand header.inc.php zelf, NIET vast mogen zijn, aangezien de locatie van header.inc.php varieert.

Ik vraag mij dus echt af hoe dit op te lossen. Ik kan toch niet alle pagina's van de website in mijn root gaan plaatsen? Meerdere headerfiles aanmaken lijkt me ook maar onefficiënt.

Jimmy

Jimmy
 
Jacco Brandt

Jacco Brandt

16/10/2011 13:02:08
Quote Anchor link
Nogmaals, zet een / voor de links.
<link rel="stylesheet" type="text/css" href="/css/main.css" />
 
Jimmy Godin

Jimmy Godin

16/10/2011 13:19:21
Quote Anchor link
Jaco, je bedoelt die eerste slash (rootfolder) dat werk ook niet, enkel de volledige vaste link werkt:

href="http://localhost/jisolutions/css/main.css"
 
Jacco Brandt

Jacco Brandt

16/10/2011 13:22:03
Quote Anchor link
Oh, jij werkt in een subfolder. In dat geval moet het /jisolutions/css/main.css zijn.
 
Jimmy Godin

Jimmy Godin

16/10/2011 13:30:45
Quote Anchor link
inderdaad stom van mij, ik ging er vanuit dat ik al in mijn root zat...

Ok alles werkt nu, toch weer wat nuttigs geleerd vandaag :)

Bedankt iedereen!

Jimmy
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.