PHP : les variables

Noter ce cours :

Liens sponsorisés :

Définition et présentation

Afficher du texte c'est bien beau, mais si il y a une chose essentielle dans tout langage de programmation qui se respecte, ce sont bien les variables. Qu'est-ce qu'une variable ? déjà rien qu'au nom, on peut penser qu'il s'agit quelque chose qui va changer ! Et c'est bien de ça qu'il s'agit !

Une variable est une zone mémoire qui va contenir des données, ces données pourront changer au fil du temps. Vous devez sûrement vous demander à quoi cela va bien nous servir dans nos applications PHP, mais j'y viens !

Imaginions que vous souhaitiez afficher le prénom du visiteur, prénom que ce même visiteur aura renseigné dans un formulaire. Vous ne connaissez pas le prénom de ce visiteur tant qu'il ne l'a pas renseigné, donc vous ne pouvez pas l'afficher directement via ceci par exemple :

<?php
    
echo 'prénom';
?>

Pour pouvoir afficher le prénom du visiteur, il faut que celui-ci le renseigne. On verra plus bas sur cette page comment récupérer des données provenant de formulaires. Ici, on va supposer que le prénom est "Anthony". Ce prénom sera stocké dans une variable, et c'est la valeur de cette variable que nous allons afficher ensuite (j'espère que vous suivez toujours) ! Le code basique devient le suivant :

<?php
     $prenom 
'Anthony';

     echo 
$prenom//affiche "Anthony"
?>

Les guillemets (simples ou doubles) dans le echo sont ici inutiles quand vous affichez une variable. Elles peuvent même avoir un effet non voulu. En effet, tout ce qui se trouve entre guillemets simples (apostrophes) n'est pas remplacé par PHP (au contraire des guillemets doubles). Nous verrons plus loin comment utiliser ces propriétés.

<?php
     $prenom 
= 'Anthony';

     echo '$prenom'; //affiche "$prenom"
     echo '$prenom vaut :'.$prenom; //affiche "$prenom vaut : Anthony"
?>

Une variable est constituée d'un nom de variable et d'une valeur. Pour l'exemple que j'ai utilisé ci-dessus, le nom de la variable est "prenom" et la valeur est "Anthony". Une variable commence toujours par le signe dollar $ suivi d'une lettre ou d'un underscore _ (touche 8 du pavé alphanumérique)

Types de variables

Le langage PHP n'est pas un langage très typé, c'est à dire qu'une variable peut être alternativement un nombre, une chaîne de caractères ou que sais-je encore ! Voici les principaux types de données en PHP (cela ne changera presque rien pour vous au niveau de la syntaxe, mais il est bon de les savoir. Notez que les noms de variables pris en exemple ainsi que leurs valeurs sont purement arbitraires) :

Les opérateurs de calcul

PHP sait heureusement faire des calculs. Les symboles utilisés (appelés opérateurs) pour effectuer des calculs sont les suivants :

Opérateur Signification
+ Addition
- Soustration
* Multiplication
/ Division
% Division entière (modulo)

Voici quelques exemples simples d'utilisation des opérateurs (il en existe d'autres que nous verrons plus loin au fur et à mesure des exemples) :

<?php
     $entier   
= 7;
     
$flottant 2.5;
     
$somme    5//$somme vaut 9
     
$multiplic2*5;   //$multiplic vaut 10
     
$division 9/3;   //$division vaut 3
     
$modulo   10 //$modulo vaut 1

     
$multi_variables $entier $flottant//7 * 2.5 = 17.5 donc $multi_variables vaut 17.5
?>

Les variables de formulaires et d'adresses web :

Ne vous est-il jamais arrivé de tomber sur des pages ayant des url à rallonge de ce style ? : page.php?param1=valeur&param2=autre_valeur (et ainsi de suite)

PHP va vous permettre de récupérer le nom et la valeur des paramètres qui seront dans votre url si il y en a. Ceci est très pratique par exemple pour transmettre des variables et valeurs de page en page (exceptionnellement, car nous verrons qu'il existe un moyen plus efficace pour faire ceci plus loin dans notre approfondissement du PHP).

Avant d'utiliser ce principe sur vos pages, il faut faire par contre attention à la transmission de variables. En effet, si vous faites des traitements sur ces variables (ou si vous utilisez leur valeur) il faut bien faire attention à certaines choses, notamment les suivantes :

Imaginions que vous souhaitiez maintenant proposer un service d'affichage de prénom à des webmasters. Ils appelleront une page de votre site avec des paramètres dans l'adresse, et votre page renverra le prénom qui est dans l'url. Prenons un exemple d'url :

http://votresite.com/service.php?prenom=valeur&style=1 où valeur correspondra à la valeur du prénom !

Le nom des variables créées en PHP est très simple et commence par $_GET. Ici, en appelant cette page, PHP créera une variable nommée $_GET['prenom'] qui portera la valeur 'valeur' ainsi qu'une variable $_GET['style'] qui portera la valeur '1'. Attention, ceci ne sera pas équivalent aux définitions de variables suivantes :

<?php
     $_GET
['prenom'] = 'X'//un prénom n'importe lequel
     
$_GET['style']  = 1//style qui est ici un entier
?>

En effet, vous pourriez bien vous dire que c'est la même chose, et ça l'est presque, il y a juste un tout petit détail dont il faut bien se rappeler : PHP considère les valeurs quelles qu'elles soient comme des chaînes de caractères !

Notre code est donc équivalent à ça :

<?php
     $_GET
['prenom'] = 'X'//un prénom n'importe lequel
     
$_GET['style']  = '1'//style qui est ici une chaîne de caractères
?>

Maintenant, si vous souhaitez faire des opérations sur ces variables, il faut tout d'abord vérifier qu'elles existent, sinon vous aurez une erreur, en effet si vous souhaitez par exemple afficher la valeur d'une variable qui n'existe pas, avec un PHP bien configuré vous obtiendrez une erreur de undefined variable. On utilise pour savoir si une variable existe, la fonction isset(). Si vous ne savez pas ce qu'est une fonction ce n'est pas bien grave, sachez juste que cette fonction renvoie un booléen VRAI si la variable existe, et FAUX sinon. Si nous souhaitons afficher le prénom, on regarde d'abord qu'il existe, on effectue ensuite un htmlentities() pour transformer un éventuel code html en sa valeur affichable (on empêche donc les failles de sécurité de ce style). Notre code devient celui-ci :

<?php
     
if(isset($_GET['prenom'])) //On vérifie que la variable $_GET['prenom'] existe
     
{
            echo 
htmlentities($_GET['prenom']); //On affiche le prénom tout en l'ayant protégé des failles d'injection de code HTML
     
}
?>

Les variables $_GET font partie de ce qu'on appelle des variables superglobales. Cela ne vous dit rien pour l'instant, mais sachez qu'il s'agit de variables accessibles depuis n'importe où (on verra plus loin que les variables ne peuvent pas être utilisées partout, et bien les superglobales peuvent l'être, en gros voici une des différences majeures qui les séparent des autres). Bon c'est bien beau vous allez me dire les variables $_GET, mais ça ne fait pas forcément ce que vous voudriez. Si vous souhaitez récupérer l'âge d'un visiteur qu'il aura rentré dans une zone de texte via la méthode post d'un formulaire, il va falloir utiliser cette fois-ci les variables nommées $_POST. Le principe est exactement le même que pour les variables $_GET. Prenons l'exemple d'un formulaire en XHTML contenant un champ texte nommé "age". Le visiteur remplira son âge et on l'affichera à l'écran. Le code en XHTML est le suivant :

<form method="post" action="traitement.php">
<p><input type="text" name="age" /></p>
<p>
<input type="submit" value="Envoyer" /></p>
</form>

Le code en PHP est très simple et peut se résumer à ça :

<?php
     
if(isset($_POST['age']) AND ctype_digit($_POST['age']) AND $_POST['age'] > 0)
     {
          echo 
htmlentities($_POST['age']);
     }
?>

N'ayez pas peur en voyant tout ce code. En fait, la première fonction isset(), vous savez à quoi elle sert :p je vous l'ai expliqué tout à l'heure. Concernant la fonction ctype_digit(), elle permet de vérifier que la variable est bien composée de chiffres et uniquement de chiffres (que la chaîne soit un entier donc). On pourrait dire "bah oui mais pourquoi ne pas utiliser la fonction is_int() qui permet de vérifier si un nombre est un entier" ? tout simplement car comme je vous l'ai expliqué plus haut, les variables de type $_GET et $_POST sont considérées comme des chaînes de caractères par PHP et non des nombres. Pour finir, on vérifie que l'âge soit un nombre positif. Si toutes ces conditions sont réunies, on affiche l'âge.

La concaténation :

La quoi ? n'ayez pas peur en voyant ce terme barbare. La concaténation est l'opération qui permet de "coller" deux valeurs de variables pour n'en former qu'une par exemple. En PHP, l'opérateur de concaténation est le point (.)

Pour cette partie, des exemples valent à mon avis mieux que de longs discours. Voyons comment afficher plusieurs variables à la suite ou encore compléter la valeur d'une variable déjà définie.

<?php
     $nom    
'Dupont';
     
$prenom 'Pierre';

     echo 
$nom.$prenom//va afficher "DupontPierre"
     
echo $nom.' '.$prenom//va afficher "Dupont Pierre"

     
echo '$nom.$prenom'//va afficher "$nom.$prenom"
     
echo '$nom$prenom'//va afficher $nom$prenom

     
$nom .= $prenom//est équivalent à $nom = $nom . $prenom

     
echo $nom//affichera "DupontPierre"

     
$nom  'Dupont';

     
$nom .= ' '.$prenom;

     echo 
$nom//affichera "Dupont Pierre"
?>

Je pense qu'on a fait le tour niveau exemples là :p

Chapitre suivant

Les fonctions

Vous avez aimé cet article intitulé PHP : les variables ? Partagez-le !
Vulgarisation-informatique.com
Cours en informatique & tutoriels