include php in div

Status
Niet open voor verdere reacties.

gast0515

Gebruiker
Lid geworden
4 jan 2010
Berichten
134
Hallo,
ik heb een site gebouwd met php pagina's.
Er zijn 50 pagina's.
Rechte kolom (inhoud van een van de <div>) blijft zelfde op alle pagina's.
Daar heb ik een: <?php include("vastepagina.php"); ?> voor gebruikt.
Het werkt prima.

Echter weet ik nu niet hoe ik volgende moet oplossen:
- vastepagina.php heeft onderin nummertjes 1 2 3 4
Je kan er op klikken en er verschijnt andere inhoud in de vaste kolom.
Dus in feite bestaand er 5 pagina's die inhoud moeten zijn van de <div> op alle 50 pagina's.

Hoe kan ik zorgen dat het weer op alle 50 pagina's werkt.
Het is de bedoeling dat de inhoud van de rechte kolom eenmaal aangepast kan worden en op alle 50 pagina's automatisch gelezen wordt.
Kijk bijgaand plaatje. Paarse kolom heeft op alle 50 pagina's zelfde inhoud.

Alvast dank voor alle tips.
gast0515
 

Bijlagen

  • include.jpg
    include.jpg
    47,2 KB · Weergaven: 68
Laatst bewerkt door een moderator:
Dynamisch wisselende kolom-onderdelen in een php-include?

Hoi gast0515,
vijf-kolommen-layout.png

Aha, er zijn dus eigenlijk 5 verschillende rechterkolommen, waartussen je moet kunnen switchen!
De nattigheid is, dat als je van de rechterkolom een php-include hebt gemaakt, je daarbinnen geen links kunt plaatsen naar een andere php-include. Je kunt ze niet laten rouleren als de pagina eenmaal binnen is, want dan kan er niet (serverside) een andere include ingeplakt worden. *)

In de include moeten ze dus alle 5 al zitten.
Hoe? Gewoon naast elkaar, en dan steeds met een bladwijzer naar de goede gaan! :)
  • Principe: de bladwijzer gebruik je in dit geval niet als verticaal anker, maar als horizontaal anker: dat kan ook. De ruimte binnen de rechterkolom is maar zó breed, dat er net één van de 5 onderdelen op past.
Zoals altijd moet je beginnen met een "knutselpagina" waar alles in zit, voordat je er een include van kunt maken. En net als hier is dat het meeste werk!
Hieronder de constructie-werkzaamheden (bekijken met bv. Firefox, Opera of Chrome, die de tijdelijke randjes kunnen laten zien die als "outline" zijn ingevoegd; om niet de maten van de layout aan te tasten, zoals borders doen).

Fase 0
De hoofd-layout van de pagina bepalen, bijvoorbeeld:
Fase 1
De 5 onderdelen links-gefloat inmonteren, voorlopig komen ze dan onder elkaar:
Fase 2
Rechterkolom 5x de breedte van de onderdelen geven, dan komen ze naast elkaar (maar nog niet op de goede plek):
Fase 3
Van de rechterkolom een buitenkolom en een binnenkolom maken, dan past er in elk geval één kolommetje in:
Fase 4
Nu kan met de overflow van de buitenste rechterkolom gemanipuleerd worden, om er 4 onzichtbaar te maken; met links-rechts scrollen kun je er nog wel bij:
Fase 5
Maar links naar bladwijzers doen hetzelfde als scrollen! :cool:
Die kunnen er in (je ziet de links-rechts-scrollbar ook verschuiven):
Fase 6
Nu kan de scrollbar er weer uit, en de rest ook gefatsoeneerd worden. Het knutselen is bijna klaar:
Fase 7
Wat behulpzaam javascript erbij gebruiken om de pagina niet minstens zo hoog te maken als de hoogste van de 5 kolommen (voor disabled javascript is de pagina nog steeds goed te zien, zij het met misschien wat overtollige ruimte onderaan; dat gebeurt in het geval dat de hoogste van de 5 hoger is dan de inhoud van de #content, en je een minder hoge kolom rechts aan hebt staan):
Fase 8
Knippen en plakken! In een handomdraai is nu van de hele rechterkolom met z'n 5 onderdelen gauw een php-include te maken, die op elke pagina ingemonteerd kan worden:
Eventueel kan je de <div id="rightsideCol_1"> t/m <div id="rightsideCol_5"> ook losknippen en er 5 losse php-includes van maken:
  • voor als je vaak in één van de 5 iets moet wijzigen, en niet in de rest;
  • of als je de mogelijkheid wilt hebben om er afhankelijk van de pagina bepaalde wel en bepaalde niet in te zetten.
  • Lijkt het toch alsof er van de ene naar de andere php-include gewipt wordt:
    maar ze zitten gewoon op dezelfde pagina. :)
Zoiets?

Met vriendelijke groet,
CSShunter
_________
*) Dat zou alleen kunnen als je er de Griekse held / brandblusser / voetbalclub AJAX op los laat. ;)
Daarmee kan je op een al binnengekomen pagina een nieuw gedeelte dynamisch inladen. Voorwaarde/nadeel: er is javascript voor nodig, en bezoekers zonder javascript (bv. met voorleesbrowsers) vallen dan buiten de boot.
 
Laatst bewerkt door een moderator:
hoi csshunter,
wat een gepuzzel..... dank je wel.
Ik zou het nooit zelf kunnen bedenken.
Is het de enige mogelijkheid, vraag ik me sowieso af?

Kan ik .php voor ALLE pagia's houden?
Dus standard pagina's en mijn inhoud pagina - als .php?

Je schrijft: Klaar: vijf-kolommen-home.php
Maar later geeft je verwijzing naar een html pagina.
Vandaar....

Het is wel de bedoeling dat alle 5 pagina's op gegeven moment zichtbaar zijn en niet slechts 1.
Welke code moet ik nou tussen de <div> plaatsen, op de standard pagina's?
Als mijn pagina met 5 kolommen 'inhoud' heet, moet ik gewoon deze plaatsen:
<?php include("inhoud.php"); ?>

groet,
gast0515
 
Laatst bewerkt door een moderator:
Hoi gast0515,
Ik zou het nooit zelf kunnen bedenken.
Ja, ik dacht eerst ook dat het niet zou kunnen, maar ik kreeg opeens een vlaag van verstandsverheldering. Ben er nu mee bezig om er patent op aan te vragen. ;)

=====
Is het de enige mogelijkheid, vraag ik me sowieso af?
Behalve het eerder genoemde AJAX kan ik niets anders verzinnen (behalve een <iframe>, maar daar waren we juist zo mooi van af). - Als iemand nog een andere oplossing heeft, moet zij/hij zich hier maar melden: ik ben benieuwd!

=====
Kan ik .php voor ALLE pagina's houden?
Dat kan altijd, want als een .htm pagina omgedoopt wordt tot .php pagina, blijft de html van de pagina gewoon werken. En als er geen <?php ... ?> opdrachten in staan, zal de php (pre-processing) machine op de server niets doen, en regelrecht de aangetroffen html naar de bezoeker sturen.
Baat het niet, dan schaadt het niet! En sterker: een php-pagina heeft voordelen. *)

=====
Je schrijft: Klaar: vijf-kolommen-home.php
Maar later geeft je verwijzing naar een html pagina.
Vandaar....
Ja, het maakt niet uit, welke uitgang je het ge-includeerde fragment geeft. Dat kan .htm zijn, of .php, of .txt of wat je maar wilt. Je kunt zelfs ook zelf een mooie eigen .uitgang verzinnen! Als de verwijzing ernaar maar dezelfde naam heeft. **)
Voorbeeld:
HTML:
<!Doctype html>
<title>mooie fragmentnaam</title>
<?php include("includes/header.fragment"); ?>
Hierboven staat de kop, ingesloten als php-include met de naam "header.fragment"!
</html>
Deze sla ik op als: "mooie-fragmentnaam.php".
Dan maak ik ook een bestandje:
HTML:
<h1>Ik ben de kop</h1>
Dat sla ik op als: "header.fragment" (voor de overzichtelijkheid stop ik altijd alle fragmenten in een directory "includes"; als ook de namen van de fragmenten een beetje duidelijk zijn, kan je snel iets aanpassen).
Met "header.a2010" of "header.koffiemetsuikerenmelkgraag" zou het ook gelukt zijn. :d

=====
Het is wel de bedoeling dat alle 5 pagina's op gegeven moment zichtbaar zijn en niet slechts 1.
Die snap ik niet. In het voorbeeld kan dat gewoon: op elk moment kan elk van de 5 inhoud-kolommen via een klik op het nummertje tevoorschijn komen, op elke pagina waar de rechterkolom in staat via de php-include.

=====
Welke code moet ik nou tussen de <div> plaatsen, op de standard pagina's?
Als mijn pagina met 5 kolommen 'inhoud' heet, moet ik gewoon deze plaatsen:
<?php include("inhoud.php"); ?>
Kleine correctie: de "pagina met 5 kolommen" is geen echte (complete) pagina, maar een html-fragment dat op elke pagina geplaatst wordt.
Als je het fragment van <div id="rightsideOuter"> ... t/m ... </div> "inhoud.php" noemt, dan zet je in de html van een gewone pagina (homepage of andere pagina):
HTML:
...
<body>
   <div id="leftside">
      ...
   </div>

   <div id="content">
      ...
   </div>

   <!-- rechterkolom via php-include -->
       <?php include("includes/inhoud.php"); ?>
   <!-- einde rechterkolom via php-include -->

   <div class="clearL"><!-- ! --></div>

   <!-- eventueel hier nog een #footer-div -->
</body>
</html>
Net zoals in de broncode van het voorbeeld te zien is (waar de include "vijf-kolommen-rechterkolom.htm" heet).
Ga maar eens lekker uitproberen op een paar testpagina's! :)

Met vriendelijke groet,
CSShunter
_________
*) Als je van een .htm pagina een .php pagina maakt met als allereerste regel (nog vóór het Doctype):
HTML:
<?php header("Content-type: text/html; charset=utf-8"); ?>
dan wordt de charset in elk geval goed opgepakt (daarnaast moet de charset ook in het bekende <meta> regeltje opgenomen worden).
Het toevoegen van zo'n http-header met deze php-opdracht is een dringende aanbeveling van het Kwaliteitsmodel Webrichtlijnen. Dat is dus een voordeel van het omzetten van een .htm pagina in een .php pagina.

**) De browser heeft nu eenmaal de opdracht gekregen om alles op een pagina (dus ook de ingevoegde fragmenten) te interpreteren als "text/html". Dat gebeurt dan ook, onafhankelijk van de uitgang.
 
Laatst bewerkt door een moderator:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan