Un démarrage rapide en PHP

Ce n'est pas un cours mais une présentation rapide des connaissances en PHP dont vous allez avoir besoin pour la réalisation des scripts des TP suivants.

1. Généralités

Un script PHP est un fichier texte qui contient des instructions PHP et dont le nom doit avoir l'extension .php. Par exemple, si on saisit le texte ci-dessous dans un éditeur et qu'on l'enregistre sur le disque dur sous le nommon_script.php alors le fichier mon_script.php est un script PHP (noter l'extension .php donnée au nom du fichier) :

<?php
  echo "<HTML><BODY>";
  echo "Je suis un <I>script</I> PHP. ";
  echo "Nous sommes le <B>" . date("d/m/y") . "</B>.";
  echo "</BODY></HTML>";
?>
Exécuter ce script

Le script PHP ci-dessus est constitué de 4 instructions placées entre les balises <?php et ?>. Chaque instruction doit toujours être terminée par un point-virgule ;. On est libre de placer ces 4 instructions sur une seule ligne mais il est préfèrable de placer une instruction par ligne pour améliorer la lisibilité du script.

Le script mon_script.php doit être ensuite placé sur un serveur Web comme n'importe quelle page HTML. Lorsqu'un utilisateur veut accéder à la page http://herve.pages.free.fr/lamp/iniphp/php-quickstart/mon_script.php, son navigateur envoie une requête HTTP au serveur Web situé sur la machine herve.pages.free.fr. Ce serveur Web recherche alors dans son arborescence la page demandée (le fichier mon_script.php). Puisqu'il s'agit d'un script PHP (et pas d'une page HTML normale, à cause de l'extension .php) il interprète son contenu au lieu de le renvoyer directement au navigateur. L'interpréteur PHP exécute les instructions du script séquentiellement (les unes après les autres) :

  • L'instruction echo "<HTML><BODY>"; envoie la chaîne de caractères "<HTML><BODY>" au navigateur.
  • L'instruction echo "Je suis un <I>script</I> PHP. "; envoie la chaîne de caractères "Je suis un <I>script</I> PHP. " au navigateur.
  • etc ...

Comme on peut le voir, l'interprétation de ce script produit du code HTML et c'est ce code qui est renvoyé au navigateur. Le code source du script (le contenu du fichier mon_script.php) n'est donc jamais communiqué au navigateur. C'est seulement le code HTML produit par l'interprétation de ce script qui est transmis. Pour s'en convaincre, il suffit de visualiser la page produite par le script ci-dessus puis d'afficher le code source HTML de cette page.

2. Alternance de blocs PHP et de blocs HTML

Dans un script PHP toutes les instructions PHP doivent être placées entre les balises <?php et ?>. Ce qui est placé en dehors de ces balises ne sera pas interprété et sera envoyé tel quel au navigateur. Ceci permet d'avoir dans un même script PHP à la fois du code PHP (inclus entre les balises <?php et ?>) et du code HTML (statique) comme dans l'exemple suivant :

<HTML>
<BODY>
Je suis un <I>script</I> PHP.
<?php
  echo "Nous sommes le <B>" . date("d/m/y") . "</B>.";
?>
</BODY>
</HTML>
Exécuter ce script

3. Placer des commentaires dans un script PHP

Dans un bloc PHP, on peut placer des commentaires c'est-à-dire du texte qui sera complètement ignoré par l'interpréteur. Pour cela on utilise le caractère # : tout ce qui est situé après et sur la même ligne qu'un # est considéré comme du commentaire et sera donc ignoré lors de l'éxécution (l'interprétation) du script :

<HTML>
<BODY>
<?php
  $a = -5;     # Stockage de l'entier -5 dans la variable $a
  $b = $a + 8; # Stockage du résultat de $a + 8 dans la variable $b
  echo $b;     # Affichage de la valeur de la variable $b
?>
</BODY>
</HTML>
Exécuter ce script

On peut aussi utiliser un double slash // à la place du #.

4. Variables, affectations

$a, $prix_ttc et $nom1 sont des exemples de variables PHP. On peut créer et utiliser autant de variables qu'on veut dans un script PHP : elles servent à stocker des valeurs pour pouvoir les réutiliser plus loin DANS LE MÊME SCRIPT.

Par exemple, le script ci-dessous est constitué de 8 instructions (chaque instruction doit toujours être terminée par un point-virgule ;) :

<?php
  $a = -5;
  $b = $a + 8;
  $message = "engage le jeu";
  $message2 = $message . " que je le gagne";

  echo "a=$a<BR>";
  echo "b=$b<BR>";
  echo "message=$message<BR>";
  echo "message2=$message2<BR>";
?>
Exécuter ce script

Les 4 premières instructions sont des affectations. Une affectation est une opération qui consiste à stocker une valeur dans une variable.

  • L'affectation $a = -5; stocke l'entier -5 dans la variable $a.
  • L'affectation $b = $a + 8; stocke le résultat de l'opération arithmétique $a + 8 dans la variable $b.
  • L'affectation $message = "engage le jeu"; stocke la chaîne de caractères (string) "engage le jeu" dans la variable $message.
  • L'affectation $message2 = $message . " que je le gagne"; stocke le résultat de l'opération de concaténation des chaînes $message et " que je le gagne" dans la variable $message2. En clair, $message2 reçcoit la chaîne obtenue en mettant ces 2 chaînes « bout à bout ».

5. Tableaux

Les variables ci-dessus ne peuvent contenir qu'une seule valeur (chaîne de caractères, nombre entier ou autre ...) qui peut changer au cours du temps. Mais si on veut placer plusieurs valeurs dans une variable, on doit utiliser une variable de type tableau (array). Voici un exemple de tableau à 4 éléments :

<?php
  $couleurs = array("rouge", "vert", "bleu", "jaune");
  echo $couleurs[0] . "<BR>";
  echo $couleurs[2] . "<BR>";
?>
Exécuter ce script

Le tableau $couleurs est constitué des éléments $couleurs[0], $couleurs[1], $couleurs[2] et $couleurs[3]. Notez que les indices (ou clés) de ces éléments vont de 0 à 3.

Pour afficher tous les éléments d'un tableau, on peut utiliser la fonction print_r() qui affiche la liste des associations [clé] => valeur :

<?php
  $couleurs = array("rouge", "vert", "bleu", "jaune");
  print_r($couleurs);
?>
Exécuter ce script

Lorsqu'on remplit un tableau, on a la possibilité de choisir les clés de ses éléments :

<?php
  $couleurs = array(
	'bas' => "rouge",
	'tricot' => "vert",
	'chapeau' => "bleu",
	'cravatte' => "jaune"
  );
  print_r($couleurs);
?>
Exécuter ce script

Le tableau $couleurs est maintenant constitué des éléments $couleurs['bas'], $couleurs['tricot'], $couleurs['chapeau'] et $couleurs['cravatte'].

6. Structure de contrôle if

Exemple :

<?php
  $a =  8;
  $b = -2;
  if ($a == $b) {
	echo "a et b sont &eacute;gaux";
  } else {
	echo "a et b sont diff&eacute;rents";
  }
  echo "<BR>";
  echo "Fin du test.";
?>
Exécuter ce script

Fonctionnement :

  1. TEST : if ($a == $b)
    Les variables $a et $b sont-elles égales ? (N.B. : Pour cette comparaison on utilise l'opérateur de comparaison == et surtout pas l'opérateur d'affectation = ... c'est une erreur classique !)
  2. Si OUI : alors on exécute les instructions du bloc (délimité par les accolades { ... }) situé juste après le TEST. Ensuite l'exécution du script continue normalement à partir de l'instruction echo "Fin du test";.
  3. Si NON : alors on exécute les instructions du bloc (délimité par les accolades { ... }) situé juste après le else. Ensuite l'exécution du script continue normalement à partir de l'instruction echo "Fin du test";.

7. Structure de contrôle while

Exemple :

<?php
  $i = 0;
  while ($i < 10) {
	echo "XXX $i XXX<BR>";
	$i++;
  }
?>
Exécuter ce script

8. Structure de contrôle foreach

Exemple 1 :

<?php
  $couleurs = array("rouge", "vert", "bleu", "jaune");
  foreach ($couleurs as $val) {
  	echo "+++ $val +++<BR>";
  }
?>
Exécuter ce script

Exemple 2 :

<?php
  $couleurs = array("rouge", "vert", "bleu", "jaune");
  foreach ($couleurs as $cle => $valeur) {
	echo "La cl&eacute; $cle est associ&eacute;e ";
	echo "&agrave; la valeur \"$valeur\".<BR>";
  }
?>
Exécuter ce script

9. Structure de contrôle for

Exemple 1 :

<?php
  for ($i = 0 ; $i < 10 ; $i++) {
  	echo "XXX $i XXX<BR>";
  }
?>
Exécuter ce script

Exemple 2 :

<?php
  $couleurs = array("rouge", "vert", "bleu", "jaune");
  $nb_couleurs = count($couleurs);
  echo "Nombre de couleurs = $nb_couleurs<BR>";
  for ($i = 0 ; $i < $nb_couleurs ; $i++) {
	echo "couleurs[$i] = $couleurs[$i]<BR>";
  }
?>
Exécuter ce script

10. Fonctions

En PHP le programmeur dispose de centaines de fonctions prédéfinies qui lui permettent d'effectuer certaines actions. Quelques exemples de fonctions :

strlen() Calcule la taille d'une chaîne
strtoupper(() Met une chaîne en majuscules
strrev() Inverse une chaîne
fopen() Ouvre un fichier
mysql_connect() Ouvre une connexion à un serveur MySQL
mysql_query() Envoie une requête SQL à un serveur MySQL
print_r() Affiche le contenu d'un tableau
count() Compte le nombre d'éléments d'un tableau

Toutes ces fonctions sont documentées dans le manuel en ligne sur www.php.net (IV. Index des fonctions ou IV. Function Reference pour la version anglaise). Elles sont regroupées par modules :

  • les fonctions strlen(), strtoupper() et strrev() sont dans le module Chaînes de caractères (Strings),
  • la fonction fopen() est dans le module Système de fichiers (Filesystem functions pour la version anglaise),
  • les fonctions mysql_connect() et mysql_query() sont dans le module MySQL,
  • la fonction print_r() est dans le module Variables,
  • la fonction count() est dans le module Tableaux (Arrays pour la version anglaise).

N.B. : Attention ! Les modules sont listés dans l'ordre alphabétique de leur nom EN ANGLAIS d'où l'impression de confusion dans la version française du manuel en ligne.
Pensez aussi à utiliser la fonction de recherche (très utile) située en haut de toutes les pages du manuel en ligne ...

Une fonction s'utilise en général de la façon suivante :

<?php
  $nom_en_min = "amélie poulain";
  $nom_en_maj = strtoupper($nom_en_min);
  echo "$nom_en_min<BR>";
  echo "$nom_en_maj<BR>";
?>
Exécuter ce script

Il y a 2 points essentiels avec les fonctions :

  1. On doit leur passer zéro, un ou plusieurs paramètres (tout dépend de la fonction) et chacun de ces paramètres doit être d'un type donné (parfois les choses ne sont pas aussi strictes). Dans le cas de la fonctionstrtoupper(), on doit obligatoirement lui passer un (et un seul) paramètre et ce paramètre DOIT être une chaîne de caractères.
  2. Elles renvoient UNE valeur. Dans le cas de la fonction strtoupper(), elle renvoie la chaîne passée en argument convertie en majuscules.

11. Traitement des erreurs

Certaines fonctions comme fopen(), mysql_connect(), etc ... renvoient la valeur FALSE lorsqu'elles échouent. C'est ce qui arrive par exemple quand on essaie d'ouvrir un fichier qui n'existe pas avec fopen() ou quand on essaie de se connecter à un serveur MySQL en donnant un mot de passe erroné avec mysql_connect().

De manière générale, lorsqu'on fait appel à ce genre de fonctions « à risques » il faut prévoir une alternative en cas d'échec. Dans la plupart des cas cette alternative est simple et radicale : on se contente d'afficher un message d'erreur et d'interrompre l'exécution du script avec l'instruction exit.

<?php
  $filename = "un_certain_fichier";
  $file = fopen($filename,"r");
  if ($file == FALSE) {
	echo "Impossible d'ouvrir le fichier $filename";
	exit;
  }
  echo "Le fichier $filename est ouvert";

  # Début du traitement des données du fichier
  # ...
  # ...
  # Fin du traitement des données du fichier

  fclose($file);
?>

Fonctionnement :

  1. $file = fopen($filename,"r");
    La valeur renvoyée par la fonction fopen() est stockée dans la variable $file.
  2. if ($file == FALSE)
    La variable $file est-elle égale à FALSE ?
  3. Si OUI : alors on exécute les instructions echo "Impossible d'ouvrir le fichier $filename"; (qui affiche un message d'erreur) et exit; (qui termine l'exécution du script).
  4. Si NON : alors l'exécution du script continue normalement à partir de l'instruction echo "Le fichier $filename est ouvert"; (car ici il n'y a pas de else).

Une autre façcon d'obtenir le comportement ci-dessus est « Fais ce que je dis ou meurs ! » :

<?php
  $filename = "un_certain_fichier";
  $file = fopen($filename,"r")
          or die("Impossible d'ouvrir le fichier $filename");
  echo "Le fichier $filename est ouvert";

  # Début du traitement des données du fichier
  # ...
  # ...
  # Fin du traitement des données du fichier

  fclose($file);
?>

L'instruction $file = fopen($filename,"r") or die("Impossible d'ouvrir le fichier $filename"); fonctionne de la façon suivante :

  1. La partie située à gauche du or (l'instruction $file = fopen($filename,"r")) est exécutée.
  2. Si elle réussit, tout ce qui est à droite du or est ignoré et l'exécution du script continue normalement à partir de l'instruction echo "Le fichier $filename est ouvert";
  3. Si elle échoue, la partie située à droite du or (l'instruction die("Impossible d'ouvrir le fichier $filename") est exécutée.

Page d'accueil de Hervé Pagès Valid HTML 4.01! Contact : Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.

En poursuivant votre navigation sur mon site, vous acceptez l’utilisation des Cookies et autres traceurs  pour réaliser des statistiques de visites et enregistrer sur votre machine vos activités pédagogiques. En savoir plus.