Réalisation de sites web

Sommaire du site

Présentation
Comment apprendre
L'équipement
La page web
  Styles et CSS
  HTML, structure de la page
  HTML, éléments du corps
Le langage JavaScript
  JavaScript, objets "core"
  JavaScript, DOM, les bases
  JavaScript, DOM, node
  JavaScript, compléments
Le langage PHP, les bases
  PHP, fonctions utiles
  PHP pour le web
  PHP, compléments
SQL, introduction
  MySQL et PHP pour le web
  MySQL, plus loin...
Applications AJAX
Annexes utiles
  Fichier .htaccess
  Sécurité des sites web
  Conception d'un site web
  Référencement, syndication

Sommaire détaillé

Mentions légales.

Chapitres de cette page
Contenu  -> 

Page mise à jour le : 12-08-2015

Haut de la page

Le site web de référence
Une fonction essentielle
Autres fonctions utiles
Gestion des variables
Fonctions sur chaînes
Fonctions sur tableaux
Fonctions dates et heures
A suivre...

PHP, Les fonctions les plus utiles

Si pour le JavaScript il n'était pas question de présenter l'ensemble des fonctions, c'est encore plus vrai pour le PHP. En effet la bibliothèque des fonctions internes est énorme, par exemple il y a près de 100 fonctions qui opèrent sur les chaînes de caractères.

De plus l'éventail des possibilités est bien plus grand qu'en JavaScript car, le PHP s'exécutant sur le serveur, la bibliothèque dispose de fonctions liées à la machine comme la gestion des fichiers, les accès aux bases de données ainsi que les fonctionnalités réseau.

Sur ce site nous nous bornerons à parler des fonctions les plus utiles, pour les détails et les autres fonctions il est indispensable de consulter le site de référence du langage.

De plus la description des fonctions présentées ici n'est pas toujours très détaillée. La consultation du site de référence est aussi conseillée avant d'utiliser ces fonctions.

Le site web de référence

Le site web de référence est « www.php.net » il contient la description de toutes les fonctions PHP.

On accède à la version française des références des fonctions par :
http://www.php.net/manual/fr/funcref.php

On peut indiquer le nom (partiel) d'une fonction dans la case « search for » du haut de la fenêtre pour obtenir sa description avec quelques exemples et voir dans la partie gauche de la fenêtre toutes des autres fonctions du même thème.

Il est important de remarquer qu'au début de la description d'une fonction est indiquée, sous le nom de la fonction, la version de PHP à laquelle elle s'applique. En effet PHP évolue, de nouvelles fonctions sont ajoutées, d'autres deviennent obsolètes, parfois la liste des paramètres est modifiée.

Il est donc important de connaître la version de PHP qui exécutera vos scripts.

Ceux qui souhaitent approfondir le langage PHP au-delà de ce qui est indiqué sur le site actuel trouveront sur le site de référence un manuel complet du langage :
http://www.php.net/manual/fr/

Une fonction essentielle

Une fonction de PHP : 'phpinfo()' permet de connaître la configuration du système serveur. Elle donne non seulement le numéro de version de PHP mais d'autres renseignements sur sa configuration.

Pour cela, il suffit de créer une page sur le serveur avec uniquement ce contenu :

<?php
    phpinfo();
?>

Et d'adresser cette page sur le serveur avec un navigateur. Elle affichera tous les renseignements concernant la configuration.

Il est préférable de garder l'adresse de cette page pour vous et ne pas la lier avec le reste du site car d'éventuels "pirates" pourraient tirer profit de ces informations.

Dans le cas (conseillé) où vous utilisez un serveur local pour la mise au point de vos réalisations avant de les transférer sur un serveur web de production, il est évidemment souhaitable que ces deux serveurs aient des configurations proches.

Comme il n'est pas toujours simple de modifier la configuration du serveur de production (surtout s'il est mutualisé) il vaut mieux adapter la configuration du serveur local en modifiant le fichier de configuration « php.ini ». Pour un serveur de type « apache », il s'agit d'un fichier texte situé dans le sous-répertoire « apache » du répertoire d'installation du serveur. Ce fichier est généralement auto-documenté (commentaires en anglais) mais on trouve une référence (en français) sur :
http://www.php.net/manual/fr/ini.list.php

Autres fonctions utiles

Inclusion de fichier

Une des possibilités très intéressante du PHP et la possibilité d'inclure un fichier dans la page courante. On peut ainsi inclure dans la page, non seulement du code PHP, mais aussi de l'HTML et du JavaScript.

Pour cela il existe quatre fonctions : 'include()', 'include_once()', 'require()', 'require_once()'.

Les quatre incluent à l'emplacement de la fonction le contenu du fichier passé en paramètre. Si ce fichier n'est pas accessible, les deux fonctions 'include' produisent un message d'alerte et l'exécution du script de poursuit. En revanche, dans ce cas, les fonctions 'require' arrêtent l'exécution.

Le suffixe '_once' fait que si le fichier a déjà été inclus dans la page il ne le sera pas une seconde fois.

Notez que si le fichier inclus contient du code PHP celui-ci doit être entre '<?php' et '?>'

Exemple, fragment de page :

<head>
<title>Essai</title>
<?php include ("../inc/tete.php"); ?>
</head>

Et le fichier « tete.php »

<meta name="author" content="Marie Golote">
<meta name="robots" content="follow">
<?php
    //Des instructions PHP...
?>

 

L'inclusion, par le PHP, de fichiers feuilles de styles (CSS) ou JavaScript ne se justifie que si ces fichiers sont générés (éventuellement partiellement) par le PHP.
En effet si ces documents sont statiques il est plus efficace de les intégrer par les commandes HTML :
<link rel=...> pour les feuilles de style,
<script src=...> pour le JavaScript.

  Définition de constante

define(nom, valeur);

Le premier paramètre 'nom' devient un synonyme du second 'valeur'.

'valeur' peut être une expression.

Attention, 'nom' n'est pas une variable.

Exemple :

define("FICHIER", "dossier/page.php");
echo "FICHIER<br>";  //Affiche ; FICHIER
echo FICHIER."<br>"; //Affiche ; dossier/page.php

define('TS_JOUR', 24*3600);
echo TS_JOUR."<br>"; //Affiche ; 86400
echo (TS_JOUR*7)."<br>"; //Affiche ; 604800
//Dans ce dernier cas, les parenthèses sont obligatoires mais...
$a= TS_JOUR*7; //Correct
echo "$a<br>"; //Affiche ; 604800

Cette instruction de définition est très utilisée dans les fichiers inclus.

Arrêt du script

Deux instructions (qui ne sont pas des vraies fonctions) arrêtent immédiatement l'exécution du script, la suite ne sera pas traitée..

exit(msg);
die(msg);

Elles sont totalement équivalentes.

Le paramètre chaîne 'msg' est produit en sortie. Il peut être absent.

Il est aussi possible de mettre dans le paramètre 'msg' un entier inférieur à 255, il s'agit d'un code de retour renvoyé au processus ayant lancé le script. Dans le cas du PHP pour le web, c'est sans grand intérêt.

Gestion des variables

isset(var...);

Cette fonction renvoie 'TRUE' (vrai) si toutes les variables passées en paramètres 'var' existent est ne sont pas 'null'.

Cette fonction est très utilisée pour déterminer l'existence de variables définies par le serveur ou celles transmises par des formulaires HTML.

unset(var...);

Cette fonction supprime (détruit) les variables passées en paramètres. S'il s'agit de variables de type tableau, tout le tableau est supprimé.

A l'intérieur d'une fonction 'unset' ne supprime que les variables locales.

var_dump(var...);

Cette fonction produit (en sortie) le type et la valeur des variables passées en paramètres. Si elles sont structurées comme de type tableau, le contenu est détaillé récursivement.

Il s'agit d'une fonction intéressante pour la mise au point des applications, notamment pour observer les valeurs transmises par un formulaire HTML.

Et voici une application utile pour connaitre les variables prédéfinies du serveur.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="content-type">
    <title>
      Variables serveur
    </title>
  </head>
  <body>
    <h1>
      Variables serveur
    </h1>
    <pre>
      <?php var_dump($_SERVER); ?>
    </pre>
  </body>
</html>

On notera que la partie PHP est dans un élément HTML 'pre' afin d'avoir un affichage correctement mis en forme.

print_r(var);

Elle est très proche de 'vat_dump' mais trois différences :

Quelques fonctions sur les chaînes de caractères

Les chaînes de caractères sont considérées par le PHP comme des tableaux de caractères. Il est donc possible d'utiliser la notation indicée pour accéder à un caractère de la chaîne (on commence à 0).

$nom= 'Tartempion';
echo $nom[0]; // Affiche T
echo $nom[2]; // Affiche r

Production de texte

Ces fonctions produisent en sortie du texte qui sera intégré au code HTML de la page.

Nous avons déjà vu 'echo' et 'var_dump', en voici une intéressante pour la mise en forme de valeurs numériques.

printf(format, var...);

Cette fonction, bien connue des programmeurs C, Java, etc. affiche, selon les spécifications du paramètre 'format', le contenu des paramètres qui suivent.

Le paramètre 'format' est une chaîne qui doit indiquer pour chaque valeur à afficher le type d'affichage et la nature de la mise en forme. 

Le spécificateur de format commence par le caractère '%' et se termine par un caractère indicateur de type d'affichage : 'd' pour décimal, 'e' et 'f' pour "virgule flottante", 's' pour chaîne (entre autres). Entre les deux est indiquée la taille d'affichage.

Quelques exemples :

$entier= 1648021;
printf("%d<br>", $entier); //Affiche : 1648021
printf("%010d<br>", $entier); //Affiche : 001648021
$flottant= 299792.458;
printf("%d<br>", $flottant); //Affiche : 299792
printf("%f<br>", $flottant); //Affiche : 299792.458000
printf("%012.2f<br>", $flottant); //Affiche : 00299792.46
printf("%e<br>", $flottant); //Affiche : 299792
printf("%.0e<br>", $flottant); //Affiche : 2.997925e+5
$ch= "Bravo";
printf("%s<br>", $ch); //Affiche : Bravo
printf("%.3s<br>", $ch); //Affiche : bra

printf("%s%.3f km/s<br>","La vitesse de la lumière est de : ", $flottant);
//Qui affiche 'La vitesse de la lumière est de : 299792.458 km/s '

Cette fonction 'printf' renvoie le nombre de caractères produits. C'est rarement utilisé.

La description détaillée du paramètre 'format' est donnée dans le manuel à la fonction 'sprintf()' :
http://www.php.net/manual/fr/function.sprintf.php

Quelques fonctions de traitement de chaine

strlen(ch);

Renvoie le nombre de caractères de la chaîne 'ch'.

trim(ch); ltrim(ch); rtrim(ch);

Renvoie la chaine 'ch' en ayant supprimé les caractères invisibles (espaces, tabulateurs, sauts de ligne)  :
au début et à la fin pour 'trim', en début ou en fin uniquement pour 'ltrim' et 'rtrim' respectivement.

strpos(ch, r); stripos(ch, r); strrpos(ch, r); strripos(ch, r);

Pour 'strpos(ch; r)', renvoie la position (on commence à 0) de la première occurrence de 'r' dans 'ch'.
'stripos' renvoie la même valeur mais en ignorant majuscules/minuscules dans la recherche.

Pour 'strrpos' ce sera la position de la dernière occurrence. Idem pour 'strripos' mais en ignorant majuscules/minuscules.

strstr(ch, r); stristr(ch, r);

'strstr(ch, r)' renvoie la fin de la chaîne issue de 'ch' à partir de la première occurrence de 'r' (incluse).

'stristr' fait la même chose en ignorant majuscules/minuscules dans la recherche.

Depuis PHP 5.3 on peut ajouter un paramètre supplémentaire à ces deux fonctions :strstr(ch, r, av). Dans ce cas et s'il vaut 'TRUE', la valeur retournée est la partie de 'ch' avant la première occurrence de 'r'.

substr(ch, deb); substr(ch, deb, lg);

Renvoie la fin de la chaîne 'ch' à partir de la position 'deb' (incluse). Si 'lg' est indiqué ce sera la longueur maximale de la chaîne renvoyée.

On peut donner à 'deb' une valeur négative, dans ce cas il indiquera une position à partir de la fin de 'ch'.

explode(sep, ch); implode(sep, tab);

'explode(sep, ch)' renvoie un tableau de chaînes, fragments de 'ch' séparés par 'sep'.

'implode(sep, tab)' renvoie une chaîne formée des éléments du tableau 'tab' et reliés par 'sep'.

Ces deux fonctions sont très pratiques pour transformer une date entre les formats européen et japonais :

  $un_jour= '14-07-1789';
  $t= explode('-', $un_jour);
  $ce_jour= implode('-', array($t[2], $t[1], $t[0]));
//$ce_jour vaut '1789-07-14'

Quelques fonctions sur les tableaux

count(tab);

Renvoie le nombre d'éléments (de lignes) du tableau 'tab'.

array_key_exists(clef, tab);

Renvoie 'TRUE" si la 'clef" existe dans le tableau 'tab'. Elle est surtout utilisée pour les clefs non numériques ( tableaux associatifs).

array_search(valeur, tab);

Recherche 'valeur' comme composante dans le tableau 'tab' et si trouvée renvoie son indice (clef). Si non trouvée renvoie 'FALSE'.

Attention dans les tableaux ayant un indice 0, ne pas confondre 0 avec 'FALSE'.
Bonne solution :

  $tab= array('Jean', 'Michel','Paul');
  $cf= array_search('Jean', $tab);
  if ($cf !== FALSE)
    echo "$cf";
  else
    echo 'Inconnu';

Alors que :
    if (array_search('Jean', $tab))...
n'aurais pas permis de trouver 'Jean'.

list(var...);

Ce n'est pas une vraie fonction mais un élément du langage. Elle est utilisée pour affecter à des variables simples le contenu d'un tableau.

  $tab= array('Jean','Aymar');
  list ($prenom, $nom)= $tab;
//on aura $prenom = 'Jean' et $nom= 'Aymar'

sort(tab); rsort(tab),

Ces deux fonction trient (classent) le tableau 'tab' en ordre croissant pour 'sort' ou décroissant pour 'rsort'.

Les fonctions ne sont pas adaptées à trier un tableau de tableaux. Pour cela, il faut utiliser la fonction ci-dessous.

array_multisort(t1, t2...);

Cette fonction trie les tableaux passés en paramètres, le dernier est trié en fonction du tri des précédents. Cette fonction est adaptée au tri des tableaux multidimensionnels mais il faut passer par des tableaux intermédiaires.

Exemple, trier des ouvrages selon les auteurs et (ensuite) les titres.

$oeuvres= array(
  array("Zola", "Emile", "Nana"),
  array("Corneille", "Pierre", "Polyeucte"),
  array("Zola", "Emile", "Germinal"),
  array("Corneille", "Pierre", "Horace"),
  array("Montaigne", "Michel", "Essais")
);

$auteurs= array();
foreach ($oeuvres as $elt)
  $auteurs[]= $elt[0];

$titres= array();
foreach ($oeuvres as $elt)
  $titres[]= $elt[2];

array_multisort($auteurs, $titres, $oeuvres);
unset($auteurs, $titres);

On crée deux tableaux : $auteurs et $titres.
La fonction
array_multisort() va classer les tableaux  $auteurs et $titres, puis le tableau $oeuvres selon les tris des tableaux  précédents.

Quelques fonctions sur les dates et heures

Il n'y a pas vraiment de type date et heure en PHP. Le système utilise le "timestamp" UNIX qui est un nombre entier donnant le nombre de secondes écoulées depuis le 1° janvier 1970 à 0h.
Come il s'agit de nombres il est donc facile de faire des opérations arithmétiques et de comparaisons sur ces valeurs.

time();

Renvoie la date-heure courante du serveur en secondes depuis le 01-01-1970 00:00:00.

Attention aux fuseaux horaires, cela correspond à l'heure locale du serveur.

microtime(); microtime(TRUE);

'microtime()' renvoie une chaîne de caractères indiquant la date_heure courante du serveur comportant deux valeurs numériques (sous forme texte) séparées par un espace. La première est le nombre de microsecondes depuis le début de la seconde actuelle exprimée en seconde donc sous la forme "0.xxxxxx00", la suivante le nombre de secondes écoulées depuis le 01-01-1970 00:00:00.

'microtime(TRUE)' renvoie le nombre de secondes écoulées depuis le 01-01-1970 00:00:00.0 sous la forme d'un nombre à virgule.

Attention, tous les serveurs ne disposent pas de ces fonctions.

mktime(heure, minute, seconde, mois, jour, annee);

Renvoie une valeur date-heure correspondant aux paramètres. Ceux-ci peuvent être omis en partant de la fin, ils seront remplacés par les valeurs courantes.

date(fmt, dh);

Renvoie une chaîne de caractères représentant date et heure du paramètre 'dh' selon le format défini par le paramètre 'fmt'.  Ce paramètre est une chaîne de caractères où certains représentent des composantes de date et heure.

Voici quelques caractères de format :

Caractère Signifie
Y Année sur 4 chiffres
m Numéro du mois sur 2 chiffres avec éventuellement 0 initial
d Numéro du jour sur 2 chiffres avec éventuellement 0 initial
H Heure sur 2 chiffres avec éventuellement 0 initial
i Minute sur 2 chiffres avec éventuellement 0 initial
s Seconde sur 2 chiffres avec éventuellement 0 initial

Dans la chaîne de format les caractères qui ne sont pas reconnus comme symbole conservent leur valeur. On peut aussi 'neutraliser' un caractère de symbole en le préfixant par '\'.

Voir la liste complète des spécificateurs :
http://www.php.net/manual/fr/function.date.php

Exemple, pour connaitre l'heure des lever et coucher de soleil à Lyon :

$dh= time();
$soleil= date_sun_info($dh, 45.757, 4.828);
$fmt_h= "H\h i\m\n s\s";
echo "Le ".date("d-m-Y");
echo "<br> soleil lever : ".date($fmt_h, $soleil['sunrise']);
echo "<br> soleil coucher : ".date($fmt_h, $soleil['sunset']);

La fonction 'date_sun_info' renvoie un tableau associatif donnant (entre autres) les heures des lever, coucher du soleil pour une date,  une latitude et une longitude données.

A suivre...

Avec des fonctionnalités adaptées aux pages web.