webForumDet fria alternativet

Hur länkar jag till en undermapp i php include?

PHP

11 svar · 485 visningar · startad av lillan

Medlem sedan dec. 200475 inlägg
Frågan#1

Jag har gjort så här;

<?php include '../top.php'; ?>

<?php include '../header.php'; ?>

<?php include '../main.php'; ?>

osv.

Men validatorn säger att det är superfel och hittar inte ens min doctype :l
Trodde det var så enkelt att bara skriva så, men misstänker att jag gör fel.

Någon som vill visa?

Medlem sedan apr. 200312 679 inlägg
#2

Så här brukar jag göra mina includes:

require($_SERVER["DOCUMENT_ROOT"]."/includes/top.php");

Då utgår den från rooten på sidan. Alltså www.domän.se. :) Ovanstående kod blir alltså: www.domän.se/includes/top.php

Medlem sedan apr. 20042 994 inlägg
#3

Saknar du inte parenteser?

include('../undermapp/hejhopp.php');
Medlem sedan juli 20033 147 inlägg
#4

Fia skrev:

Saknar du inte parenteser?

include('../undermapp/hejhopp.php');

Det är inget måste. :)

Medlem sedan aug. 20002 975 inlägg
#5

Fia skrev:

Saknar du inte parenteser?

PHP-manualen skrev:

Because include() is a special language construct, parentheses are not needed around its argument.

Det finns alltså inte större anledning att använda parenteser här, än till echo eller print.

Medlem sedan aug. 20002 975 inlägg
#6

lillan skrev:

Men validatorn säger att det är superfel ...

Vilken validator ?

Det ska gå bra att inkludera på det sättet du gör.

Medlem sedan apr. 20042 994 inlägg
#7

Aha, där ser man! Man lär sig nåt varje dag. :)

Medlem sedan dec. 200475 inlägg
#8

Fia skrev:

Saknar du inte parenteser?

include('../undermapp/hejhopp.php');

Alltså ska jag ersätta ex:
<?php include '../top.php'; ?>

till:
<?php include '../blog/top.php'; ?>
Eller hur ska jag skriva?

Medlem sedan aug. 20002 975 inlägg
#9

Det hänger samman med hur skriptet du inkluderar ligger i förhållande tillaktuellt skript.

Tänk bara på att om skript 1 inkluderar skript 2 som i sin tur inkluderar skript 3, så är det i skript 2 sökvägen från skript ett som är den som gäller för inkluderingen.
Ligger dina skript 1-3 då i olika kataloger, då blir det att göra som silfver föreslog.

Medlem sedan dec. 200475 inlägg
#10

Matte skrev:

Det hänger samman med hur skriptet du inkluderar ligger i förhållande tillaktuellt skript.

Tänk bara på att om skript 1 inkluderar skript 2 som i sin tur inkluderar skript 3, så är det i skript 2 sökvägen från skript ett som är den som gäller för inkluderingen.
Ligger dina skript 1-3 då i olika kataloger, då blir det att göra som silfver föreslog.

Åhh my god, vad svårt du skriver :p
menar du alltså att jag kan skriva så som jag redan gjort?
För nu har jag krånglat till det tror jag :r

<?php include '../top.php'; ?>
<?php include '../header.php'; ?>
<?php include '../main.php'; ?>

Medlem sedan aug. 20002 975 inlägg
#11

Om du kör ett skript där dessa inkluderingar finns med, och filerna finns en våning upp, då ska det fungera.

Men om du skulle inkludera detta skript i ett annat skript, då är det det nya skriptets sökvägar som gäller för inkluderingen i detta skript.

När man inkluderar skript som i sin tur inkluderar skript, då gäller att alla skripten ligger i samma katalog (sånär som på det första), eller så får man använda absoluta sökvägar (som GunnarD föreslog).

Medlem sedan nov. 20058 inlägg
#12

Jag brukar använda

dirname(__FILE__)

för att få aktuell katalog där scriptet ligger, följt av filnamnet. Alltså i detta fall:

require(dirname(__FILE__)."/../filnamn.php");
256 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)