Ik denk het ook ja
. Want dit is wat je fout doet:
Je gaat gelijk op de eerste regel al beginnen met "<?php". En dan komt eerst nog een zooitje javas c r i p ts erachteraan. Geen wonder dat PHP de logische parse error geeft "Parse error: parse error on line 2 at .....". Javas c r i p t is namelijk helemaal geen PHP (duh)... Dus herkent PHP het ook niet als geldige code en weet dus niet wat ie moet doen.
Zet daarom altijd pas de <?php als je zeker weet dat het alleen php code betreft binnen dat blok. PHP is immers een HTML embedded (ingesnestelde) scripting language en je bent vrij om zo vaak te switchen tussen html en php. PHP zal het niets uitmaken (snelheid wordt er niet minder op) en voor de gebruiker al helemaal niet. Dus dit zou ook gewoon kunnen:
PHP:
Ik <? echo "ben" ?> bezig met <? echo "ee"?>n website<? echo "!!" ?>
Dit is eigenlijk wel het onhandigste voorbeeld dat je kunt geven maar daarmee wil ik dus zeggen dat je beter vaak dan zelden heen en weer kunt switchen. Dit is voor ons verhaal hier vooral handig voor het formulier: dat kun je het beste weer in html doen aangezien daar toch geen php in voorkomt (op de $PHP_SELF na dan
).
Plaats dus alleen php blokken wanneer dat echt kan en nodig is (ook wel 'Minimale PHP' genoemd). Als je echt wilt dat alles 1 blok PHP is (kan overzichtelijker zijn, soms) moet je alles echo'en. Maar niet met dubbele aanhalingstekens maar maar met een enkele, omdat je soms voor bijv. action="bestand.php" ook dubbele gebruikt en zonder escape (\, dus \") denkt PHP dat de string afgesloten is en verwacht normaliter een ';' als eindteken. Alle tekens die daarna komen en PHP niet herkent als geldig geven een parse error terug. Kijk maar eens:
PHP:
<?php
echo "<form action="bestand.php">;
?>
De color coding laat zien dat de 2e " geïntrepeteerd wordt als sluitingsteken en de 3e weer als openingsteken met als gevolg dat de ';' en de '>' normaal gesproken opgenomen zou worden in de echo. Doen we ditzelfde nu met een enkele, krijgen we geen errors:
PHP:
<?php
echo '<form action="bestand.php">';
?>
Dit komt omdat als je enkele gebruikt als opening hij ook gesloten moet worden met een enkele, en zo ook met een dubbele. In dit voorbeeld reageert hij dus niet op de dubbele bij de action.
Nu zul je zeggen wat ideaal ik ga altijd de enkele gebruiken. Niet doen! Er zit namelijk ook een nadeel aan. Met enkelen kun je namelijk geen inline variabelen gebruiken... 2 Voorbeelden:
PHP:
<?php
//Zal niet werken: Bij enkele worden variabelen niet vervangen
//De output zal gewoon '... $naam' zijn!
echo 'Hoi. Mijn naam is $naam<br>';
//Werkt wel, mits $name eerder al gedefinieerd is en geglobaliseerd
// (Functions only)
echo "Hoi. Mijn naam is $naam<br>";
?>
Zo zie je maar weer dat de enkele niet geschikt zijn als je ook variabelen moet gebruiken. Maar voor simpele html wat je liever ook door php laat doen, is het wel handig aangezien je niet elke " hoeft te escapen
.
Phew.. Heel verhaal