wat ik mi afvraag en waar ik geen duidelijk antwoord op kan vinden is waar plaats ik in de hele structuur van een website het PHP script. Als ik de website heb met index.html en daar onder de map css en js dan weet ik dat ik de style.css uit de map kan oproepen door: <link rel="stylesheet" href="css/style.css"> zodat deze zijn werk kan doen. Maar als ik nu een map PHP heb met daar in een script.php hoe zorg ik er dan voor dat bij het openen van de site de index.html ook de script.php laat meedraaien? soms zie ik dat men het script ook rechtstreeks plaatst in het HTML bestand, maar waar moet het dan geplaatst worden (op welke positie: header, body enz?)

dank voor de moeite

En zoek even op "serverside vs clientside".
Dan zal je zien dat je verhaal, waar PHP moet komen, geen steek houdt: het komt altijd voor de HTML.
PHP maakt (onder andere) de HTML.
Ik dank jullie voor je reaktie. Mijn verhaal is een vraag en zeker niet iets met de bedoeling om een punt te maken. Waar ik tegenaan loop is dat waar voor jullie PHP gesneden koek is, is het voor mij 1 groot raadsel als het gaat om hoe en waar plaats ik de php. Dus waar vind ik een voorbeeld index.php waar aan ik kan zien hoe een index.php er ui zou moeten zien. Bij .css is me het duidelijk en bij .js lukt dat ook aardig alleen over .php is heel veel informatie te vinden, maar hierbij duikt men midden in de materie, waarbij ik het idee heb dat ik de fundering niet kan zien.

Maar onder de noemer zoekt en gij zult vinden zoeken we rustig verder. Nogmaals dank.
Een index.php bestand heeft geen specifieke eisen. Dus je kan hem zelf opbouwen naar jouw wens. Zolang de HTMLstructuur die je genereert maar klopt.
Allereerst: wat is PHP code? PHP-code is niets meer dan gewone tekst. In beginsel lijkt het veel op JavaScript, het helpt bij het lezen/leren van PHP-code als je enigszins thuis bent in JavaScript.

PHP-code wordt altijd begrensd door een (in ieder geval) een speciale openings-"tag", en meestal wordt de verkorte variant ook toegestaan:

Alles wat tussen deze tags staat:
<?php ... ?>

of
<? ... ?>

wordt geinterpreteerd als PHP-code.

PHP code is een serverside scripting taal. Dit houdt in dat de code aan de webserver-kant wordt uitgevoerd. Dit in tegenstelling tot bijvoorbeeld JavaScript, dat een clientside scripting taal is. JavaScript code wordt in de browser uitgevoerd.

De webserver "weet" doorgaans dat een bestand PHP-code heeft door de extensie van het bestand (.php). Dat is voor de webserver een signaal om het hele bestand te behandelen als PHP-code. Daarbij worden alleen de delen tussen de PHP-tags "uitgevoerd".

Wat een bezoeker ziet van een PHP-pagina is de uitvoer (het resultaat van de uitvoering) van de code.

Heel kort door de bocht zou je een PHP-bestand kunnen zien als een HTML-document, uitgebreid met een extra tag-paar waarbinnen je je PHP-code kunt gebruiken.

Maar PHP-bestanden hoeven niet per se "uitvoer" te hebben, het kunnen ook hulpbestanden zijn die in andere PHP-bestanden worden gebruikt om bepaalde taken te verrichten. Vergelijk dit met het invoegen van JavaScript bestanden in je HTML-document.

En een van de handige voorzieningen van PHP is dat je binnen zo'n PHP-blok een ander bestand kunt invoegen. Dit stelt je in staat om je (uiteindelijke) HTML-document (wat in je browser getoond wordt) dynamisch op te bouwen.

Een heel simpel voorbeeld, stel je hebt het bestand index.php:
<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
</head>

<body>
<p><?php
echo 'Hello World';
?></p>
</body>
</html>


De webserver ziet dat dit een PHP-bestand is, zal de PHP-blokken inspecteren en de code uitvoeren.

Uiteindelijk ziet een eindgebruiker in zijn/haar webbrowser het volgende:
<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
</head>

<body>
<p>Hello World</p>
</body>
</html>


In het uiteindelijke bestand wat de gebruiker ontvangt komt dus helemaal geen PHP-code meer voor.
Dat is wat ik bedoel, Thomas.
Er is dus geen specifieke plek voor PHP, want dat kan overal staan.
Nu is het nogal onzin om <html> door PHP te laten schrijven, want dat is toch statisch.
Hoewel: je kan een content.php prima HTML voor gewone gebruikers laten genereren en een XML met nagenoeg dezelfde informatie voor zoekrobots.
Nu is het nogal onzin om <html> door PHP te laten schrijven, want dat is toch statisch.

HTML is weliswaar statisch, maar de content die je toont hoeft dit niet te zijn. Zo zou je een HTML-tabel dynamisch kunnen opbouwen met PHP + informatie uit je database. Maar ja, het is niet nodig om statische HTML te echo-en inderdaad.

Ook heeft PHP een veel breder toepassingsgebied dan enkel "HTML", met PHP kun je documenten met uiteenlopende Content-Types bouwen (afbeeldingen, JSON, zip-bestanden, XML, noem het maar op).
Ik had het over de <html>-tag zelf (dus echt alleen de eerste regel) ;).
Je kan dit doen:


<html>
 <head>
...


Of dit:

<?php 
echo '<html>';
echo ' </head>';
// meer
?>


Maar dat is dus niet handig. Het kan wel.
Een aantal dingen moet je goed onderscheiden van elkaar.

Jouw voorbeeld:

css/style.css

Dit is een deel van een URL. We noemen dat een relatieve URL De verwijzing heeft een relatie met het bestand waarin de URL geschreven staat.


http://domein.nl/css/style.css

Dit is een volledige URL wat we ook wel een absolute URL noemen. De URL is volledig en staat dus los van het bestand waarin het geschreven is.

Nu PHP.
Php draait op de webserver. Binnen PHP kun je met andere bestanden werken die op dezelfde computer staan.
Je hebt in dit geval helemaal niet met URL's te maken maar met de zogenaamde filesystem. Denk maar gewoon aan je eigen computer, wellicht Windows:

C:\documenten\

Of linux

/home/frank/documents


Om bestanden met PHP te includen kun je wederom een relatieve of een absolute verwijzing geven.
<?php
include 'config/config.php'; // relatief
include '/var/www/domein.nl/public_html/config/config.php'; //absoluut
?>

Indeling PHP bestanden:
Als beginnend php-er kan het wat lastig zijn om te bepalen waar je welke php bestanden moet laten.
Om dit goed door te hebben dien je te beseffen dat er PHP bestanden zijn die bedoeld zijn om een gebruiker op te laten 'landen' zoals index.php, about.php en contact.php.
Daarnaast zijn er PHP bestanden die alleen functionaliteit toevoegen. In deze bestanden vindt je enkel functies, classes of configuratie variabelen. Voorbeelden zijn: functies.php, config.php PHPMailer.class.php. Deze bestanden worden altijd met include(_once) of require(_once) toegevoegd aan de landingspagina.

Je totale indeling zou er dan bijvoorbeeld zo uit kunnen zien:

 |-index.php
 |-about.php
 |-contact.php
 |-[css]
 |-[javascript]
 |-[images]
 |-[includes]
 |     |
 |     |-config.php
 |     |-functies.php
 |     |-PHPMailer.class.php
 |     |-....
 |
 |-....



Reageren