FI SiCOM
FST 2019-2020
Said Najah 1
Documentation en ligne
Exemple :
http://fr.php.net/echo
Said Najah 2
Modèle
requête
réponse
appel de la page
Base de Script
données extraction
exécution
Document
de données PHP Html
MySQL
Said Najah 3
Histoire du PHP
Said Najah 4
Histoire du PHP
Said Najah 5
Intégration d’un script dans une page
Les pages web sont au format html.
Les pages web dynamiques générées avec PHP4 sont au
format php.
Le code source php est directement insérer dans le fichier
html grâce au conteneur :
<?php … ?>
Exemple:
<html> Autres syntaxes d’intégration :
<body> <? … ?>
<?php <script language=‘’php’’> … </script>
echo ’’Bonjour’’; <% … %>
?>
</body>
</html> Said Najah 6
Exemple de script
Exemple de script, code Autre écriture du même script :
source (côté serveur) : <?php
<html> echo ‘’<html>\n<body>\n’’;
<body> echo ‘’<h1>Mon premier script</h1>\n’’;
<h1>Mon premier script</h1> echo ‘’Bonjor\n’’;
<?php echo ‘’Bonjour\n’’; ?> echo ‘’</body>\n</html>\n’’;
</body> ?>
</html>
Code source (côté client) de la
Résultat affiché par le navigateur :
page essai.php résultant du script
Said Najah 7
Commentaires
<?php
// commentaire de fin de ligne
/* commentaire sur plusieurs lignes */
# commentaire de fin de ligne comme en Shell ?>
Said Najah 8
Variables, constantes et types
Les variables est le conteneur d’une valeur d’un des types utilisés en PHP
La déclaration des variables n’est pas obligatoire en début de scripte.
Said Najah 9
Variables, constantes et types
Said Najah 10
Variables, constantes et types
On peut à la manière des pointeurs en C faire référence à une
variable grâce à l’opérateur & (ET commercial).
Exemple 1:
$toto = 100; // la variable $toto est initialisée à la valeur 100
$foobar = &$toto; // la variable $foobar fait référence à $toto
$toto++; // on change la valeur de $toto
echo $foobar; /* qui est répercutée sur $foobar qui
vaut alors 101*/
Said Najah 11
Variables, constantes et types
Said Najah 12
Variables, constantes et types
Quelques fonctions :
empty($var) : renvoie vrai si la variable est vide
isset($var) : renvoie vrai si la variable existe
unset($var) : détruit une variable
gettype($var) : retourne le type de la variable
settype($var, “type”) : convertit la variable en type “type”(cast)
is_long(), is_double(), is_string(), is_array(), is_object(),
is_bool(), is_float(), is_numeric(), is_integer(), is_int()…
Said Najah 13
Variables, constantes et types
Said Najah 14
Variables, constantes et types
La portée d’une variable est limitée au bloc dans lequel elle a été
crée. Une variable locale à une fonction n’est pas connue dans le reste
du programme. Tout comme une variable du programme n’est pas
connue dans une fonction. Une variable crée dans un bloc n’est pas
connue dans les autres blocs, mêmes supérieurs.
Opérateurs d’assignement :
= (affectation), *= ($x*=$y équivalent à $x=$x*$y), /=, +=, -=, %=
Opérateurs logiques :
and, && (et), or, || (ou), xor (ou exclusif), ! (non)
Said Najah 15
Variables, constantes et types
Opérateurs arithmétiques :
Opérateur description
+ addition
- soustraction
* Multiplication
/ Division
% Modulo
++ et -- Décrémentation et
incrémentation (Ces
deux derniers peuvent
être pré ou post fixés
Said Najah 16
Variables, constantes et types
Il existe en php un grand nombre de constantes prédéfinis,
que vous pouvez notamment utiliser dan les fonctions comme
paramètres permettant de définir des options.
Le code suivant:
<?php
Print_r(get_defined_constants( ));
?>
Permet d’afficher l’ensemble des constantes existantes.
L’utilisateur peut définir des constantes dont la valeur est
fixée une fois pour toute.
Les constantes ne portent pas le symbole $ (dollars) en début
d’identificateur et ne sont pas modifiables.
Said Najah 17
Variables, constantes et types
define(‘’author’’,’’Foobar’’);
echo author; // affiche ‘Foobar’
Exemple 2 :
define(“MY_YEAR”,1980);
echo MY_YEAR; // affiche 1980
exemple
Said Najah 18
Variables, constantes et types
Said Najah 19
Contrôle d’état d’une variable
Lors de l’envoi de données d’un formulaire vers le serveur, les
scripte qui reçoit les informations doit pouvoir détecter l’existence
d’une réponse dans les champs du formulaire.
Les fonctions isset() et empty() permettent ce type de contrôle.
La fonction isset(), dont la syntaxe est la suivante:
Boolean isset( );
Retourne la valeur FALSE si la variable $var n’est pas initialisée
ou a la valeur NULL et la valeur TRUE si elle a une valeur
quelconque.
La fonction empty(), dont la syntaxe est la suivante:
Boolean empty( );
Retourne la valeur TRUE si la variable $var n’est pas initialisée a
la valeur 0 ou NULL ou la chaine “0” et la valeur FALSE si elle a
une valeur quelconque.
Said Najah 20
Les Booléens
L’utilisation d’expressions booléennes est la base de la création des
instructions conditionnelles, qui permettent de gérer le déroulement d’un
algorithme.
Said Najah 22
Les Booléens
Les operateurs logiques
Opérateur Description
OR Test si l’un au mois des opérandes
à la valeur TRUE.
|| Equivaut à l’opérateur OR mais n’ a
pas la même priorité.
XOR Test si l’un et un seul des
opérandes à la valeur TRUE.
AND Test si les eux opérandes en la
même valeur TRUE
&& Equivaut à l’opérateur AND mais n’
a pas la même priorité
! Operateur unaire de négation, qui
inverse la valeur de l’opérande.
Said Najah 23
Les Structures de contrôle
Structures conditionnelles (même syntaxe qu’en langage C) :
if( ... ) {
…
} elseif {
…
} else {
…
}
switch( … ) {
case … : { … } break
…
default : { … }
}
Said Najah 24
Les Structures de contrôle
Structures de boucle (même syntaxe qu’en langage C) :
for( … ; … ; … ) {
…
}
while( … ) {
…
}
do {
…
} while( … );
foreach($tableau as $valeur)
{
// bloc utilisant la valeur de l’élément courant
}
Said Najah 25
Les Structures de contrôle
Signalons un opérateur très spécial qui équivaut à une structure
conditionnelle complexe if then else à la différence qu’il renvoie
un résultat de valeur pouvant ne pas être un booléen : l’opérateur
ternaire.
Syntaxe :
(condition)?(expression1):(expression2);
while($nbr = $tab[$i++]) {
echo $nbr.’’<br />’’;
if($nbr == $stop)
break;
}
L’instruction continue n’arrête pas la boucle en cours mais seulement
l’itération en cours.
Exemple :
Said Najah 29
Chaînes de caractères
Une variable chaîne de caractères n’est pas limitée en nombre de
caractères. Elle est toujours délimitée par des simples quotes ou
des doubles quotes.
Exemples :
$nom = ‘’Pascal’’;
$prenom = ‘Hugo’;
Les doubles quotes permettent l’évaluation des variables et
caractères spéciaux contenus dans la chaîne (comme en C ou en
Shell) alors que les simples ne le permettent pas.
Exemples :
Said Najah 30
Chaînes de caractères
\n nouvelle ligne
\r retour à la ligne
\t tabulation horizontale
\\ antislash
\$ et \ “ caractère dollars et double quote
Said Najah 31
Chaînes de caractères
Opérateur de concaténation de chaînes : . (point)
Exemple 1 :
$foo = ‘’Hello’’;
$bar = ‘’Word’’;
echo $foo.$bar;
Exemple 2 :
$name = ‘’Henry’’;
$whoiam = $name.‘’IV’’;
Exemple 3 :
$out = ‘Patati’;
$out = ‘’ et patata…’’;
Said Najah 32
Chaînes de caractères
Affichage formaté:
Un affichage formaté permet d’obtenir des résultats uniformes, par exemple,
pour aligner des chaînes sur plusieurs lignes ou des nombres dans un format
particulier, comme un nombre décimales fixe et une superposition correcte
des chiffres en colonnes pour des montant financiers.
On deux fonctions:
Printf( ) et sprintf( )
Said Najah 33
Chaînes de caractères
La syntaxe de printf( ) est la suivante:
Void printf(sring “format”, string $ch1, string $ch2, …, $chN)
Cette fonction affiche directement le contenu des chaines $ch1,$ch2,
….,$chN selon le format spécifié dans la chaine “Format”.
Said Najah 34
Chaînes de caractères
Caractère Signification
%b Interprète la chaine $ch comme un entier et l’affiche en binaire:
$ch=“89”;
Printf (“En binaire $ch s’ecrit %b <br/> ”,$ch);
//Affichage: en binaire 89 s’ecrit 1011001
%c Interprète la chaine $ch comme un entier et affiche le caractère
dont le code ASCII correspond à ce nombre :
$ch=“115”;
Printf (“Le caratère de code $ch est %c <br/> ”,$ch);
//Affichage: Le caractère de code 115 est s
%f Interprète la chaine $ch comme un nombre de type double et
l’affiche avec sa partie decimale à 6 chiffres. Les carctères non
numeriques de $ch ne sont pas pris en compte:
$ch=“25.52 mètres”;
Printf (“La longueur est de %f m ”, $ch);
Affichage: La longueur est de 25.52.m
Said Najah 35
Chaînes de caractères
%d Interprète la chaine $ch comme un entier signé et
l’affiche comme un nombre en base 10 :
$ch=“-25”;
Printf (“La valeur de \$ch est %d ”,$ch);
//Affichage: -25
%o Interprète la chaine $ch comme un entier et l’affiche en
octal :
$ch=252;
Printf (“En octal le nombre $ch s’écrit %o ”,$ch);
//Affichage: En octal le nombre 252 s’écrit 374
%s Interprète la chaine $ch comme une chaine et l’affiche
telle quelle:
$ch1=“Monsieur”; $ch2=“Schtroumpf”
Sprintf(“bonjour ,%s %s bravo !”, $ch1,$ch2)
Equivaut à:
Echo “ bonjour $ch1 $ch2. bravo!”
Said Najah 36
Chaînes de caractères
Longueur d’une chaîne de caractères
Pour déterminer le nombre de caractère d’une chaine,
utilisez la fonction strlen( ), dont la syntaxe est la
suivante:
Int strlen( string $ch).
La fonction strlen() peut servir, par exemple, à vérifier
qu’un code postal saisi par un internaute comporte bien
cinq chiffres.
Exemple:
$code="7508”;
If ( strlen($code) !=5 ) echo “code erroné !”
Said Najah 37
Chaînes de caractères
Mise en forme des chaînes
Il est souvent nécessaire de remettre en forme les chines utilisées dans
les scripts, notamment lorsqu’elles viennent d’ une source externe,
comme les saisies faite par des visiteurs dans un formulaire.
PHP offre plusieurs fonctions de conversion de la casse d’une chaine
utilisable pour normaliser l’affichage, quelle que soit la casse utilisée par
un visiteur pour donner des informations.
Il s’agit des fonctions:
Said Najah 40
Chaînes de caractères
Comparaison de chaines:
Les opérateurs de comparaison usuels sont utilisables avec les chaînes.
Cela inclus bien sur les operateurs d’égalité (= =) et d’identité (= = =), ce
dernier ne permettant d’obtenir la valeur TRUE dans une expression
conditionnelle que si les deux opérandes ont non seulement la même
valeur mais aussi le même type
Said Najah 41
Les expressions régulières
Une expression régulier ou expression rationnelle,
permet de définir un modèle général, appelé motif de
l’expression régulière, au moyen de caractères
particuliers, représentatifs d’un ensemble de chaînes de
caractères très variées.
L’écriture des motifs d’expression régulier est la partie
la plus rébarbative du travail de codage. Les motifs sont
toujours contenus dans des chaines de caractères, et
donc entre guillemets.
Pour recherche la présence d’un caractère particulier, il
suffit de l’inclure entre des guillemets simple ou
doubles. Pour rechercher le caractère @, vous écrivez
le modèle: $modele=“@”.
Said Najah 42
Les expressions régulières
Said Najah 43
Les Tableaux
La fonction array( ) permet de créer de manière rapide des tableaux
indicés ou associatifs. C’est elle qui sera le plus souvent utilise pour
la création de tableaux.
La façon la plus élémentaire de créer un tableau indicé consiste à
définir individuellement une valeur pour chacun des ces éléments, et
ce de la manière suivante:
$tab[n]=valeur;
ou n est un indice entier quelconque, et valeur un scalaire ou une
variable de type integer, double, boolean, string et array.
Pour créer un tableau composé de plusieurs éléments en une seul
opération, vous disposez de la fonction array().
$tab=array( valeur0, valeur1, …, valeurN)
Said Najah 44
Les Tableaux
Les tableaux associatifs:
La même fonction array( ) permet aussi de créer rapidement un
tableau associatif en définissant pour chacun de ses éléments une
clé et une valeur.
La syntaxe :
$tabasso=array(“cléA” =>valeurA, “cléB” =>valeurB,… “cléZ”
=>valeurZ)
Chaque clé est une chaine de caractère délimitée par des guillemets.
Pour lire la “valeurA” vous écrivez $tabasso[“cléA”]
Said Najah 45
Les Tableaux
Exemple 2 :
$personne[‘’Nom’’] = ‘’César’’;
$personne[‘’Prénom’’] = ‘’Jules’’;
Said Najah 46
Les Tableaux
Compter le nombre de valeurs d’un tableau
$result =array_acount_values($tab)
retourne le tableau $result, ayant pour clé les valeurs du tableau $tab et pour
valeur associe à chaque clé le nombre de fois que chacune apparaît dans le
tableau $tab.
Exemple: comptage du nombre de valeurs
<?php
$tab=array (“Web”, “Internet”, “PHP” , “JavaScript”, “PHP” , “ASP” , “PHP”,
“ASP” );
$result=array_count($tab);
echo “Le tableau \$tab contient ”.count($tab). “éléments <br>”;
echo “Le tableau \$tab contient ”.count($result). “valeurs différentes <br>”;
printf_r($result);
?>
Résultat: le tableau $tab contient 8 éléments
le tableau $tab contient 5 valeurs différentes
Array( [Xeb]=>1 [Internet]=>1 [PHP]=>3 [JavaScript]=>1 [ASP]=>2)
Said Najah 47
Les Tableaux
La boucle for a besoin d’un paramètre d’arrêt. Vous allez employer pour
cela la fonction count( ), qui retourne le nombre total d’éléments de la
boucle. L’utilisation da la variable $i comme compteur de la boucle
permet de parcourir l’ensemble des valeurs des tableau.
Exemple:
<? PHP
$montab=array(“Paris”, “London”, “Brussel”);
For ($i=0;$i<count($montab);$i++)
{echo “L’elemnt $i est $montab[$i] <br>”;}
?>
Résultat: L’element 0 est Paris
L’element 1 est London
L’element 2 est Brussel
Said Najah 48
Les Tableaux
Said Najah 49
Les Tableaux
Said Najah 50
Les Tableaux
Pour pallier les inconvénient des autre méthodes, il est possible d’utiliser
une autre méthode de lecture, cette dernier fait appel à la fois à une
fonction while et à la fonction each().
La fonction each() reçoit comme paramètre une variable le type array est
retourne un tableau à quatre éléments qui contient les informations sur
l’élément courant du tableau passe en paramètre puis de pointe sur
l’élément suivant.
Syntaxe de fonction each( ):
$element=each($tab);
$tab est le tableau à lire et $element le tableau de résultats contenant les
informations sur l’élément courant de $tab, sous la forme:
$element[0], qui contient l’indice de l’élément courant
$element[1], qui contient la valeur de l’élément courant
$element[“key”], qui contient la clé de l’élément courant
$element[“value”], qui contient la valeur de l’élément courant
Said Najah 51
Les Tableaux
Exemple 3 : Lecture à l’aide de la fonction each( )
<? PHP
//****** Lecture d’un tableau indicé***********
$montab=array(“Paris”, “London”, “Brussel”);
$montab[9]=“Berlin”; //ajout d’élément au tableau
Reset($montab); //pointer sur le premier élément
While(isset($element=each($montab))
{
echo “L’elemnt d’indice $element[0] et à la valeur $element[1] <br>”;
//$i++;
}
?>
Said Najah 54
Les Tableaux
L’intérêt de cette fonction dans la lecture des tableaux peut donc
apparaît limité. Si vous l’associez cependant à la fonction each(),
son rôle appréciable devient plus évident.
En effet each( ) déplace le pointeur interne sur les éléments
suivants, tandis que list( ) permet de lire les deux premier
éléments du tableau retourné par la fonction each( ), élément qui
contient respectivement l’indice et la valeur du tableau à lire.
List($x,$y)=each($tab)
La variable $x contient l’indice ou la clé et $y la valeur associée.
L’ensemble list( ) et each( ) placé comme expression booléenne
dans une boucle while vous permet donc de lire l’intégralité du
tableau en récupérant les indices, ou les clés selon le cas.
Said Najah 55
Les Tableaux
Said Najah 56
Les Tableaux
//*********************************************
// Lecture d’un tableau indicé
//*********************************************
$montab=array("Paris","London","Brussel");
While(list($indice,$valeur) = each($montab))
{
echo"L’element d’indice <b>$indice</b> a la valeur <b>$valeur</b> <br>";
}
echo"<hr>";
//*********************************************
// Lecture d’un tableau associatif
//*********************************************
$montab=array("France"=>"Paris","Great
Britain"=>"London","Belgie"=>"Brussel");
While(list($cle, $valeur) = each($montab))
{
echo"L’element de cle <b>$cle</b> a la valeur <b>$valeur</b> <br>";
}
?>
Said Najah 57
Les Tableaux
Said Najah 58
Les Tableaux
L’instruction foreach ( )
Plus pratique encore que les méthodes précédentes, l’instruction
foreach() n’est utilisable qu’à partir des version 4 de PHP. Elle se
révèle particulièrement efficace pour les tableaux associatifs mais
fonctionne également pour les tableaux indicé.
Contrairement à la boucle for, l’instruction foreach() ne nécessite pas
de connaître par avance le nombre d’éléments du tableau à lire.
Pour les tableaux indicé vous écrivez le code suivant:
foreach($tab as $valeur)
{
// bloc de code utilisant les valeurs de la variable $valeur;
}
Pour les tableaux associatif vous écrivez le code suivant :
foreach($tab as $cle=>$valeur)
{
// bloc de code utilisant les valeurs de la variable $cle et
$valeur;
}
Said Najah 59
Les Tableaux
<?PHP
//**********************************************************************************
// Lecture d’un tableau indicé
//***********************************************************************************
$montab=array("Paris", "London", "Brussel");
echo "<H3> Lecteur des valeur des éléments </H3>";
foreach($montab as $ville)
{
echo "<b>$ville</b> <br>";
}
echo"<hr>";
//*********************************************************************************
// Lecture d’un tableau indicé avec récupération des indices
//********************************************************************************
echo "<H3> Lecteur des indices et valeur des éléments </H3>";
foreach($montab as $indice=>$ville)
{
echo "L'element d'indice <b>$indice</b> a la valeur <b>$ville</b> <br>";
}
echo"<hr>"; Said Najah 60
Les Tableaux
//********************************************************************************
// Lecture d’un tableau associatif avec récupération des clés
//********************************************************************************
$tab=array("France"=>"Paris","Great Britain"=>"London","Belgie"=>"Brussel");
echo "<H3> Lecteur des clés et valeur des éléments </H3>";
foreach($tab as $cle=>$ville)
{
echo "L'element de clé <b>$cle</b> a la valeur <b>$ville</b> <br>";
}
echo"<hr>";
?>
Said Najah 61
Les Tableaux
Lecteur des valeur des éléments
Paris
London
Brussel
Said Najah 62
Les Tableaux
PHP dispose d’un grand nombre de fonction permettant d’effectuer
toutes sorte de manipulations de tableaux existants:
Extraire une partie d’un tableaux:
$sous_tab=array_slice(array $tab, int ind, int nb)
Si ind et nb sont positifs, le tableaux $sous_tab contient nb
éléments du tableau initial extrait en commençant à l’indice ind.
Si ind est négatif et nb positifs, le compte des éléments se fait
en partant de la fin du tableaux $tab, le dernier se trouvant
affecte virtuellement de l’indice -1, l’avant-dernier de l’indice
-2, et ainsi de suite. Le nombre nb désigne encore le nombre
d’élément à extraire.
Si ind est positif et nb négatif, le tableau $sous_tab contient les
éléments de $tab extraits en commençant par l’indice ind et
s’arrêtant à celui qui a l’indice négatif virtuel nb (toujours en
commençant par la fin).
Si ind et nb négatif, le tableau $sou_tab contient les elements de
$tab extraits en commencant à l’indice negatif ind et en
s’arretant à celui d’indice negatid ind
Said Najah 63
Les Tableaux
Ajouter et enlever des éléments:
La fonction int array_push($tab, $val1,$val2,…,$valN) permet
d’effectuer divers manipulation d’ajout ou de retrait d’éléments.
Il ajoute en une seule opération les N éléments passes en paramètre
à la fin du tableau désigné par la variable $tab.
Pour ajouter des éléments au début d’un tableau, vous pouvez
utiliser la fonction : int array_unshift($tab, val1, val2, …, valN)
Réciproquement, vous pouvez supprimer des éléments d’un tableau
à l’aide de la fonction: array_pop($tab) qui supprime le dernier
élément du tableau $tab et retourne cet élément s’il existe ou la
valeur NULL dans le cas contraire. Par exemple, le tableau est vide
ou si le paramètre $tab n’est pas un type array.
Pour supprimer le premier élément d’un tableau: array_shift($tab)
qui retourne la valeur de l’élément supprimé
Il est possible de supprimer un élément d’indice ou de clé
quelconque du tableau $tab à l’aide de la fonction unset( ) en
précisent explicitement le nom de l’élément et son indice ou sa clé
Said Najah 64
Les Tableaux
Quelques fonctions:
count($tab), sizeof : retournent le nombre d’éléments du tableau
in_array($var,$tab) : dit si la valeur de $var existe dans le tableau $tab
list($var1,$var2…) : transforme une liste de variables en tableau
range($i,$j) : retourne un tableau contenant un intervalle de valeurs
shuffle($tab) : mélange les éléments d’un tableau
sort($tab) : trie alphanumérique les éléments du tableau
rsort($tab) : trie alphanumérique inverse les éléments du tableau
implode($str,$tab), join : retournent une chaîne de caractères contenant les
éléments du tableau $tab joints par la chaîne de jointure $str
explode($delim,$str) : retourne un tableau dont les éléments résultent du
hachage de la chaîne $str par le délimiteur $delim
array_merge($tab1,$tab2,$tab3…) : concatène les tableaux passés en
arguments
array_rand($tab) : retourne un élément du tableau au hasard
Said Najah 65
Les Tableaux
Quelques fonctions :
array_count_values($tab) : retourne un tableau contenant les valeurs du
tableau $tab comme clés et leurs fréquence comme valeur (utile pour
évaluer les redondances)
array_keys($tab) : retourne un tableau contenant les clés du tableau
associatif $tab
array_values($tab) : retourne un tableau contenant les valeurs du tableau
associatif $tab
array_search($val,$tab) : retourne la clé associée à la valeur $val
Quelques fonctions alternatives pour le parcours de tableaux (normaux
ou associatifs) :
reset($tab) : place le pointeur sur le premier élément
current($tab) : retourne la valeur de l’élément courant
next($tab) : place le pointeur sur l’élément suivant
prev($tab) : place le pointeur sur l’élément précédant
each($tab) : retourne la paire clé/valeur courante et avance le pointeur
L’élément d’un tableau peut être un autre tableau.
Les tableaux associatifs permettent de préserver une structure de
données.
Said Najah 66
Les Tableaux
Il est possible d’effectuer des opérations complexes sur les tableaux en
créant par exemple sa propre fonction de comparaison des éléments et
en la passant en paramètre à une fonction de tri de php.
usort($tab, ‘’fonction’’);
Trie les éléments grâce à la fonction fonction définie par l'utilisateur
qui doit prendre 2 arguments et retourner un entier, qui sera inférieur,
égal ou supérieur à zéro suivant que le premier argument est considéré
comme plus petit, égal ou plus grand que le second argument. Si les
deux arguments sont égaux, leur ordre est indéfini.
Attention, les variables tableaux ne sont pas évaluées lorsqu’elles sont
au milieu d’une chaîne ce caractère délimitée par des doubles quottes.
Exemple :
Said Najah 67
Les Formulaires
Said Najah 68
Les Formulaires
Said Najah 69
Les Formulaires
<INPUT>: La balaise <input> permet de créer des composants d’aspect et
de rôle très différents. La différenciation de ces composantes d’effectue en
définissant la valeur de leur attributs et notamment de l’attribut type.
Said Najah 71
Les Formulaires
Said Najah 72
Les Formulaires
Said Najah 73
Les Formulaires
Said Najah 74
Les Formulaires
Said Najah 75
Les Formulaires
Said Najah 76
Les Formulaires
Said Najah 77
Les Formulaires
L’élément <textarea>
A l’instar de l’élément <input type=“hidden”/>, L’élément
<textarea>crée un champ de saisie de texte mais, contrairement au
précédent, en permettant la saisie sur plusieurs lignes.
Les attributs: clos, rows qui donnent respectivement le nombre de
colonnes et de lignes
De la zone texte.
<textarea name= “commentaire” cols=“45” rows=“8” />
Tapez vos commentaire ici
</textarea>
Said Najah 78
Les Formulaires
L’élément <select>
Crée une liste de sélection d’options parmi lesquelles
l’utilisateur fait un choix, chaque option devant être définie par
un élément <option> séparé.
<select name=“maliste ”>
<option value=“valeur 1”> Texte choix 1</option>
<option value=“valeur 2”> Texte choix 2</option>
<option value=“valeur 3”> Texte choix 3</option>
</select>
Les attributs:
name= “nom_select”. Obligatoire, dans le nom de la liste.
size= “Nombre” . Détermine le nombre de choix visibles
simultanément. Par défaut, sa valeur est 1.
Said Najah 79
Les Formulaires
Said Najah 80
Les Formulaires
Said Najah 81
Les Formulaires
Valeurs uniques:
Les valeurs uniques proviennent des champs de
formulaire dans lesquels l’utilisateur ne peut entrer
qu’une valeur, un texte par exemple, ou ne peut faire
qu’un seul choix (bouton radio, liste de sélection à
choix unique).
Ces valeurs sont contenues sur le serveur dans des
tableaux associatifs dits superglobaux appelés $_POST
et $_GET, selon la méthode choisie. Les clés de ces
tableaux sont les noms associes aux champs par
l’attribut name
Said Najah 82
Les Formulaires
Cas de la méthode POST
<html>
<head>
<title>formulaire traité par php</title>
</head>
<body>
<form action="<?= $_SERVER["PHP_SELF"]?>" method="post"
enctype="application/x-www-forum-urlencoded">
<fieldset>
<legend><b>Infos</b></legend>
nom: <input type="text" name="nom" size="40"/>
</br>
Débutant: <input type="radio" name="niveau" value="débutant"/>
Initié: <input type="radio" name="niveau" value="initié" />
</br>
<input type="reset" value="effecer">
<input type="submit" value="envoyer">
</fieldset>
</form> Said Najah 83
Les Formulaires
<?php
if(isset($_POST["nom"]) && isset($_POST["niveau"]))
{ echo"<h2> Bonjour ".$_POST["nom"]." vous êtes ".$_POST["niveau"]."
en PHP</h2>";}
?>
</body>
</html>
Said Najah 84
Les Formulaires
Cas de la méthode GET:
Avec la méthode GET vous récupérez les données du formulaire
dans les
varibles $_GET[“nom”] et $_GET[“niveau”], comme ci-dessous:
<?php
If ( isset($_GET[“nom”] ) && isset($_GET[“niveau”] )
{
echo “ <h2> Bonjour ”, $_GET[“nom”], “vous êtes”,
$_GET[“niveau”], “en PHP </h2>”;
}
?>
Contrairement à ce qui ce passe avec la méthode POST, vous
constatez que lors du clic sur le bouton d’envoi l’adresse de la
page cible d »signée par l’attribut action est suivi par le caractère ?
Puis le nom de chaque champ et la valeur qui y associée.
Said Najah 85
Les Formulaires
<html>
<head>
<title>formulaire traité par php</title>
</head>
<body>
<form action="<?=$_SERVER["PHP_SELF"]?>" method="GET"
enctype="application/x-www-forum-urlencoded">
<fieldset>
<legend><b>Infos</b></legend>
nom: <input type="text" name="nom" size="40"/> </br>
Débutant: <input type="radio" name="niveau" value="débutant"/>
Initié: <input type="radio" name="niveau" value="initié"/>
</br>
<input type="reset" value="effecer">
<input type="submit" value="envoyer">
</fieldset>
</form> Said Najah 86
Les Formulaires
<?php
if(isset($_GET["nom"]) && isset($_GET["niveau"]))
{ echo"<h2> Bonjour ",$_GET["nom"]," vous êtes ",$_GET["niveau"]," en
PHP</h2>";}
?></body></html>
URL : http://127.0.0.1/site1/form_bis.php?nom=saad+Alami&niveau=d%E9butant
Said Najah 87
Les Formulaires
Les valeurs multiples
Certains champs de formulaire peuvent permettre aux visiteurs de saisir
plusieurs valeurs sous un même nom de composant.
Cela peut concerner un groupe de cases à cocher ayant le même
attributs name, par exemple, dont il est possible de cocher une ou
plusieurs cases simultanément. Ce peut également être le cas d’une liste
de sélection ayant toujours un nom unique mais dans laquelle l’attribut
multiple= “multiple” est défini.
Dans tous les cas, ce n’est pas une valeur scalaire mais un tableau qui
est récupéré côté serveur, il faut pour cela faire suivre le nom du
composant de crochets, comme pour créer une variable de type array.
Exemple:
Bleu :<input type=“checkbox” name =“choix[]” value =“bleu”/>
Blanc :<input type=“checkbox” name =“choix[]” value =“blanc”/>
L’utilisateur peut cocher les deux cases simultanément.
Le programmeur récupère ces valeurs dans les variables suivantes:
$_POST[“choix”][0] qui contient la valeur “bleu”
$_POST[“choix”][1] qui contient la valeur “blanc”
Said Najah 88
Les Formulaires
<html>
<head>
<title>choix multiples</title>
</head>
<body>
<form action="form6.6a.php" method="POST"
enctype="application/x-www-forum-urlencoded">
<fieldset>
<legend>Recherche d'emploi: complétez la fiche</legend>
Nom<input type="text" name="ident[]"/>
Prénom<input type="text" name="ident[]"/>
Age<input type="text" name="ident[]"/>
<br/><br/>
Langues Pratiquées<br/>
<select name="lang[]" multiple="multiple" size="1">
<option value="Francais">Français</option>
<option value="anglais">Anglais</option>
Said Najah 89
Les Formulaires
<option value="allemand">Allemand</option>
<option value="espagnol">Espagnol</option>
</select><br/><br/>
Compétence informatiques<br/>
HTML<input type="checkbox" name="competent[]"
value="HTML"/>
PHP<input type="checkbox" name="competent[]"
value="PHP"/>
MySQL<input type="checkbox" name="competent[]"
value="MySQL"/>
ASP.NET<input type="checkbox" name="competent[]"
value="ASP.NEt"/>
<br/><br/>
<input type="reset" value="EFFACER"/>
<input type="submit" value="ENVOI"/>
</form>
</body>
</html>
Said Najah 90
Les Formulaires
Said Najah 91
Les Formulaires
Said Najah 92
Les Formulaires
Transfert de fichier vers le serveur
L’inclusion d’un élément HTML <input type=“file”> dans
un formulaire crée une situation particulière. Il ne s’agit plus
de transmettre une ou plusieurs valeurs scalaires au serveur
mais l’intégralité d’un fichier, lequel peut avoir une taille
important et un type quelconque. Ce fichier doit évidement
être présent sur l’ordinateur du visiteur.
Pour la sécurité de votre site, vous utilisez l’attribut accept
de l’élément <input>. Cet attribut peut prendre un grand
nombre de valeurs, correspondant aux type MIME des
fichier acceptés, par exemple “image/gif” ou “text/html”. Un
fichier d’un type différent est rejeté.
L’element <form> doit avoir l’attribut method à la valeur
post et l’attribut enctype à la valeur multipart/form-data.
Said Najah 93
Les Formulaires
Said Najah 94
Les Formulaires
Said Najah 95
Les Formulaires
Said Najah 96
Les Fonctions
Les fonctions natives de PHP
PHP propose en standard une multitude de fonctions natives écrites en
langage C, ainsi que quantité de modules d’extension qu’il est possible
d’associer à la distribution standard.
Avant d’utiliser un module, il convient de vérifier qu’il est bien installé
sur le serveur de votre hébergeur.
Pour vérifier la disponibilité d’un module, vous disposez de la fonction
array get_loaded_extensions( ); qui retourne un tableau contenant tous
les modules d’extension installé sur le serveur.
Pour chaque module, il est possible de lister l’ensemble des fonctions
disponibles. Cela n’est pas utile, car même si une fonction fait partie
d’un module, votre hébergeur peut très bien l’avoir désactivée,
notamment pour des raisons de sécurité ou d’abus d’occupation du
serveur. La fonction mail( ) d’envoi de courrier, par exemple, est
souvent désactivée chez l’hébergeurs, en particulier les gratuits.
Pour obtenir la liste des fonctions d’un module:
array get_extensions_funcs(“nom_module”);
Said Najah 97
Les Fonctions
Créer ses propres fonctions:
Malgré les quelques deux mille fonctions contenues dans l’ensemble des
modules existants à ce jour, il arrive, de devoir effectuer plusieurs fois le
même traitement dans un script. Il est possible de créer des fonctions
personnalisées, qui permettent tout à la fois de gagner du temps de saisie et
d’alléger votre script en ne répétant pas plusieurs fois un même code.
ces fonctions personnalisées doivent être écrites dans un ou des scripts
séparés, qu’il vous suffit ensuite d’inclure dans le nouveaux scripts au moyen
d’une instruction include( ) ou require( ).
Définir une fonction
{
// code de définition de la fonction
return $var;
}
Said Najah 98
Les Fonctions
le nom de la fonction suit les mêmes règles que les noms de variables :
le nom doit commencer par une lettre
Les arguments sont facultatifs, mais s'il n'y a pas d'arguments, les
parenthèses doivent rester présentes
Appel de fonction
Pour exécuter une fonction, il suffit de faire appel à elle en écrivant son nom
(une fois de plus en respectant la casse) suivie d'une parenthèse ouverte
(éventuellement des arguments) puis d'une parenthèse fermée :
Nom_De_La_Fonction( );
Said Najah 99
Les Fonctions
Remarques:
le point virgule signifie la fin d'une instruction et permet à l'interpréteur de
distinguer les différents blocs d'instructions
si jamais vous avez défini des arguments dans la déclaration de la
fonction, il faudra veiller à les inclure lors de l'appel de la fonction (le
même nombre d'arguments séparés par des virgules)
Nom_De_La_Fonction(argument1, argument2);
Passage de paramètres par référence
Le passage de paramètres par référence n'est pas compliqué en soit.
Exemple :
<?php
function ajouter_cinq($nombre)
{
$nombre += 5; //équivalent de $nombre = $nombre + 5
return $nombre;
}
$mon_entier = 15;
echo ajouter_cinq($mon_entier); //affichera 20
echo $mon_entier; //affichera 15
?>
Exemple :
function trigo($nbr) {
return array(sin($nbr), cos($nbr), tan($nbr));// retour d’un tableau
}
$r = 12;
list($a, $b, $c) = trigo($r); /* affectation aux variables $a,$b et $c des éléments
du tableau retourné par la fonction trigo */
echo ‘’sin($r)=$a, cos($r)=$b, tan($r)=$c’’; // affichage des variables
Cet exemple affichera ceci :
Il est possible de créer dynamiquement des fonctions. Pour les déclarer, on affecte
à une variable chaîne de caractères le nom de de la fonction à dupliquer. Puis on
passe en argument à cette variable les paramètres normaux de la fonction de
départ.
Exemple :
function divers($toto) {
echo $toto;
}
$mafonction = ‘’divers’’;
$mafonction(‘’bonjour !’’); // affiche ‘bonjour !’ par appel de divers()
Nombre d'arguments: 3
Le 2ème param : ‘bar’
function somme() {
$params = func_get_args();
$nbr = 0;
foreach($params as $elem) {
$nbr += $elem;
}
return $nbr;
}
echo somme(50,20,3,98,50);
Cette fonction somme retourne la somme de tous ses arguments quel
qu’en soit le nombre. 221
Remarque:
• La fonction fopen() retourne un identifiant de fichier de type
ressource Qui doit être utilisé comme premier paramètre de al plupart
des fonctions de manipulation des fichiers.
• Vous pouvez aussi créer un fichier temporaire sur le serveur à l’aide
de al fonction:
resource tmpfile( );
fopen($file [,$mode]) : ouverture du fichier identifié par son nom $file et dans
un mode $mode particulier, retourne un identificateur $fp de fichier ou
FALSE si échec
fopen($fp) : ouvert le fichier identifié par le $fp
fgets($fp, $length) : lit une ligne de $length caractères au maximum
fputs($fp, $str) : écrit la chaîne $str dans le fichier identifié par $fp
fgetc($fp) : lit un caractère
feof($fp) : teste la fin du fichier
file_exists($file) : indique si le fichier $file existe
filesize($file) : retourne la taille du fichier $file
filetype($file) : retourne le type du fichier $file
unlink($file) : détruit le fichier $file
copy($source, $dest) : copie le fichier $source vers $dest
readfile($file) : affiche le fichier $file
rename($old, $new) : renomme le fichier $old en $new
Said Najah 119
Dates et calendriers
Les fonctions de dates et heures sont incontournables sur Internet et sont
indispensables pour la conversion en français des dates fournies par la
base de données MySQL qui les code au format anglophone (YYYY-DD-
MM hh:mm:ss).
Quelques fonctions :
Exemple 2 :
if(checkdate(12, 31,2001))
echo ‘’La St Sylvestre existe même chez les anglais !!!’’;
Exemple 3 :
$aujourdhui = getdate();
$mois = $aujourdhui['mon'];
$jour = $aujourdhui['mday'];
$annee = $aujourdhui['year'];
echo ''$jour/$mois/$annee''; // affiche ‘31/3/2002’
Said Najah 121
Dates et calendriers
Les cookies sont de petite fichiers qui peuvent être écrits par un script
PHP ou par un autres langages, tel JavaScript, sur l’ordinateur du
visiteur. À l'exception du piratage, c’est le seul cas ou un site peut
intervenir sur le disque dur d’un utilisateur.
Par défaut, Internet Explorer écrit les cookies sans autorisation de
l’utilisateur, tandis que Netscape demande l’accord du visiteur pour
chaque cookie à écrire.
Les cookies font l’objet de limites d’emploi. Un site donné ne peut
écrire que 20 cookies sur un même poste client. Chacun d’eux ne doit
pas dépasser 4 Ko, ce qui empêche le stockage d’information de taille
important.
Un cookie n’est accessible que par le site qui l’écrit.
Exemple :
<?php
// cookie valable uniquement pour la session
setcookie(“Prénom”, “saad”) ;
// cookie valable 24 heures
setcookie(“Nom”, “SD”, time( )+86400) ;
// ce cookie utilise tous les paramètres
setcookie(“CB”, “5612 1234 5678 1234”, time( )+86400,
“/client/paiement/”, “www.funphp.com”,TRUE )
4- Lecture des variables de session dans chaque page en fonction des besoins
à l’aide du tableau superglobal $_SESSION
5- Fermeture de la session après destruction éventuelle des variables de
session.
Remarque:
À la différance des cookies, les noms et valeurs des variables sont stockés
sur le serveur et non sur le poste client. Les variables sont généralement
stockées dans le dossier /tmp du serveur.
Remarque
Si la directive session.auto_start a la valeur on, vous n’avez même pas à
utiliser la fonction session_start(), le serveur s’en chargeant pour toutes les
pages du site. Cette directive est toutefois rarement activée.