Archief - PHP: pagina?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

koebeest

Legacy Member
Kan er mij iemand uitleggen hoe je maakt dat een link index.php?pagina=portfolio is en hoe je de tekst dan kan laten weergeven en hoe ik de link in mijn menu moet zetten. Kortom zou iemand me dat op een goedverstaanbare manier kunnen uitleggen (alles eigenlijk) dank u

NeoNeke

Legacy Member
oké hierover vind je normaal duizenden tut's maar hier komt er dan maar nog één...

Je maakt de generall layout van je webpagina eerst en ziet er bijvoorbeeld als volgt uit.

Code:
<html>
  <head>
    <title> je paginatitel</title>
  </head>
  <body>
    <div id="header">
      <h1>Mijn Webpage</h1>
    </div>
    <div id="menu">
      <ul>
        <li><a href="index.php">index</a></li>
        <li><a href="index.php?p=page1">pagina 1</a></li>
        <li><a href="index.php?p=page2">pagina 2</a></li>
      </ul>
    </div>
    <div id="inhoud">
      [COLOR=DarkOrange]Je eigenlijke inhoud van de pagina staat hier![/COLOR]
    </div>
    <div id="footer">
      Met dank aan de tutorial door NeoN over includes
    </div>
  </body>
</html>

Zoiets dus :)

Merk op dat de links al gemaakt zijn van het type index.php?p=page1. Dit is een manier om een variabele (die dan opgeroepen kan worden in php) mee te geven in de link.

Aangezien alles wat niet oranje is in feite op iedere pagina hetzelfde moet zijn (wil men consitentie bewaren) moet eigenlijk enkel dat stuk iedere keer herschreven worden. Via php gaat dit makkelijk en wel als volgt!

Plaats volgende code in de plaats van de oranje tekst en sla dan dat bestand op als index.php de uitleg van de code volgt
PHP:
<?
if ($_GET['p'] == "page1") {
  include ("page1.php");
} else if ($_GET['p'] == "page2") {
  include ("page2.php");
} else {
  include ("home.php");
}
?>

Oké, wat hebben we nu gedaan?
We roepen de variabele p (van page) op via $_GET['p'] checken of die gelijk is aan iets wat we in onze links gestate hebben (namelijk page1 of page2) indien dit zo is includeren we die pagina!
Als er geen enkele statement correct is, moet de hoofdpagina opgeroepen worden... (dit is ook een soort van back up mocht iemand in de url bijvoorbeeld index.php?p=blabla tikken, dan komt hij ook terecht op de hoofdpagina, die we vinden in home.php.

Het spreekt dus voor zich dat je dan nog drie files moet maken (home.php, page1.php en page2.php) waarin respectievelijk hun data staat.

home.php ziet er dus zo uit: (rekening houdend met eerste voorbeeld

Code:
Je eigenlijke inhoud van de pagina staat hier!

Zo hoef je enkel je pagina's inhoud te stoppen in die files. Een andere file (index.php) gebruik je om de markup language van de rest van de pagina bij te houden. En dan nog een file css file om de design vast te leggen. Zo scheid je op de ideale manier inhoud van design, waar we de dag vandaag naar streven!





OPMERKING
er bestaat ook een omgeerd systeem waarin je de opmaak in aparte files steekt en die iedere maal include in je data-pagina's dit gaat als volgt:

PHP:
<?
include ("header.php");
?>
Je eigenlijke inhoud van de pagina staat hier!
<?
include ("footer.php");
?>

waar header.php dus alle data is boven het oranje en footer.php alle data is beneden het oranje! Links kan je dan makkelijker namen geven en kan je gewoon linken naar bv page1.php die net hetzelfde eruit ziet als hierboven. Ikzelf ben verstokt gebruiker van dit systeem! Beide systemen zijn in feite even goed/slecht

DarkBone

Legacy Member
Gebruik toch beter een switch NeoNeke, een andere methode is om alle toegelaten waarden in een array te steken en dan mbv in_array() te controleren.

NeoNeke

Legacy Member
njah een switch is idd een evengoede oplossing, 't is nu eenmaal dat ik dat al jaren zo doe met if-else statements. Ook is een switch snel een fout geschreven en niet altijd overduidelijk voor de beginner. Even snel nog de code ervan om de tut te vervoledigen :)

PHP:
switch ($_GET['p') {
  case "page1":
    include ("page1.php");
    break;
  case "page2":
    include ("page1.php");
    break;
  default:
    include ("home.php");
    break;
}

belangrijk zijn dus die breaks! indien ze er niet staan dan doet hij gewoon door en zou hij in gevallen waar er cases nog correct zijn die dingen ook doen! (in dit geval in principe niet mogelijk) Door die break wordt de switch gestaakt en checkt hij geen volgende cases of die ook kunnen kloppen.

EDIT: was idd de quotes vergeten rond de argumenten

Dece

Legacy Member
bij default moede logischerwijs nie break-en ;)
en vergeet ook niet u quotes rondom u case argumenten

orez

Legacy Member
DarkBone zei:
Gebruik toch beter een switch NeoNeke, een andere methode is om alle toegelaten waarden in een array te steken en dan mbv in_array() te controleren.

of met een if file_exists werken, zo doe ik het meestal :)

maT'

Legacy Member
ru`orez zei:
of met een if file_exists werken, zo doe ik het meestal :)
Moet je ook mee oppassen, als je er bv een config.inc bestandje geinclude wordt ga je ook niet blij zijn ;)

Zero Grav

Legacy Member
.php achterzetten voor de verwerking.. Moet je zowiezo al doen.

Fr3aK

Legacy Member
PHP:
if (!empty($_GET['pagina'])) {
  $file = $_GET['pagina'].".php";
  if (file_exists($file)) {
    include($file);
  } else {
    include("default.php");
  }
} else {
  include("default.php");
}
Zo doe ik het altijd, dan moet je wel zien dat je de bestanden in je main map hebt staan...

PS: mogelijke fouten worden veroorzaakt door zatheid, ben juist thuis en ben zowa een ontbijt aant maken :)

koebeest

Legacy Member
NeoNeke zei:
oké hierover vind je normaal duizenden tut's maar hier komt er dan maar nog één...

Je maakt de generall layout van je webpagina eerst en ziet er bijvoorbeeld als volgt uit.

Code:
<html>
  <head>
    <title> je paginatitel</title>
  </head>
  <body>
    <div id="header">
      <h1>Mijn Webpage</h1>
    </div>
    <div id="menu">
      <ul>
        <li><a href="index.php">index</a></li>
        <li><a href="index.php?p=page1">pagina 1</a></li>
        <li><a href="index.php?p=page2">pagina 2</a></li>
      </ul>
    </div>
    <div id="inhoud">
      [COLOR=DarkOrange]Je eigenlijke inhoud van de pagina staat hier![/COLOR]
    </div>
    <div id="footer">
      Met dank aan de tutorial door NeoN over includes
    </div>
  </body>
</html>

Zoiets dus :)

Merk op dat de links al gemaakt zijn van het type index.php?p=page1. Dit is een manier om een variabele (die dan opgeroepen kan worden in php) mee te geven in de link.

Aangezien alles wat niet oranje is in feite op iedere pagina hetzelfde moet zijn (wil men consitentie bewaren) moet eigenlijk enkel dat stuk iedere keer herschreven worden. Via php gaat dit makkelijk en wel als volgt!

Plaats volgende code in de plaats van de oranje tekst en sla dan dat bestand op als index.php de uitleg van de code volgt
PHP:
<?
if ($_GET['p'] == "page1") {
  include ("page1.php");
} else if ($_GET['p'] == "page2") {
  include ("page2.php");
} else {
  include ("home.php");
}
?>

Oké, wat hebben we nu gedaan?
We roepen de variabele p (van page) op via $_GET['p'] checken of die gelijk is aan iets wat we in onze links gestate hebben (namelijk page1 of page2) indien dit zo is includeren we die pagina!
Als er geen enkele statement correct is, moet de hoofdpagina opgeroepen worden... (dit is ook een soort van back up mocht iemand in de url bijvoorbeeld index.php?p=blabla tikken, dan komt hij ook terecht op de hoofdpagina, die we vinden in home.php.

Het spreekt dus voor zich dat je dan nog drie files moet maken (home.php, page1.php en page2.php) waarin respectievelijk hun data staat.

home.php ziet er dus zo uit: (rekening houdend met eerste voorbeeld

Code:
Je eigenlijke inhoud van de pagina staat hier!

Zo hoef je enkel je pagina's inhoud te stoppen in die files. Een andere file (index.php) gebruik je om de markup language van de rest van de pagina bij te houden. En dan nog een file css file om de design vast te leggen. Zo scheid je op de ideale manier inhoud van design, waar we de dag vandaag naar streven!





OPMERKING
er bestaat ook een omgeerd systeem waarin je de opmaak in aparte files steekt en die iedere maal include in je data-pagina's dit gaat als volgt:

PHP:
<?
include ("header.php");
?>
Je eigenlijke inhoud van de pagina staat hier!
<?
include ("footer.php");
?>

waar header.php dus alle data is boven het oranje en footer.php alle data is beneden het oranje! Links kan je dan makkelijker namen geven en kan je gewoon linken naar bv page1.php die net hetzelfde eruit ziet als hierboven. Ikzelf ben verstokt gebruiker van dit systeem! Beide systemen zijn in feite even goed/slecht

Eindelijk :) Ik snap het

Kheb ook gevonden dat dit ook kan :

PHP:
<? 

if ($_GET['pagina'] == "msn") { 
  // hier je html ed. 
} 
elseif ($_GET['pagina'] == "portfolio") { 
  // hier je html ed. 
} 
elseif ($_GET['pagina'] == "contact") { 
  // hier je html ed. 
} 
else { 
  // hier je beginpagina 
} 

?>

Merci eh :applause:

Lashknife

Legacy Member
een fout in switch.... :ironic:

da zijn al even achterlijke fouten als ergens een ; of " vergeten eh....

killgore

Legacy Member
Fr3aK zei:
PHP:
if (!empty($_GET['pagina'])) {
  $file = $_GET['pagina'].".php";
  if (file_exists($file)) {
    include($file);
  } else {
    include("default.php");
  }
} else {
  include("default.php");
}
Zo doe ik het altijd, dan moet je wel zien dat je de bestanden in je main map hebt staan...

PS: mogelijke fouten worden veroorzaakt door zatheid, ben juist thuis en ben zowa een ontbijt aant maken :)

kan nog altijd een config.php mee worden opgeslaan (als je config.inc gebruikt en config is een scripted (php) file ben je al compleet achterlijk imho).

Fr3aK

Legacy Member
killgore zei:
kan nog altijd een config.php mee worden opgeslaan (als je config.inc gebruikt en config is een scripted (php) file ben je al compleet achterlijk imho).
Hoe bedoelt ge da ge daar ne config.php mee kunt opslaan?
Ge kunt de config dan includen als ge een beetje wilt "hacken" maar ver geraakte daar ni mee ze.

BTW: Ne switch is te omslachtig imo, als ge een nieuwe pagina wilt bijvoegen moet ge die switch telkens aanvullen...

killgore

Legacy Member
Fr3aK zei:
Hoe bedoelt ge da ge daar ne config.php mee kunt opslaan?
Ge kunt de config dan includen als ge een beetje wilt "hacken" maar ver geraakte daar ni mee ze.

BTW: Ne switch is te omslachtig imo, als ge een nieuwe pagina wilt bijvoegen moet ge die switch telkens aanvullen...
nee, maar proper is het niet, het beste is dat ze enkel de paginas kunnen includen die toegestaan zijn.

ik zou dit doen aan de hand van een array, met als key de naam die jij aan die pagina geeft (in de get-variabele dus) en als value de echte pagina naam).

en dan iets als:

if(file_exists($paginas[$_GET["pagina"]])) ...

(weliswaar met wat meer checkings op je get :p).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan