Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  9 1262
Hei! Holder på å lære meg litt enkel PHP, og har et spørsmål. Jeg har index.php, meny.php og kontakt.php. Dette bare for å teste. Jeg jobber med å inkludere filer i en annen fil. Index.php inneholder html,css osv og har alle linker. I index.php har jeg inkludert filen meny.php, så menyen kommer opp. Dersom jeg inne i menyen klikker på kontakt.php, er jeg da nødt å legge inn all html og css på ny i kontakt filen, eller kan jeg bare skrive den ønskede informasjonen der? Noen som fatter hva jeg mener?
Prøv da vel.
Hvis jeg skjønner deg rett, kan du f.eks. bruke et include script.

Kode

<?php
function IncludePage($GetParameter)
{
    if (empty($GetParameter))
    {
        require('inc/defaultpage.php'); // Default page.
    }
    else
    {
        if (file_exists('inc/' . $GetParameter . '.php') && (ctype_alpha($GetParameter))) // Checks if the file exist and that the get parameter only contains characters.
        {
            require('inc/' . $GetParameter . '.php'); // The file exist. Include and display it.
        }
        else 
        {
            require('inc/error.php'); // No page with that name. Include an error page.
        }
    }
}
?>
Sist endret av s1gh; 3. oktober 2011 kl. 22:28.
<?php getUserTitle(); ?>
MrMrtn's Avatar
Kort svar: ja.
Jeg vil foreslå at du lagrer css-en i en egen fil kalt style.css, og at du inkluderer den i index.php og kontakt.php ved hjelp av denne kodesnutten:

HTML-kode

<link rel="stylesheet" type="text/css" href="style.css" />
i head-delen av sidene dine.
Sitat av Waver Vis innlegg
Kort svar: ja.
Jeg vil foreslå at du lagrer css-en i en egen fil kalt style.css, og at du inkluderer den i index.php og kontakt.php ved hjelp av denne kodesnutten:

HTML-kode

<link rel="stylesheet" type="text/css" href="style.css" />
i head-delen av sidene dine.
Vis hele sitatet...
Må jo uansett da ha alle div-taggene og slikt i kontakt.php?
du brurde heller lage en "main" div, som du inkluderer hva en du trykker på i meny, som igjen lenker til index.php med en _GET, så an du heller "if'fe" Get'en og inkludere den i "main" div'en. hvis det gir deg noe mening.

Kode

<div>
<?php
if(!isset($_GET['menyvalg']){
include_once("velkommen.php");
}
else
{
   if($_GET['menyvalg'] == "kontakt")
   {
      include_once("kontakt.php");
   }
   elseif($_GET['menyvalg'] == "bilder")
   {
      include_once("bilder.php");
   }
//osv osv
   else
   {
    include_once("WTF.php");
    }
}
?>
</div>
Det er veldig enkelt hvis du bare skal ha noe opp fort å galt..
Sist endret av LetMeBleedPLZ; 3. oktober 2011 kl. 22:41.
Sitat av LetMeBleedPLZ Vis innlegg
du brurde heller lage en "main" div, som du inkluderer hva en du trykker på i meny, som igjen lenker til index.php med en _GET, så an du heller "if'fe" Get'en og inkludere den i "main" div'en. hvis det gir deg noe mening.

Kode

<div>
<?php
if(!isset($_GET['menyvalg']){
include_once("velkommen.php");
}
else
{
   if($_GET['menyvalg'] == "kontakt")
   {
      include_once("kontakt.php");
   }
   elseif($_GET['menyvalg'] == "bilder")
   {
      include_once("bilder.php");
   }
//osv osv
   else
   {
    include_once("WTF.php");
    }
}
?>
</div>
Det er veldig enkelt hvis du bare skal ha noe opp fort å galt..
Vis hele sitatet...
Det sier meg svært lite...
La oss heller begynne helt på bunn her. Jeg vet ikke om du kanskje har lært deg dette allerede, siden det er en uke siden du skrev her sist, men jeg kan jo ta det allikevel.

Benytt $_GET for å hente informasjon fra URL-en. Dette vil si at du angir hvilken fil du ønsker å inkludere ved å legge til ?file=om_meg i URL-en. Helt enkelt vil det si at du gjør slik:

Kode

<?php include($_GET['file'] .'.php'); ?>
Hvis $_GET['file'] er satt til "om_meg" her, vil "om_meg.php" bli inkludert. Du setter $_GET['file'] til "om_meg", eller hva enn du ønsker, ved å legge til nevne ?file=om_meg i URL-en. Hele URL-en vil altså se cirkus slik ut: http://minside.no/index.php?file=om_meg

Det du setter bak ?file=, vil altså være navnet på filen du inkluderer. Du kan like gjerne bruke ?telefon=om_meg, men da må endre $_GET['file'] til $_GET['telefon'].

Test ut dette litt, så du skjønner hvordan det funker.

Neste steg er å legge inn «statements» som sjekker om filen du forsøker å inkludere faktisk finnes. Og kanskje vi bør hindre at folk forsøker å inkludere index-fila di, slik at alt går i en endeløs loop.

Kode

<?php
    if (!isset($_GET['file'])) {
        include('forside.php'); // Hvis ?file= ikke finnes i URL-en inkluderer vi forsiden.
    }
    elseif (!file_exists($_GET['file'] .'.php')) {
        echo 'Siden finnes ikke!'; // Hvis filen ikke kan inkluderes (finnes ikke), sier vi ifra om det.
    }
    elseif ($_GET['file'] == 'index') {
        echo 'Du kan ikke inkludere index-fila, smarting!'; // Selvsagt
    }
    else {
        include($_GET['file'] .'.php');
    }
?>
Du kan jo bruke denne koden som utgangspunkt. Jeg skrev den direkte i tekstboksen her, så jeg har ikke egentlig testet den selv. Det kan være smart å lage litt orden i systemet ved å legge alle filer som skal inkluderes i en egen mappe. Så kan du jo legge inn i «statement» som ikke lar folk benytte "../" i ?file= for å forsøke å inkludere filer utenfor denne mappen. Det er mye man må ta hensyn til, men her må du prøve og feile og feile og feile og feile, så går det til slutt!

Ved å bruke denne koden kan du gjøre nettopp det du ønsker: Kun ha HTML-koden som utgjør designet ditt i index.php. Alle filene du inkluderer behøver kun å innholde tekst. Du kan selvfølge også putte diverse HTML-kode i disse filene, men selve designet bygger du altså opp i index-fila di.
Sist endret av Marlos; 9. oktober 2011 kl. 01:35.
Det dere foreslår her er altså å ha en sentral index-fil som har felles markup OG inkluderer ulikt innhold basert på parametre. Ikke en uvanlig PHP-løsning. Men det er vel heller ikke uvanlig å snu på det og tenke at man har en form for en template-fil som kun inneholder felles markup, og inkluderer denne i de ulike sidene? Da hadde man sluppet å vedlikeholde index-filen hver gang man la til en ny side (med mindre man inkluderer dynamisk), og det hadde vært et bra steg i retning av Model-View-Controller.

Koder ikke PHP lengre, men kanskje noen andre har lyst til å poste en slik løsning?
Sist endret av tormaroe; 9. oktober 2011 kl. 13:43.
tormaroe: fuzzy76 her på forumet har tidligere laget en MVC-implementasjon kalt OneFileFramework i PHP på noen få skarve linjer. Dette kan du finne på http://www.pmedia.no/off/. Kom på dette fra spørsmålet ditt her på slutten. Koder selv også veldig lite PHP i disse dager, og har heller ikke testet implementasjonen - men jeg tipper at han er sikkert (enda) interessert i å få noen tilbakemeldinger.
Sist endret av m0b; 12. oktober 2011 kl. 00:56.