Introduction à PHP

Contexte

Rappel : XHTML

ExempleCorps

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Exemple de fichier XHTML</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
        <p>Hello world !</p>
    </body>
</html>

DéfinitionHTML

HTML est un langage inventé à partir de 1989 pour coder des pages de contenu sur le Web. Il est standardisé par le W3C.

DéfinitionLangage à balises

HTML est un langage à balises : il se fonde sur le mélange entre du contenu et des balises permettant de caractériser ce contenu. HTML utilise le formalisme SGML pour définir les balises et combinaisons de balises autorisées.

ExempleExtrait de code HTML

<p>Ceci est un contenu, caractérisé par des <b>balises</b></p>

SyntaxeStructure générale

<html xmlns="http://www.w3.org/1999/xhtml">
    <head> ... </head>
    <body> ... </body>
</html>

SyntaxeEntête

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>...</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    </head>
    <body> ... </body>
</html>

SyntaxeCorps

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>...</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
        <h1>...</h1>
        <h2>...</h2>
        <p>...</p>
    </body>
</html>

Syntaxe

<p>Un paragraphe de texte</p>
<p>Paragraphe contenant du texte, mot <b>gras</g> ou <i>italique</i>.</p>
<p><a href="page02.html">Un lien</a> vers une autre page</p>
<img src="img.png" alt="une image"/>
<h1>Titre de niveau 1</h1>
<h2>Titre de niveau 2</h2>
<h3>Titre de niveau 3</h3>
<table border="1">
<tr><th>Titre colonne 1  </th><th>Titre colonne 2  </th><th>...</th></tr>
<tr><td>Ligne 1 colonne 1</td><td>Ligne 1 colonne 2</td><td>...</td></tr>
<tr><td>Ligne 2 colonne 1</td><td>Ligne 2 colonne 2</td><td>...</td></tr>
</table>
<ul>
<li>Item de liste à puce</li>
<li>Item de liste à puce</li>
</ul>
<ol>
<li>Item de liste à ordonnée</li>
<li>Item de liste à ordonnée</li>
</ol>

Appliquer la notion : Population

Soit la page HTML suivante, visualisée sous le navigateur web Firefox.

Page HTML visualisée avec un navigateur Web
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Exercice</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
  <h1>Population par département</h1>
  <table border="1">
    <tr><th>Numéro</th><th>Nom</th><th>Population</th></tr>
    <tr><td>01</td><td>Ain</td><td>529378</td></tr>
    <tr><td>02</td><td>Aisne</td><td>552320</td></tr>
    <tr><td>...</td><td>...</td><td>...</td></tr>
  </table>
  <ul>
    <li>Département le plus peuplé : <b>Paris</b> (<i>2147857</i>)</li>
    <li>Département le moins peuplé : <b>Hautes-Alpes</b> (<i>126636</i>)</li>
  </ul>
</body>
</html>

Créez le fichier HTML source de cette page sur votre ordinateur en utilisant un éditeur de texte, comme notepad++ sous Windows ou gedit sous Linux.

Déposez le fichier sur un VPS disposant d'un serveur installé afin qu'il soit accessible à l'adresse http://mon.vps.org/samples/pop.html.

Présentation et installation d'un serveur PHP

PHP est un langage interprété (un langage de script) exécuté du côté serveur (comme les scripts CGI, ASP, ...) et non du côté client (un script écrit en JavaScript ou une applet Java s'exécute au contraire sur l'ordinateur où se trouve le navigateur). La syntaxe du langage provient de celles du langage C, du Perl et de Java.

Ses principaux atouts sont :

  • La gratuité et la disponibilité du code source (PHP est distribué sous licence GNU GPL)

  • La simplicité d'écriture de scripts

  • La possibilité d'inclure le script PHP au sein d'une page HTML (contrairement aux scripts CGi, pour lesquels il faut écrire des lignes de code pour afficher chaque ligne en langage HTML)

  • La simplicité d'interfaçage avec des bases de données (de nombreux SGBD sont supportés, le plus utilisé avec ce langage est MySQL).

  • L'intégration au sein de nombreux serveurs web (Apache...)

ExempleSGBD supportés par PHP

  • MySQL

  • Oracle

  • PostgreSQL

  • ...

Appliquer la notion

Créez un fichier test.php sur un VPS disposant d'un serveur PHP utilisant la fonction phpinfo pour renvoyer les informations techniques sur le module PHP installé sur le serveur.

Fonctionnement d'un serveur PHP

L'interprétation du code par le serveur

  1. Le serveur reconnaît qu'il s'agit d'un fichier PHP

  2. Il lit le fichier PHP

  3. Dès que le serveur rencontre une balise indiquant que les lignes suivantes sont du code PHP, il "passe" en mode PHP, ce qui signifie qu'il ne lit plus les instructions: il les exécute.

  4. Lorsque le serveur rencontre une instruction, il la transmet à l'interpréteur

  5. L'interpréteur exécute l'instruction puis envoie les sorties éventuelles au serveur

  6. A la fin du script, le serveur transmet le résultat au client (le navigateur)

Requête d'une page HTML (http://fr.html.net/tutorials/php/lesson1.php)
Requête d'une page PHP (http://fr.html.net/tutorials/php/lesson1.php)

RemarqueCode PHP et clients Web

Un script PHP est interprété par le serveur, les utilisateurs ne peuvent donc pas voir le code source.

Le code PHP stocké sur le serveur n'est donc jamais visible directement par le client puisque dès qu'il en demande l'accès, le serveur l'interprète ! De cette façon aucune modification n'est à apporter sur les navigateurs...

ExempleHello world

<?php
echo "Hello world";
?>

Syntaxe

Pour que le script soit interprété par le serveur deux conditions sont nécessaires :

  • Le fichier contenant le code doit avoir l'extension .php et non .html (selon la configuration du serveur Web)

  • Le code PHP contenu dans le code HTML doit être délimité par les balises "<?php" et "?>"

Exercice

Créer un fichier hello.php permettant d'afficher le texte Hello World !.

<?php
  echo "Hello world !";
?>

Envoi de texte au navigateur par le serveur PHP

Syntaxe

echo Expression;

Implantation du code PHP au sein du code HTML

FondamentalL'importance de l'implantation du code PHP au sein du code HTML

ExempleHello world

<html>
<head><title>Exemple</title></head>
<body>
<?php
echo "Hello world";
?>
</body>
</html>

Exercice

Transformer le fichier PHP suivant pour qu'il renvoie une page HTML.

<?php
  echo "Hello world !";
?>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Hello PHP !</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    </head>
    <body>
        <p>
            <?php 
                echo 'Hello world !';
            ?>
        </p>
    </body>
</html>

Syntaxe PHP

FondamentalManuel PHP en ligne

Exemple

<?php
$i=0 ;
while($i<6) {
  echo $i ;
  $i=rand(1,6) ;
}
?>

AttentionGénéralités

  • Une instruction se termine par un ;

  • Les espaces, retours chariot et tabulation ne sont pas pris en compte par l'interpréteur

  • Les commentaires sont écrits entre les délimiteurs /* et */ ou // sur une seule ligne.

  • Le langage est case-sensitive (sauf pour les fonctions).

ComplémentIDE

Variables en PHP

  • Les variables ne sont pas déclarées

  • Les variables commencent pas un $

  • Les variables ne sont pas typées

Les variables en langage PHP peuvent être de trois types :

  • Scalaires (entiers, chaîne, réels)

  • Tableaux (un tableau pouvant être multidimensionnel et stocker des scalaires de types différents)

  • Tableaux associatifs (indexés par des chaînes)

Exemple

$Entier=1;
$Reel=1.0;
$Chaine="1";
$Tableau[0]=1
$Tableau[1]="1"
$TableauMulti[0][0]="1.0"
$TableauAssoc[Age]=18

Complémentisset()

if (isset($var)) {
echo $var;
}

Structures de contrôle en PHP

SyntaxeAlternative IF

if (condition réalisée) {
liste d'instructions
}
elseif (autre condition réalisée) {
autre série d'instructions
}
 ...
else (dernière condition réalisée) {
série d'instructions
}

SyntaxeBoucle FOR

for (compteur; condition; modification du compteur) {
liste d'instructions
}

SyntaxeBoucle WHILE

while (condition réalisée) {
liste d'instructions
}

Deux fois deux

Écrire un programme PHP qui permet d'afficher la table de multiplication des 2 en HTML.

Penser à implanter le code PHP dans le code HTML

On utilisera une boucle for.

<?php
for ($i=1; $i<10; $i++) {
  echo '<p>';
  echo "2 x $i = ", 2*$i;
  echo '</p>';
}
?>

Auto-évaluation

Exercice final

Quiz - Culture

...

A

B

Quiz - Méthode

...

A

B

Quiz - Code

...

A

B

Quiz - Culture

...

A

B

Quiz - Méthode

...

A

B

Quiz - Code

...

A

B

Défi

...

HTML
HyperText Markup Language
W3C
World Wide Web Consortium
SGML
Standard Generalized Markup Language

Formulaires HTML et PHP

ExemplePage d'appel
<html>
  <body>
     <form method="get" action="test.php">
     <input type="text" size="20" name="MaVar" />
     <input type="submit" />
   </form>
</body>
</html>
ExemplePage appelée (test.php)
<?php
  echo $_GET["MaVar"];
?>
RemarqueCode implanté
<html>
  <body>
    <p>
    <?php
      echo $_GET["MaVar"];
    ?>
    </p>
  </body>
</html>
AttentionCache

Les navigateurs disposent d'un cache, c'est à dire d'une copie locale des fichiers qui leur évite de recharger plusieurs fois un fichier identique. Lorsque l'on développe une application PHP, les fichiers changent fréquemment, il est alors nécessaire de vider le cache pour que le navigateur recharge bien la nouvelle version du code.

Sous Firefox, faire CTRL+F5.

Requête GET ou POST par formulaire HTML (balise <form>)
DéfinitionFormulaire

On appelle formulaire une interface permettant à un utilisateur humaine de saisir des données en vue dans une application informatique.

DéfinitionContrôle

On appelle contrôle un élément d'un formulaire permettant d'effectuer une action : saisir une donnée, exécuter une requête...

La balise form du langage HTML permet de :

  • créer un formulaire avec des contrôles,

  • envoyer le contenu du formulaire à un serveur web grâce à une requête GET ou POST.

ExempleContrôle en HTML
  • étiquette

  • cases à cocher

  • champs de saisie

  • boutons radio

  • listes à choix multiples

  • ...

ExempleFormulaire
Exemple de formulaire HTML
<form metho="get" action="test.php">
	<p><label>Nom</label> <input type="text" name="nom"></p>
	<p><label>Prénom</label> <input type="text" name="prenom"></p>
	<p><label>Age</label> <input type="text" name="age"></p>
	<p><input type="submit"></p>		
</form>
Traiter les requêtes HTTP avec un serveur PHP

Lorsqu'une requête HTTP envoie des données au serveur web, par exemple grâce à un lien <a> ou un formulaire <form> en HTML, les données envoyées doivent être traitées par un programme que l'on écrit spécifiquement sur le serveur.

Fondamental

Un serveur web/PHP peut gérer les données envoyées par une requête HTTP.

Lors de son chargement une page PHP contient un tableau de variables pour les données envoyées par la méthode GET et un autre pour les données envoyées par POST.

Syntaxe

On accède à ses données en utilisant la syntaxe :

$_GET["var1"]

$_GET["var2"]

ou

$_POST["var1"]

$_POST["var2"]

var1 et var2 sont des noms de données dans la requête HTTP (par exemple le nom des contrôles dans le formulaire HTML à l'origine de la requête).

Exemple
<?php
echo 'Hello ' . $_POST["name"] ;
?>
Liste des raccourcis clavier

Liste des fonctions de navigation et leurs raccourcis clavier correspondant :

  • Bloc Suivant : flèche droite, flèche bas, barre espace, page suivante, touche N
  • Bloc Précédent : flèche gauche, flèche haut, retour arrière, page précédente, touche P
  • Diapositive Suivante : touche T
  • Diapositive Précédente : touche S
  • Retour accueil : touche Début
  • Menu : touche M
  • Revenir à l'accueil : touche H
  • Fermer zoom : touche Échap.