Webmaster Hub - Format normal - Les publications

[niveau : débutant]

Mon premier programme en PHP

A la découverte d’un langage facile d’accès et performant

30 août 2003

par Cariboo

Les publications de Webmaster Hub
http://www.webmaster-hub.com/publication/Mon-premier-programme-en-PHP.html

Ca y’est : vous avez décidé de changer vos pages HTML statiques en pages dynamiques. Il faut donc que vous mettiez les mains dans le cambouis, et que vous programmiez un script en PHP. Ne soyez pas intimidés, vous risquez d’être surpris par la vitesse à laquelle un développeur débutant peut prendre en main ce langage.

Comment créer un script php ?

Un script php n’est qu’un fichier texte, qui contient des instructions en langage php et/ou en langage html. Pour que le serveur Apache reconnaisse le fichier texte, le nom du fichier script doit contenir une extension qui indique qu’il s’agit d’un fichier php. En général, cette extension est .php, mais selon la configuration de votre hébergement, cela pourra être ".php3" ou ".php4" [1].

L’extension devenue la plus répandue depuis la version 4 est ".php".

A quoi ressemble le code d’un script php ?

Voici deux exemples de code en php [2], qui génèrent exactement la même page HTML, qui affiche la date indiquée par l’horloge du serveur web.

<html>
<head>
</head>
<body>
<?php
echo "Voici la date indiqu&eacutee par le serveur web :";
$ladate = getdate();
$mois = $ladate['month'];
$mjour = $ladate['mday'];
$annee = $ladate['year'];
echo "$mjour/$mois/$annee";
?>
</body>
</html>

Ce code présente la manière la plus simple pour créer du code php : il s’agit d’une page HTML classique, au sein de laquelle on ajoute une portion de code PHP. L’interpréteur PHP (le "parser" à l’origine des "parse errors" qui vont vous devenir vite familières), n’interprète que le code compris entre les balise " <?php et "?> "[[Il existe quatre couples de balises possibles pour délimiter une zone de code php. " <?php...?> " " <script language='php'>... </script> " "<%...%>" " <?...?> ".
seules les deux premières sont toujours reconnues, quelle que soit la configuration du serveur. Donc il est conseillé d’utiliser <?php plutôt que <? (alors que cette dernière balise est sans doute la plus utilisée). 
_ La balise <?php est obligatoire si vous utilisez le XML.
_ La balise <script language='php'devient indispensable dès que l'on touche les XSLT (en XML), pour éviter les ambiguités et les erreurs de parsing.]]. Tout ce qui est en dehors de ces balises, est considéré comme du HTML, et directement reproduit sans modification dans la page générée par le serveur web.

Le code généré (celui qui s'
affiche en regardant la source dans votre browserressemble donc à cela :

<
div class="base64" title='PGRpdiBzdHlsZT0ndGV4dC1hbGlnbjogbGVmdDsnIGNsYXNzPSdzcGlwX2NvZGUnIGRpcj0nbHRyJz48Y29kZT4mbHQ7aHRtbCZndDs8YnIgLz4NCiZsdDtoZWFkJmd0OzxiciAvPg0KJmx0Oy9oZWFkJmd0OzxiciAvPg0KJmx0O2JvZHkmZ3Q7PGJyIC8+DQpWb2ljaSBsYSBkYXRlIGluZGlxdSZhbXA7ZWFjdXRlZSBwYXIgbGUgc2VydmV1ciB3ZWIgOjMwLzA4LzIwMDM8YnIgLz4NCiZsdDsvYm9keSZndDs8YnIgLz4NCiZsdDsvaHRtbCZndDs8L2NvZGU+PC9kaXY+'></div>



La zone de code php a disparuet a été remplacée par le code HTML généré par celui-ci la phrase et la date.

Une petite variante :
<
div class="base64" title='PGRpdiBzdHlsZT0ndGV4dC1hbGlnbjogbGVmdDsnIGNsYXNzPSdzcGlwX2NvZGUnIGRpcj0nbHRyJz48Y29kZT4mbHQ7P3BocDxiciAvPg0KZWNobyAmcXVvdDsmbHQ7aHRtbCZndDsmcXVvdDs7PGJyIC8+DQplY2hvICZxdW90OyZsdDtib2R5Jmd0OyZxdW90Ozs8YnIgLz4NCmVjaG8gJnF1b3Q7Vm9pY2kgbGEgZGF0ZSBpbmRpcXUmYW1wO2VhY3V0ZWUgcGFyIGxlIHNlcnZldXIgd2ViIDomcXVvdDs7PGJyIC8+DQokbGFkYXRlID0gZ2V0ZGF0ZSgpOzxiciAvPg0KJG1vaXMgPSAkbGFkYXRlWydtb250aCddOzxiciAvPg0KJG1qb3VyID0gJGxhZGF0ZVsnbWRheSddOzxiciAvPg0KJGFubmVlID0gJGxhZGF0ZVsneWVhciddOzxiciAvPg0KZWNobyAmcXVvdDskbWpvdXIvJG1vaXMvJGFubmVlJnF1b3Q7OzxiciAvPg0KZWNobyAmcXVvdDsmbHQ7L2JvZHkmZ3Q7JnF1b3Q7OzxiciAvPg0KZWNobyAmcXVvdDsmbHQ7L2h0bWwmZ3Q7JnF1b3Q7OzxiciAvPg0KPyZndDs8L2NvZGU+PC9kaXY+'></div>



Dans cette variantetout le script est rédigé en PHPet toutes les balises HTML sont générées par le code PHPLe premier script est plus clairmais il devient par fois plus simple de générér tout une zone de HTML en phpdès lors que le HTML statique doit être sans arrêt combiné avec des éléments dynamiques.

Une deuxième variante :
<
div class="base64" title='PGRpdiBzdHlsZT0ndGV4dC1hbGlnbjogbGVmdDsnIGNsYXNzPSdzcGlwX2NvZGUnIGRpcj0nbHRyJz48Y29kZT4mbHQ7P3BocDxiciAvPg0KJGxhZGF0ZSA9IGdldGRhdGUoKTs8YnIgLz4NCiRtb2lzID0gJGxhZGF0ZVsnbW9udGgnXTs8YnIgLz4NCiRtam91ciA9ICRsYWRhdGVbJ21kYXknXTs8YnIgLz4NCiRhbm5lZSA9ICRsYWRhdGVbJ3llYXInXTs8YnIgLz4NCj8mZ3Q7PGJyIC8+DQombHQ7aHRtbCZndDs8YnIgLz4NCiZsdDtib2R5Jmd0OzxiciAvPg0KVm9pY2kgbGEgZGF0ZSBpbmRpcXUmYW1wO2VhY3V0ZWUgcGFyIGxlIHNlcnZldXIgd2ViIDombHQ7P3BocCBlY2hvICZxdW90OyRtam91ci8kbW9pcy8kYW5uZWUmcXVvdDs7PyZndDs8YnIgLz4NCiZsdDsvYm9keSZndDs8YnIgLz4NCiZsdDsvaHRtbCZndDs8L2NvZGU+PC9kaXY+'></div>



<
UL>
{{
Remarque :}} sur cette deuxième varianteil faut penser à placer un espace entre la balise <?php et la première instructionSinon on obtient une erreur de syntaxe "parse error at line xxx"Si on place l'instruction sur la ligne suivante, inutile d'ajouter un espace.
</
UL>
 
{{{
Le séparateur d'instructions : point-virgule}}}

Vous avez sans doute remarqué sur les exemples que les lignes de code se terminent par un point virgule.

Ce point-virgule est très important (on le retrouve dans la syntaxe du C et du Perl) car il joue le rôle de séparateur d'
instructionsIl indique au "parser" à quel endroit s'achève un groupe de mots clés, cet ensemble de mots clés constituant une instruction. Et ceci, indépendamment des sauts de ligne...

<ul><div class="base64" title='
PGRpdiBzdHlsZT0ndGV4dC1hbGlnbjogbGVmdDsnIGNsYXNzPSdzcGlwX2NvZGUnIGRpcj0nbHRyJz48Y29kZT5lY2hvICZxdW90O2JvbmpvdXImcXVvdDs7PC9jb2RlPjwvZGl2Pg=='></div>

</ul>

est aussi valide que :

<ul><div class="base64" title='
PGRpdiBzdHlsZT0ndGV4dC1hbGlnbjogbGVmdDsnIGNsYXNzPSdzcGlwX2NvZGUnIGRpcj0nbHRyJz48Y29kZT5lY2hvIDxiciAvPg0KJnF1b3Q7Ym9uam91ciZxdW90Ozs8L2NvZGU+PC9kaXY+'></div>

</ul>

<table class='
spip'><tr class='row_odd'><td>
{{Avec quel outil écrire ses scripts PHP ?}}

<P class='
notes'>L'idéal est d'utiliser un éditeur HTML qui soit capable de reconnaître la syntaxe du PHP. La "coloration syntaxique" permet notamment de détecter facilement les parenthèses mal fermées, les quotes oubliées, les fonctions mal orthographiées. [Editplus->http://www.editplus.com] ou [Context->http://fixedsys.com/context/] ou encore [Ultraedit->http://www.ultraedit.com] sont de bons exemples de ce style d'éditeur mais il y'en a bien d'autres.
On peut également utiliser des outils plus évolués comme Dreamweaver ou GoliveDans les deux casil faut bien maîtriser le logiciel avant d'utiliser les fonctionnalités PHP, sous peine de voir les générateurs de code de ces applications, soit effacer ces balises qu'ils ne connaissent passoit écrire au beau milieuen transformant votre code en bouillie.

Il existe également des environnements de développementqui peuvent également rendre de sérieux services : [PHPEdit->http://www.phpedit.net]

En tout casil faut bannir les traitements de texte évoluéscomme Word
</P>
</
td></tr></table>

{{{
Les commentaires}}}

Le langage PHP est très généreux avec les développeurs habitués à d'autres langages : il accepte tous les types de commentaires C et les notations type SHELL UNIX.

Rappelons ici l'
utilité de "documenter" et de "commenter" son codepour le rendre plus accessible à d'autres développeurs, ou à soi même, quand on se replonge dans ses propres scripts quelques mois après les avoir écrits.

Voici l'
exemple de tout à l'heure avec les différents types de commentaires :

<div class="base64" title='
PGRpdiBzdHlsZT0ndGV4dC1hbGlnbjogbGVmdDsnIGNsYXNzPSdzcGlwX2NvZGUnIGRpcj0nbHRyJz48Y29kZT4mbHQ7P3BocDxiciAvPg0KLy8gY29tbWVudGFpcmUgdHlwZSBDIHN1ciB1bmUgbGlnbmUsIDxiciAvPg0KLy8gdG91dCBjZSBxdWkgc3VpdCBsZSAvLyBlc3QgY29uc2lk6XLpIGNvbW1lIHVuIGNvbW1lbnRhaXJlPGJyIC8+DQovKiBjb21tZW50YWlyZSB0eXBlIEMgc3VyIHBsdXNpZXVycyBsaWduZXM8YnIgLz4NClRvdXRlcyBsZXMgbGlnbmVzIGVudHJlIGxlcyBkZXV4IGJhbGlzZXM8YnIgLz4NCnNvbnQgY29uc2lk6XLpZXMgY29tbWUgZGVzIGNvbW1lbnRhaXJlczxiciAvPg0KKi8gPGJyIC8+DQojIENvbW1lbnRhaXJlIHR5cGUgU2hlbGwgVW5peDxiciAvPg0KJGxhZGF0ZSA9IGdldGRhdGUoKTs8YnIgLz4NCiRtb2lzID0gJGxhZGF0ZVsnbW9udGgnXTs8YnIgLz4NCiRtam91ciA9ICRsYWRhdGVbJ21kYXknXTs8YnIgLz4NCiRhbm5lZSA9ICRsYWRhdGVbJ3llYXInXTs8YnIgLz4NCj8mZ3Q7PGJyIC8+DQombHQ7aHRtbCZndDs8YnIgLz4NCiZsdDtib2R5Jmd0OzxiciAvPg0KVm9pY2kgbGEgZGF0ZSBpbmRpcXUmYW1wO2VhY3V0ZWUgcGFyIGxlIHNlcnZldXIgd2ViIDombHQ7P3BocCBlY2hvICZxdW90OyRtam91ci8kbW9pcy8kYW5uZWUmcXVvdDs7PyZndDs8YnIgLz4NCiZsdDsvYm9keSZndDs8YnIgLz4NCiZsdDsvaHRtbCZndDs8L2NvZGU+PC9kaXY+'></div>



Il est déconseillé d'
utiliser les commentaires type SHELL Unix et //, car ils peuvent rendre le code ambigu, ou ne font pas bon ménage avec le XML. Les commentaires // sont par contre recommandés avec PEAR.[[PEAR est une architecture et un système de distribution de composants PHP réutilisables. L'acronyme signifie "PHP extension and application repository" : extension du php et dépôt d'applications. Grâce à des spécifications très strictes et une utilisation standardisée de la programmation objet, les classes incluses dans PEAR sont facilement implémentables dans toute application PHP ]]

La suite : [->art7]

Philippe YONNET


[1] Certains serveurs acceptent n’importe qu’elle extension, d’autres non. Certains hébergements, pour éviter à leurs clients des soucis de compatibilité ascendante, ont choisi d’interpréter ".php" ou ".php4" comme du php version 4 et ".php3" comme du PHP version 3. L’aide en ligne de votre hébergeur sera utile pour savoir quel sera le comportement à attendre dans votre cas particulier

[2] le code html est volontairement simplifié, désolé pour les puristes de la normalisation