include problemen

Status
Niet open voor verdere reacties.

wcverfrisser

Gebruiker
Lid geworden
26 feb 2007
Berichten
20
Hey,

Ik heb in mijn website stukken in templates verdeeld, maar sommige templates wil ik ook 'includen' in pagina's die in een andere map staan. Dit gaat soms fout. Ik gebruik overal include_once en require_once Dit is een voorbeeld:
Map "include" met het bestand "error.php",
map "templates" met het bestand "db_connect.php" en
map "beheer" met het bestand "index.php".
Nu wilt db_connect.php, error.php includen. Het bestand db_connect.php wordt weer geinclude door index.php. Dit geeft een probleem, hij kan error.php niet vinden, dus dan moet ik error.php apart van de voren includen. Wat ik ook heb gedaan is om in db_connect.php de include zo op te schrijven:
require_once(dirname(__FILE__) . '/../include/error.php');
Dit werkte wel op mijn test-server op mijn eigen computer, maar niet op de website.

Mijn vraag is: Is er geen manier om gewoon error.php in db_connect.php te kunnen includen en het bestand db_connect.php dan overal gewoon probleemloos te kunnen includen?
 
Hey,

Maak van dit :
require_once(dirname(__FILE__) . '/../include/error.php');

is dit
require_once(dirname(__FILE__) . '../include/error.php');

suc6
gr Acie
 
Dan zegt ie:
Warning: require_once(C:\xampp\htdocs\so\templates../include/error.php) ...
 
vaag dat is juist het nadeel dat Windows \ en niet / ik zit op dit moment met een probleem met me wamp dus kan het om die reden ook niet testen

ik deed het altijd zo : require_once '../include/error.php'); probeer dat dan eens

ik zal iig ook even opzoek er naar gaan en als ik het gevonden heb dan hoor je het wel

gr Acie
 
Laatst bewerkt:
Ja dat had ik al wel een geprobeerd, maar er zijn ook pagina's die in mappen van administratie staan of in de 'root' map, en die moeten dan weer een andere path opgegeven krijgen, en daar zit mijn probleem dus.

Maar bedankt :p
 
Laatst bewerkt:
zover ik er kan uitmaken heb jij dit :

Root
|
| Index.php
|
|
+ include
| |
| | Error.php
|
|
|
+ Templates
| |
| |db_connect.php
|
|
|
+ Beheer
| |
| | Index.php
|
|
-


Zo heb jij dit en wil je vanuit je Beheer » index.php - db_connect.php includen en dan error.php vanuit je include in db_connect.php includen ?




Dit zet je in db_connect.php
include '../include/error.php';

En dit in je beheer map in de index helemaal boven aan
require_once '../templates/db_connect.php');


dan zou hij het moeten doen en ik zou ook even kijken naar hoofdletters en kleine letters windows heeft daar geen problemen mee maar linux wel. en anders weet ik het ook niet meer.

suc6

gr Acie:thumb:
 
Het Het probleem is dat db_connect.php dan toegevoegd wordt in index.php in root en index.php in beheer. Het toevoegen van db_connect.php doet dan wel goed met deze includes: '../templates/db_connect.php' en 'templates/db_connect.php'
Maar het probleem is dan dat als dit in het bestand db_connect.php zou staan:
require_once('../include/error.php');
Zou ie alleen werken als je de pagina db_connect.php zelf alleen bekijkt, want wat doet ie als je die opent:
- Eerst staat er "..", dus één map omhoog. Nu ben je dan van "templates" naar de root map gegaan.
- Dan staat er "include", dus ga je naar de include map
- Dan staat er "error.php", dus krijg je het bestand.
Maar als je dan het bestand db_connect.php include in een pagina die in een andere map dan templates staat, bijvoorbeeld de root map, dan krijg je dit:
- Eerst staat er "..", dus één map omhoog. Nu ben je dus niet meer in de root map.
- Verder doet ie weer hetzelfde, eerst naar include en dan naar error.php, maar in dit geval bestaat ie niet of is het niet hetzelfde bestand.
Dit is mijn probleem, db_connect.php wordt geinclude in pagina's die allemaal verschillende mappen staan van verschillende levels. Bijvoorbeeld de pagina index.php in [root]/administratie/beheerders/index.php, deze staat ook weer op een hele andere plek.

Het rare is dat als db_connect nu dus een bestand zou includen die in de zelfde map staat als hijzelf, dan heb ik nergens problemen mee, waar ik hem ook neerzet.
 
gebruik je een dynamisch php paginasysteem ? zo nee, waarom gebruik je die niet want dan ben je van alle gezeik verholpen van dat hij bestanden niet wil includen. en heb je die ene template op alle pagina's.

PHP:
                      <?php
				if(!isset($_GET['pagina'])) 
				{ 
					$pagina = "home"; 
				}
				else
				{ 
					$pagina = $_GET['pagina'];
				} 
				if($pagina ==  "Home")
				{
					include "pagina/nieuws.php";
				}
				elseif($pagina == "pagina2")
				{
					include "pagina/pagina2.php";
				}
				else
				{
					include "error/404.php";
				}
			?>

nu roep je je pages gewoon aan d.m.v.

HTML:
< a href="?pagina=pagina2">Pagina2</a>

En als je iets ander wil hebben dan www.mijnwebsite.nl/index.php?pagina=pagina2

dan verander je alle $pagina in iets anders bijv $p en verander je if(!isset($_GET['pagina'])) ook in if(!isset($_GET['p']))

Misschien dat dit voor jou ook makkelijker werkt. en je zal op elke pagina dezelfde template hebben.
hou er wel rekening mee dat je dan alles vanuit je Rootmap Index.php include en desnoods geef je met een login functie mee dat als je admin rechten hebt dat dat daar Beheerscherm tevoorschijn komt in je menu en als je daar op klikt dat je in het mapje beheer komt en dan daarin nog zo'n pagina systeem.


gr Acie

PS: zo heb ik het met alle sites gemaakt met een beheerpaneel erin en geen problemen ermee :thumb::thumb:
 
Laatst bewerkt:
Nouja, ik doe de include map wel in de template map, dan ben ik ook van alle gezeik af :P
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan