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 ? deja rien qu'au nom, on peut penser qu'il s'agit quelque chose qui va changer ! Et c'est bien de ca qu'il s'agit !
Une variable est une zone memoire qui va contenir des donnees, ces donnees pourront changer au fil du temps. Vous devez surement vous demander a quoi cela va bien nous servir dans nos applications PHP, mais j'y viens !
Imaginions que vous souhaitiez afficher le prenom du visiteur, prenom que ce meme visiteur aura renseigne dans un formulaire. Vous ne connaissez pas le prenom de ce visiteur tant qu'il ne l'a pas renseigne, donc vous ne pouvez pas l'afficher directement via ceci par exemple :
<?php
echo 'prenom';
?>
Pour pouvoir afficher le prenom du visiteur, il faut que celui-ci le renseigne. On verra plus bas sur cette page comment recuperer des donnees provenant de formulaires. Ici, on va supposer que le prenom est "Anthony". Ce prenom sera stocke dans une variable, et c'est la valeur de cette variable que nous allons afficher ensuite (j'espere 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 meme avoir un effet non voulu. En effet, tout ce qui se trouve entre guillemets simples (apostrophes) n'est pas remplace par PHP (au contraire des guillemets doubles). Nous verrons plus loin comment utiliser ces proprietes.
<?php
$prenom = 'Anthony';
echo '$prenom'; //affiche "$prenom"
echo '$prenom vaut :'.$prenom; //affiche "$prenom vaut : Anthony"
?>
Une variable est constituee d'un nom de variable et d'une valeur. Pour l'exemple que j'ai utilise 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 pave alphanumerique)
Le langage PHP n'est pas un langage tres type, c'est a dire qu'une variable peut etre alternativement un nombre, une chaine de caracteres ou que sais-je encore ! Voici les principaux types de donnees 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) :
<?php
$prenom = 'Anthony';
?>
<?php
$nombre = 7;
$nombre = 3.02;
?>
<?php
$afficher_options = FALSE; //on n'affichera pas les options
$utiliser_cache = TRUE; //on utilisera un cache
?>
PHP sait heureusement faire des calculs. Les symboles utilises (appeles operateurs) pour effectuer des calculs sont les suivants :
| Operateur | Signification |
| + | Addition |
| - | Soustration |
| * | Multiplication |
| / | Division |
| % | Division entiere (modulo) |
Voici quelques exemples simples d'utilisation des operateurs (il en existe d'autres que nous verrons plus loin au fur et a mesure des exemples) :
<?php
$entier = 7;
$flottant = 2.5;
$somme = 4 + 5; //$somme vaut 9
$multiplic= 2*5; //$multiplic vaut 10
$division = 9/3; //$division vaut 3
$modulo = 10 % 3 //$modulo vaut 1
$multi_variables = $entier * $flottant; //7 * 2.5 = 17.5 donc $multi_variables vaut 17.5
?>
Ne vous est-il jamais arrive de tomber sur des pages ayant des url a rallonge de ce style ? : page.php?param1=valeur¶m2=autre_valeur (et ainsi de suite)
PHP va vous permettre de recuperer le nom et la valeur des parametres qui seront dans votre url si il y en a. Ceci est tres 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 a 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 a certaines choses, notamment les suivantes :
Imaginions que vous souhaitiez maintenant proposer un service d'affichage de prenom a des webmasters. Ils appelleront une page de votre site avec des parametres dans l'adresse, et votre page renverra le prenom qui est dans l'url. Prenons un exemple d'url :
http://votresite.com/service.php?prenom=valeur&style=1 ou valeur correspondra a la valeur du prenom !
Le nom des variables creees en PHP est tres simple et commence par $_GET. Ici, en appelant cette page, PHP creera une variable nommee $_GET['prenom'] qui portera la valeur 'valeur' ainsi qu'une variable $_GET['style'] qui portera la valeur '1'. Attention, ceci ne sera pas equivalent aux definitions de variables suivantes :
<?php
$_GET['prenom'] = 'X'; //un prenom n'importe lequel
$_GET['style'] = 1; //style qui est ici un entier
?>
En effet, vous pourriez bien vous dire que c'est la meme chose, et ca l'est presque, il y a juste un tout petit detail dont il faut bien se rappeler : PHP considere les valeurs quelles qu'elles soient comme des chaines de caracteres !
Notre code est donc equivalent a ca :
<?php
$_GET['prenom'] = 'X'; //un prenom n'importe lequel
$_GET['style'] = '1'; //style qui est ici une chaine de caracteres
?>
Maintenant, si vous souhaitez faire des operations sur ces variables, il faut tout d'abord verifier 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 configure 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 booleen VRAI si la variable existe, et FAUX sinon. Si nous souhaitons afficher le prenom, on regarde d'abord qu'il existe, on effectue ensuite un htmlentities() pour transformer un eventuel code html en sa valeur affichable (on empeche donc les failles de securite de ce style). Notre code devient celui-ci :
<?php
if(isset($_GET['prenom'])) //On verifie que la variable $_GET['prenom'] existe
{
echo htmlentities($_GET['prenom']); //On affiche le prenom tout en l'ayant protege 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 ou (on verra plus loin que les variables ne peuvent pas etre utilisees partout, et bien les superglobales peuvent l'etre, en gros voici une des differences majeures qui les separent des autres). Bon c'est bien beau vous allez me dire les variables $_GET, mais ca ne fait pas forcement ce que vous voudriez. Si vous souhaitez recuperer l'age d'un visiteur qu'il aura rentre dans une zone de texte via la methode post d'un formulaire, il va falloir utiliser cette fois-ci les variables nommees $_POST. Le principe est exactement le meme que pour les variables $_GET. Prenons l'exemple d'un formulaire en XHTML contenant un champ texte nomme "age". Le visiteur remplira son age et on l'affichera a l'ecran. 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 tres simple et peut se resumer a ca :
<?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 premiere fonction isset(), vous savez a quoi elle sert :p je vous l'ai explique tout a l'heure. Concernant la fonction ctype_digit(), elle permet de verifier que la variable est bien composee de chiffres et uniquement de chiffres (que la chaine soit un entier donc). On pourrait dire "bah oui mais pourquoi ne pas utiliser la fonction is_int() qui permet de verifier si un nombre est un entier" ? tout simplement car comme je vous l'ai explique plus haut, les variables de type $_GET et $_POST sont considerees comme des chaines de caracteres par PHP et non des nombres. Pour finir, on verifie que l'age soit un nombre positif. Si toutes ces conditions sont reunies, on affiche l'age.
La quoi ? n'ayez pas peur en voyant ce terme barbare. La concatenation est l'operation qui permet de "coller" deux valeurs de variables pour n'en former qu'une par exemple. En PHP, l'operateur de concatenation est le point (.)
Pour cette partie, des exemples valent a mon avis mieux que de longs discours. Voyons comment afficher plusieurs variables a la suite ou encore completer la valeur d'une variable deja definie.
<?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 equivalent a $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 la :p