Avatar billede curtain Nybegynder
01. marts 2004 - 21:18 Der er 6 kommentarer

Besværlig include metode

Hej

Jeg har en masse sider, hvorpå jeg includer andre sider.
Jeg har det samme design til alle mine sider, som ser således ud:

<?php
session_start();
?>

<html>
<head>
<title>SITES</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>
<body>

<div id="loginright">

<?php
include("login/fake.php");
?>

</div>
<div id="titel">
<h2><div class="hoved">SITES</div></h2>
</div>

<div id="indhold">

<!-- Her inkulderes hver enkel php side -->

</div>

<?php
include("includes/leftmenu.html");
?>

</body>
</html>


Så skal jeg hver gang jeg skal have vist et phph sctipt, inkludere den inden for #indhold id'en. Det er meget besværligt, eftersom at der til et enkelt script, hvor der er en formular, som brugeren skal udfylde og et script til at vise formularen med, skal laves to sider, af den ovenstående, hvor jeg inkluder en forskellig på hver af dem, og det bliver mange sider når hele min side er færdig.
Er det ikke muligt at jeg på en eller anden måde, laver et design jeg kan inklude på PHP siderne, i stedet for at jeg skal inklude hvert php script i oventsående html side.
Avatar billede jakoba Nybegynder
01. marts 2004 - 21:29 #1
du kan fx benytte en urlparameter
<a href="index.php?side=o">til forsiden (intro)</a><br>
<a href="index.php?side=1">til side 1 (om koalabjørne)</a><br>
<a href="index.php?side=2">til side 2 (om eiffeltårnet)</a><br>

du henter så url-parameteren via $_GET

<?php
session_start();
?>

<html>
<head>
<title>SITES</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>
<body>
<div id="loginright">
<?php
include("login/fake.php");
?>
</div>
<div id="titel">
<h2><div class="hoved">SITES</div></h2>
</div>

<div id="indhold">
<?
if ( isset( $_GET['side'] ) ) {
    $side = $_GET['side'];
} else {
    $side = 0;      // defaukt til folk blot skriver "index.php" uden parameter
}
switch ( $side ) {
    case 0:  include( "dinforside.txt" );
            break;
    case 1:  include( "koalasiden.txt" );
            break;
    // osv osv alle dine sider med hver deres nummer
    default echo "Der blev angivet et sidenummer som ikke findes.";
}
?>
</div>
<?php
include("includes/leftmenu.html");
?>
</body>
</html>

på den måde behøver du kun een enkelt fil der hedder index.php, og den side vbiser alle de andre sider altefter hvilket sidenummer du giver den.

mvh JakobA
Avatar billede 4us.dk Nybegynder
02. marts 2004 - 13:59 #2
JakobA:
Hvis man har en side med en masse indhold, er det så den eneste/smarteste måde at bruge?

Hvad med
if ($_GET['vis'] == "nyheder") {
  echo "Hej du er på  nyhedssiden osv. osv.";
} elseif ($_GET['vis'] == "projekter") {
  echo "Du er på projekt siden... hvad så?";
}

og er der andre?


Det er mere, hvis jeg skulle lave en side, vil jeg gerne vide hvilke metoder som man evt. kunne bruge, og hvilken en som måske vil være mest korrekt.
Avatar billede curtain Nybegynder
02. marts 2004 - 15:28 #3
Har lige nogle spørgsmål til første post:

1) Hvad nu hvis jeg har et link, på den side som jeg includer, som skal linke til en side der skal includes på index.php siden, ligesom der gøres i ovenstående eksempel, med Koalabjørn og eiffiltårn linket?

2) Hvorfor skriver du følg:

default echo "Der blev angivet et sidenummer som ikke findes.";

3) Hvordan kommer adressen / URL'en til at se ud, når der bare includes en ny side, og brugeren ikke decideret bliver sendt til en ny side?

4) Og til sidst, er den metode 4us.dk bruger, ligeså god som den JakobA bruger?

Håber der er nogle der kan besvare mine spørgsmål.
Avatar billede jakoba Nybegynder
02. marts 2004 - 17:21 #4
for at tage det bagfra:
4) et forsøg på at kikke på http://www.4us.dk/ giver "403 Forbidden ..." så jeg kan ikke sige om det de gør er bedre eller værre.

3) adresselinienen ville være "index.php?side=<nr>" hvor <nr> er det eneste der ændrer sig når man 'skifter side'.

2) I en switch-sætning markerer default det alternativ at ingen af de nævnte case værdier var korrekt.
Alle de sidenumre der er en side til står som et
    case <nr>: include( "side<nr>.txt" );
                  break;
led i switch sætningen. men (se punkt 4 ovenfor) der er intet der forhindrer brugeren i st ændre sin adresselinie til "index.php?side=987654321" og trykke retur. så mange sider er der nok ikke.

1) så skal du kende nummeret på den side du vil linke til (fx 14) og lave dit link som
  <a href="index.php?side=14"

tidligere post:
  Eller du kan kvitte de der numre og bruge navne istedet for: "nyheder", "projekter", osv. Det er en mere informativ mapning (også for brugeren der kikker på sin adresselinie hvor der nu står "index.php?vis=nyheder"). Så det ville nok være en go ide.
  Om du gør det med mange if-sætninger eller en enkelt switch-sætning er ret ligegyldigt.

mvh JakobA
Avatar billede 4us.dk Nybegynder
02. marts 2004 - 21:34 #5
Tak JakobA, ville bare lige bekræftes at jeg ikke var helt på afveje, fordi jeg bruger eks. vis=nyheder i stedet for vis=34, vis=34345 osv. (synes det er forvirrende for både bruger og mig selv ;)

min side, 4us.dk er der ikke noget på... derfor du ikke kan se noget ;)
Avatar billede curtain Nybegynder
07. marts 2004 - 12:35 #6
Tror du misforstår spørgsmål #4. 4us.dk er navnet på ham der også postede en kommentar, og han brugte følg metode:

if ($_GET['vis'] == "nyheder") {
  echo "Hej du er på  nyhedssiden osv. osv.";
} elseif ($_GET['vis'] == "projekter") {
  echo "Du er på projekt siden... hvad så?";
}

Ville egentlig bare høre om den også var ok.
Tak for svaret i øvrigt. ( ligger du et svar )?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester