PHP en MySQLeen goed team

Schrijfwijzer ; parse the error

Schrijfwijzer ; parse the error

PHP is een script taal.
En zoals elke taal heeft deze een eigen grammatika.
Een grammatika waar je je erg precies aan houden moet.
Het volgende stuk wil enkele valkuilen wegnemen.


Doe je dat niet of heb je een fout gemaakt dan krijg je de beruchte parse error fout melding.

Parse error: parse error, expecting `','' or `';'' in fout_melding.php on line 5

Veroorzaakt door het volgende script :

<?
// Gemaakt voor fout meldingen
// De eerste regel mist de ; aan het eind
echo "Dit is een eerste regel"
echo "Dit is een tweede regel";
?>



Er zijn bekende valkuilen.
De meest in het oog springende worden hieronder vermeld.
De eerste regel van PHP is dat elk script begint met : <?
en eindigt met : ?>
Een andere regel van PHP is dat elke opdrachtregel afgesloten wordt met een : ;
Eventueel commentaar wordt aan het begin van de regel aangegeven door : //
Tekst wordt meestal weergegeven door het echo commando : echo "Tekst";
Hierbij dien je de tekst tussen dubbele aanhalingstekens te zetten : "" .

Stel je hebt het volgende script :

<?
echo "<table border="1" width="100%" bgcolor="#ffff80">";
echo "<tr>";
echo "<td>Cel a1</td>";
echo "<td>Cel a2</td>";
echo "</tr>";
echo "<tr>";
echo "<td>Cel b1</td>";
echo "<td>Cel b2</td>";
echo "</tr>";
echo "</table>";
?>


Dit zal zeker problemen geven, daar dubbele aanhalingstekens gezien worden als het einde van het echo commando.
Om dit te vermijden en toch de dubbele aanhalingstekens binnen de PHP syntax te kunnen gebruiken, wordt van het volgende gebruik gemaakt.
Alle dubbele aanhalingstekens binnen de tekst zelf worden voorzien van een : \

Het correcte script gaat er dan als volgt uitzien :
Let met name op de eerste regel.

<?
echo "<table border=\"1\" width=\"100%\" bgcolor=\"#ffff80\">";
echo "<tr>";
echo "<td>Cel a1</td>";
echo "<td>Cel a2</td>";
echo "</tr>";
echo "<tr>";
echo "<td>Cel b1</td>";
echo "<td>Cel b2</td>";
echo "</tr>";
echo "</table>";
?>


Een volgend item is de leesbaarheid.
Stel je hebt het laatste script gebruikt en je kijkt naar de bron.
Daar wordt je niet vrolijk van.
Alles staat achter elkaar.
Niet geheel leesbaar te noemen.
Technisch gesproken is het correct HTML maar leestechnisch gesproken een chaos.
Ook daar is wat voor gevonden.
Elke leesbare regel wordt afgesloten met een : \n .

Het leesbare script gaat er dan als volgt uitzien :

<?
echo "<table border=\"1\" width=\"100%\" bgcolor=\"#ffff80\">\n";
echo "<tr>\n";
echo "<td>Cel a1</td>\n";
echo "<td>Cel a2</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td>Cel b1</td>\n";
echo "<td>Cel b2</td>\n";
echo "</tr>\n";
echo "</table>\n";
?>


Er is echter nog een manier.
Deze heeft een aantal beperkingen.
Eerst bovenstaande tabel vernieuwd geschreven.

<?
// tabel nieuwe stijl
// let op volgende regel
echo <<<tabel_01
<table border="1" width="100%" bgcolor="#ffff80">
<tr>
<td>Cel a1</td>
<td>Cel a2</td>
</tr>
<tr>
<td>Cel b1</td>
<td>Cel b2</td>
</tr>
</table>
tabel_01;
// let op vorige regel (namen moeten gelijk zijn : tabel_01 )
?>



PHP commando's mogen hier niet in voor komen.
De laatste regels geschreven met het commentaar voorafgaand aan de opdracht zal een ander effect hebben.
Dus :

</table>
// let op vorige regel (namen moeten gelijk zijn : tabel_01 )
tabel_01;
?>


zal niet goed werken.

Één van de weinige zaken wat wel mag, is het gebruik van variabelen.
Variabelen zijn in het volgende geval uitkomsten van een vraag welke aan een database is gesteld, en waar het antwoord ervan door middel van varaiabelen wordt weergegeven.

Kijk naar volgende script :

<?
// tabel nieuwe stijl
// variabelen worden eerste toegekend
$naam = "Ubel Jan van Wijhe";
$mail = "info@vanwijhecons.nl";

echo <<<tabel_01
<table border="1" width="100%" bgcolor="#ffff80">
<tr>
<td>Naam</td>
<td>$naam;</td>
</tr>
<tr>
<td>E-mail</td>
<td>$mail;</td>
</tr>
</table>
tabel_01;
// let op vorige regel (namen moeten gelijk zijn : tabel_01 )
?>



Ik hoop dat dit stuk nieuwe mogelijkheden schept.

Veel programmeer plezier ermee.


Tot ziens,

Ubel Jan van Wijhe
van Wijhe Consultancy