Accueil

Traduction

Débuter en programmation web - sommaire

Débuter en programmation web - recherche

L'auteur : Patrick Darcheville

Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site

Les fonctions en PHP

PHP propose une bibliothèque de fonctions natives impressionnante.
Grâce à ces fonctions prédéfinies le travaile du développeur est simplifiée.
Attention les fonctions prédéfinies sont regroupées en modules. Tous les modules ne sont pas forcément installés sur le serveur ...

Dans le premier chapitre PHP je vous ai montré que grâce à la fonction date() c'était un jeu d'enfant d'afficher l'instant présent dans une page.

Etude plus approfondie de la fonction date

Code de la partie BODY de la page :

Attention les arguments de la fonction date() sont sensibles à la casse.

Ainsi H affiche l'heure courante au format 24 alors que h affiche l'heure courante au format 12.
M affiche le nom du mois en anglais (3 premières lettres) alors que m affiche le rang du mois.
D affiche le nom du jour en anglais (3 premières lettres) alors que d affiche le rang du jour dans le mois.
Y affiche l'année sur 4 chiffres alors que y affiche l'année sur 2 chiffres.

Mais attention l'heure locale est fonction de la situation géographique du serveur en lui-même. En effet un serveur situé aux USA vous donnera l'heure courante aux "States" ...

Le rendu :

Quelques fonctions prédéfinies utiles

Il y a plusieurs centaines de fonctions prédéfinies ...

Fonctions d'informations sur les variables

Il s'agit de fonctions qui retournent une valeur logique (true ou false).

isset(variable)

Cette fonction retourne true si la variable existe.
Fonction très utile lorsque le formulaire et le traitement PHP sont dans la même page pour tester si la soumission est effective ou non.

is_string(variable)

Retourne true si la variable contient une chaîne.

is_numeric(variable)

Retourne true si la variable contient un nombre.

is_int(variable)

Retourne true si la variable contient un entier.

is_float(variable)

Retourne true si la variable contient un réel.

empty(variable)

Retourne true si la variable est vide (zéro) ou chaîne vide.

Exemple

Le code PHP :

$variable ='Merlin l\'enchanteur' ;
On peut insérer un apostrophe dans une chaîne délimitée par des guillemets simples à condition d'échapper ce caractère c'està dire d'écrire \'. On aurait pu aussi délimiter la chaîne avec des guillemets doubles pour ne pas devoir échapper.

Pour chaque fonction on peut construire la fonction inverse en faisant précéder du caractère ! (différent).
Donc !is_float() veut dire "not is float" et retourne true si le contenu n'est pas un réel.
!isset() veut dire "not is isset" et retourne true si la variable n'est pas définie.
etc.

La fonction unset(variable) permet de supprimer une variable.

Le rendu :

Fonctions pour manipuler les chaînes

strlen(chaîne)

Cette fonction retourne la longueur de cette chaîne.

strtolower(chaîne)

Cette fonction convertit la chaîne en minuscules.

strltoupper(chaîne)

Cette fonction convertit la chaîne en majuscules.

str_shuffle(chaîne)

Cette fonction "crypte" la chaîne en mélangeant les caractères qui la compose.

addslashes(chaîne)

Cette fonction échappe les guillemets contenus dans la chaîne. C'est à dire remplace ' par \' et " par \".
Il est logique que vous doutiez pour l'instant de l'intérêt pratique de cette fonction. Or croyez moi elle est très utile (voir le chapitre "Site avec base de données".

htmlentities(chaîne)

Cette fonction remplace dans une chaîne les lettres accentuées par l'entité de caractère correspondante. Par exemple é est remplacée par & eacute; et è par & egrave;
Là encore il est légitime que vous vous disiez : quel est l'intérêt ???

Vous verrez dans le chapitre "site avec base de données" que dans le cadre de la saisie d'un texte long (destiné à être stocké dans un champ d'une table) il est préférable de convertir les lettres accentuées en entités de caractère et d'échapper les guillemets

Exemple

Le code PHP :

Notez l'emploi du HTML5 dans le formulaire avec les nouveaux attributs required, placeholder, pattern.
Donc la soumission de champs vides ou remplis avec des données invalides est impossible !

Dans le premier champ on ne peut saisir que des lettres minuscules ou des espaces ([a-z\ ]).
Dans le deuxième champ on ne peut saisir que des lettres majuscules ou des espaces ([A-Z\ ]).

Pour le code PHP vous devez maintenant comprendre le test if (isset($_GET['nom'])) : effectuer le traitement PHP uniquement si il y a eu soumission donc si la variable $_GET['nom'] existe.

Le rendu :

Créer et utiliser ses propres fonctions

Vous ne trouverez pas dans la liste impressionnante des fonctions prédéfinies PHP une fonction pour obtenir la circonférence et la surface d'un cercle à partir de son rayon !
Mais pas de problème ; la définition d'une fonction personnelle est facile.

Le code de la page (partie BODY)

Dans le formulaire la méthode d'envoi est POST. Notez bien que la valeur saisie n'apparaît plus dans la barre d'url après soumission.
Ladite soumission est effectuée via JavaScript (et non pas par un bouton de type submit). C'est une technique pour saisir très vite des données.

Dans le code PHP la fonction fcercle() est définie avec le mot réservé function. l
Cette fonction calcule la circonférence et l'aire du cercle à partir d'un paramètre (le rayon) puis affiche circonférence et rayon.

Dans le programme principal il n'y a plus qu'à appeler la fonction avec passage du rayon en paramètre :
fcercle($rayon);

Le rendu :

Essayez de saisir une chaîne de caractères telle "aa" dans le champ.
Et oui c'est possible et naturellement le script PHP retourne alors 0 tant pour la circonférence que pour la surface.

Les contrôles de saisie HTML5 avec attributs pattern & required) ne sont en effet opérants que si la soumission des données est effectuée avec un bouton de type submit. Or ici c'est une instruction JS qui effectue la soumission ...

Débuggage

Puisque le contrôle HTML n'est pas disponible il faut créer un contrôle de saisie en PHP !

Le code de la version corrigée :

L'instruction if est argumentée avec une condition complexe.
Les deux éléments de la condition complexe sont bâtis sur une fonction PHP et reliées par un opérateur logique. J'aurai l'occasion d'y revenir dans le chapitre sur les structures de contrôle en PHP.

Le rendu :

Saisissez une chaîne dans le champ et observez !

Même s'il existe un bouton de soumission de type "submit" (autorisant les contrôles HTML) le contrôle de saisie en PHP n'est pas facultatif. En effet un visiteur compétent en informatique mais mal intentionné, peut très bien supprimer les attributs de contrôle dans le formulaire pour sa saisie.

Fonction retournant une valeur

Jusqu'à présent les résultats (circonférence et surface du cercle) sont affichés par la fonction.

Or il est préférable que la fonction retourne une valeur au profit du programme principal qui pourra alors utiliser ce résultat pour d'autres traitements.
Il suffit d'utiliser dans la fonction un instruction basée sur le mot clé return.
Alors l'appel de la fonction vaut traitement et affichage du résultat.

Le code HTML et HTML est modifié comme suit :

Pour la saisie du rayon un champ de type "number" (nouveau type de INPUT introduit par HTML5).
Il est impossible de saisir des lettres dans un champ de type "number" !

L'instruction JS qui soumissionnait est remplacé par un bouton de commande de type submit.
Ainsi les contrôles côté client (par navigateur ) sont effectifs.

Le script PHP :
Il faut ici deux fonctions : une qui retourne la circonférence à partir du rayon et une autre qui retourne la surface.

L'affichage des résultats se fait désormais dans le programme principal par le simple appel des fonctions.

Le rendu :