Support de Cours PHP
Support de Cours PHP
Support de Cours PHP
Historique
Inventé par Rasmus Lerdorf , il trouvait le CGI trop long, c'est pour ça qu'il a développé PHP, il a
publié la première version en 1993 et 1995 selon les sites.
Ce Langage est basé sur le principe du client serveur
Exemple : "index.php".
Pour indiquer que vous écrivez du code PHP, vous devez ajouter ces 2 balises :
<?php
?>
Voir le résultat
<?php
phpinfo();
?>
Bonjour
<?php
echo "Bonjour";
?>
Les commentaires
Les commentaires permettent de vous repérer dans votre code PHP, vous pouvez l'écrire
différemment selon le cas, regarder l'exemple ci dessous
<?php
// Commentaire sur 1 ligne
# Commentaire écrit à la Unix
/*
Commentaires sur plusieurs lignes
*/
?>
<?php
// Placer le caractére d'échappement devant le caracrtére guillemet
echo " Bonjour, \"<b>Jean</b>\" , nous te souhaitons une bonne journee ";
// Autre exemple
echo "<img src=\"images/photo.jpg\" width=\"100\" height=\"40\" alt=\"Photo\" />";
?>
Exemple
séquence effet
si vos séquences d'échappement ne fonctionnent pas, encadrez votre code des balises HTML <pre> et </pre>.
Les variables en PHP
Dans ce tutoriel, nous allons aborder les variables en PHP
Définition
C'est une petite information stockée en mémoire temporairement. Ca n'a pas une grande durée de
vie.
En PHP, la variable (l'information) existe tant que la page est en cours de génération.
Dés que la page PHP est générée, toutes les variables sont supprimées de la mémoire car elles ne
servent plus à rien.
Ce n'est donc pas un fichier qui reste stocké sur le disque dur mais une petite information
temporaire.
Son nom : pour pouvoir la reconnaître, vous devez donner un nom à votre variable précédé
du caractère "$", Exemple $Prenom
Sa valeur : c'est l'information qu'elle contient, qui peut changer. Par exemple "toto".
1. Chaînes de caractère
Une chaîne (ou séquence) de caractéres doit être encadrée de guillemets :
simples (' ') si elle ne contient rien qui nécessite d'être échappé
doubles (" ") si l'on veut que les séquences d'échappement et les variables qu'elle contient
soient interprétées (on parle de "substitution de variables") :
<?php>
// Type string, permet d'afficher un texte, ne pas oublier les '' ou ""
$Prenom="toto";
$Prenom='toto';
?>
toto
2. Entiers
Un entier (integer, ou int) est un nombre de l'ensemble des entiers naturels {..., -2, -1, 0, 1, 2, ...}.
+ (addition) $a + $b additionne $a et $b
- (soustraction) $a - $b soustrait $b de $a
<?php
$a = $a+1 ; // identique à la ligne ci dessous
$a ++ ; // Permet d'incrémenter
$a -- ; // Permet de décrémenter
?>
3. Réels
Un nombre réel (float, ou double), appelé aussi "à virgule flottante", peut être exprimé de deux
manières :
<?php
$a = 1.234;
$a = 1.2e3; // Notation scientifique
?>
En PHP, Il faut mettre un point et non une virgule pour les décimales.
4. Booléen
Permet exprimer si quelque chose est vrai (true en anglais), ou si c'est faux (false en anglais)
<?php
$Homme=true; // Boolean, TRUE
$Femme=false; // Boolean, TRUE
echo $Homme; // Affiche 1 "Vrai", la condition est respectée
$a = ($b<100) ; // Le résultat est 1 "Vrai"
echo $a;
>
1
is_array() un tableau
is_object() un objet
<?php
$var1="Bonjour";
echo is_string ($var1); // Affiche 1, la variable $var1 est une chaîne de caractére
?>
1
gettype($var)
<?php
$Prenom="toto"; // Variable string
$Valeur=123; // Variable integer
// Affiche le type de la variable
echo gettype($Prenom);
echo "<br />";
echo gettype($Valeur);
?>
Vous pouvez accéder à la valeur d'une constante en spécifiant simplement son nom. Contrairement
aux variables, vous ne devez PAS préfixer le nom de la constante avec $.
Ne pas oublier d'entourer de " " le nom de la constante, sinon elle s'affichera comme du texte.
Initialiser et afficher une constante
<?php
define('CONSTANTE', 'toto');
// Affichage d'une constante, ne pas mettre de $
echo CONSTANTE;
?>
toto
Constantes prédéfinies
Il existe beaucoup de constantes prédéfinies, en voici quelques unes
__FILE__
__LINE__
PHP_VERSION
PHP_OS
__FILE__
/home/conseiw/www/formation/php/03-constantes-php.php
__LINE__
<?php echo "la ligne ", __LINE__, " ne contient aucune erreur ;-)"; ?>
PHP_VERSION
<?php echo "la version de l'analyseur PHP est la : ", PHP_VERSION; ?>
<?php echo "le systéme d'exploitation du serveur est ", Linux "?>
CONSTANTE
toto
Le chemin de la page est /home/conseiw/www/formation/php/03-exercice-
constantes.php
La version de PHP est : 5.3.3
La constante est à la ligne 28
Par contre, si vous voulez mixer du HTML ou CSS avec des variables en PHP, il va falloir
concaténer les données, nous le verrons dans les exemples ci-dessous..
Concaténation
Définition :
Le terme concaténation (substantif féminin), du latin cum (« avec ») et catena (« chaîne,
liaison »), désigne l'action de mettre bout à bout au moins deux chaînes de caractères.
Source Wikipédia
En PHP, on utilise le. pour concaténer.
Exemple
<?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"
$a = 10;
$a.= 30; Le résultat serait 1030
$a=$a.$b; // La variable $a a la valeur de la concaténation de $a et $b
echo $a;
?>
Concaténation
Bonjour, toto ,je te souhaite une bonne journée
Bonjour, toto, Je te souhaite une bonne journée
le taux de l'euro arrondi est round(6.5957,2)
le taux de l'euro arrondi est 6.6
round()
Permet d'arrondir une valeur numérique.
round($var,Nb_decimales)
<?php
$Prix=18.4542215;
echo round($Prix,2); // Arrondi la variable $Prix à 2 décimales
?>
srand()
srand permet d'initialiser le générateur de nombres aléatoires.
rand()
rand permet de générer un nombre aléatoire.
<?php
srand(); // initialiser le générateur de nombres aléatoires.
$rand1=rand(0,5); // Nombre aléatoire 1, on sort des valeurs aléatoires comprises entre 0
et 5
$rand2=rand(6,9); // Nombre aléatoire 2, on sort des valeurs aléatoires comprises entre 6
et 9
$resultat=$rand1+$rand2; // Calculer la somme
echo "Calculer la somme de ces valeurs " .$rand1 ." + " .$rand2 ." Le total est " .
$resultat;
?>
srand(), rand()
Refaire l'exemple ci-dessous.
Saisir le resultat
Jour
Semaine
W Numéro de semaine dans l'année (les semaines commencent Exemple : 42 (la 42éme semaine de
le lundi) l'année)
Mois
Année
Heure
<?php
echo date("d/m/Y"); // Affiche la date du jour
echo "Il est " . date("H:i:s") ; // Affiche l'heure
?>
Le timestamp PHP
Un timestamp, c'est un nombre.
C'est le nombre de secondes écoulées depuis le 1er Janvier 1970 à Minuit.
Pourquoi depuis le 1er Janvier 1970 à Minuit ? C'est symbolique, il fallait bien prendre un point de
départ.
En fait, ça représente le début de l'époque où le systéme d'exploitation Unix a été créé.
Le 1er Janvier 1970 à Minuit, le timestamp avait pour valeur 0. Aujourd'hui, beaucoup beaucoup
de secondes se sont écoulées
Pour afficher le timestamp de la seconde actuelle, on utilise la fonction
time()
Afficher le timestamp avec time
<?php
echo time(); //Affiche le nombre de secondes écoulées depuis le 1er janvier 1970
?>
Exemple
Lorsque vous écrirez une news, il vous suffira d'enregistrer juste le timestamp, et vous serez
capables grâce à ce nombre de ressortir toutes les infos possibles et imaginables dessus : le jour où
la news a été postée, l'heure qu'il était etc...
Récupérer le timestamp à partir d'une date avec mktime
Enfin, une derniére chose qu'il peut être trés utile de savoir faire : vous aimeriez connaître le
timestamp qu'il était le 5 Février 1998 à 13h 45min 26s.
Pour récupérer le timestamp correspondant, on va utiliser la fonction mktime. On va lui donner en
paramétre une date, et elle va nous ressortir le timestamp correspondant.
Cette fonction peut prendre pas mal de paramétres, en voici la liste dans l'ordre :
mktime(heure, minutes, secondes, mois, jour, an, heure d'hiver)
Dans la pratique, vous pouvez oublier le dernier paramétre (heure d'hiver) qui ne vous sera pas
utile en général.
Sachez qu'il faut mettre 1 si l'heure d'hiver est activée, 0 si elle ne l'est pas.
Mais passons. Si on enléve l'heure d'hiver pour éviter de s'embrouiller, il reste 6 paramétres
possibles qu'on retiendra :
Exemple
Je veux toujours le timestamp du 5 Février 1998 à 13h 45min 26s
<?php
$vieux_timestamp = mktime(13, 45, 26, 2, 5, 1998);
echo 'Le timestamp du 05/02/1998 à 13h 45min 26s était : ' . $vieux_timestamp;
?>
getdate()
getdate retourne un tableau associatif contenant les informations de date et d'heure du timestamp
(lorsqu'il est fourni, sinon, le timestamp de la date/heure courante), avec les champs suivants :
array getdate ( int timestamp )
"wday" Représentation numérique du jour de la semaine courante 0 (pour Dimanche) à 6 (pour Samedi)
Array ( [seconds] => 9 [minutes] => 2 [hours] => 22 [mday] => 12 [wday] => 0 [mon] => 3 [year] => 2017
[yday] => 70 [weekday] => Sunday [month] => March [0] => 1489352529 )
<?php
$today = getdate();
print_r($today);
?>
print_r affiche des informations à propos d'une variable, de maniére à ce qu'elle soit lisible. Pour
une chaîne, un entier ou un double, la valeur elle même sera affichée.
Pour les tableaux, les valeurs seront présentées dans un format qui montre les clés et les valeurs.
Gardez en tête que print_r place le pointeur de tableau à la fin du tableau. Utilisez reset pour le
ramener au début.
strtotime()
Transforme un texte anglais en timestamp
etourne un timestamp en cas de succès, FALSE sinon.
<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>
Exemple
1489352529
968536800
date()
Exercice 1 : Afficher la date au format français ainsi que l'heure avec les minutes
et les secondes
Array ( [seconds] => 30 [minutes] => 2 [hours] => 22 [mday] => 12 [wday] => 0
[mon] => 3 [year] => 2017 [yday] => 70 [weekday] => Sunday [month] => March [0]
=> 1489352550 )
Rappel
Caractére Signification
Jour
d Jour du mois sur deux chiffres avec un zéro initial en fonction du jour
z Jour de l'année
Semaine
Mois
Année
Heure
implode()
Rassemble les éléments d'un tableau en une chaîne.
glue
Exemple 2
<?php
// Permet de récupérer les différentes valeurs du $_POST['id_appreciations_fk'] contenu
dans des checkboxs, que nous séparrons par une virgule
$id_appreciations_fk=implode(',',$_POST['id_appreciations_fk']);
?>
explode()
Coupe une chaîne en segments.
array explode ( string $delimiter , string $string [, int $limit = PHP_INT_MAX] )
delimiter
Le séparateur.
string
La chaîne initiale.
limit
Si limit est défini et positif,le tableau retourné contient, au maximum, limit éléments, et le
dernier élément contiendra le reste de la chaîne.
Si le paramètre limit est négatif, tous les éléments, excepté les -limit derniers éléments sont
retournés.
Si limit vaut zéro, il est traité comme valant 1.
<?php
// Exemple 1
$Texte = "Bonjour tout le momde ";
$pieces = explode(" ", $Texte);
echo $pieces[0] ." "; // Bonjour
echo $pieces[1]; // tout
?>
Bonjour tout
Exemple 2
<?php
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *
?>
foo*
echo $row_q3['question3']."<br>";
}
?>
search
La valeur à chercher, autrement connue comme le masque. Un tableau peut être utilisé
pour désigner plusieurs masques.
replace
La valeur de remplacement à substituer aux valeurs trouvées. Un tableau peut être utilisé
pour désigner plusieurs valeurs de remplacement.
subject
Voici un texte
Encore un texte
Encore un texte
strlen()
Calcule la taille d'une chaîne.
<?php
$str = 'abcdef';
echo strlen($str); // 6
strpos()
Trouve la position d'un caractére dans une chaîne.
int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
Si needle n'est pas une chaîne, il est converti en entier, et utilisé comme caractére de code
ASCII correspondant.
offset
substr()
Retourne la partie extraite de la chaîne dans le segment de string défini
par start et length ou FALSE si une erreur survient
string
La chaîne d'entrée.
start
Si start est positif, la chaîne retournée commencera au caractére numéro start, dans la
chaîne string. Le premier caractére est numéroté zéro. Actuellement, dans la chaîne 'abcdef', le
caractére à la position 0 est 'a', le caractére à la position 2 est 'c', et ainsi de suite.
Si start est négatif, la chaîne retournée commencera au caractére numéro start à compter de la fin
de la chaîne string.
Si string est plus petit ou égal à start caractéres de long, FALSE sera retourné.
length
Si length est fourni et est positif, la chaîne retournée contiendra au plus length caractéres, en
commençant à partir du caractére start (en fonction de la taille de la chaîne string).
Si length est fourni et négatif, alors le même nombre de caractéres sera omis, en partant de la fin
de la chaîne string. Si start représente une position hors de la chaîne, une chaîne vide sera
retournée.
Si le paramétre length est fourni et vaut 0, FALSE ou NULL, une chaîne vide sera retournée.
Si length est omis, la sous chaine commençant à partir de start jusqu'à la fin sera retournée.
Exemple avec start négatif
<?php
$rest = substr("abcdef", -1); // retourne "f"
$rest = substr("abcdef", -2); // retourne "ef"
$rest = substr("abcdef", -3, 1); // retourne "d"
?>
include('fichier.inc.php')
require()
La fonction require() appelle et exécute un code contenu dans un fichier externe.
require permet à la différence d'include de couper l'exécution du script PHP si le
fichier à inclure n'a pu être inclus.
En cas d'erreur, le script se coupera complétement
<?php
require('fichier.inc.php'); // Coupe l'exécution du script PHP si le fichier à inclure n'a
pu être inclus
?>
Par convention on met un ".inc" avant le ".php" pour indiquer que le fichier est à
inclure.
require_once()
require_once('fichier.inc.php')
<?php
require_once('fichier.inc.php');
// Vérifie si le fichier a déjà été inclus et si c'est le cas, ne l'inclut pas une
deuxiéme fois
?>
Exercice
mail()
La fonction mail permet comme son nom l'indique : l'envoi d'emails
<?php
$destinataire="[email protected]";
$sujet="Envoi de mail avec PHP";
$message = "Contenu de mon email";
$entete = "From: [email protected]";
mail($destinataire, $sujet', $message,$entete);
?>
14.1
Exemple de formulaire de connexion
<?php
function Connecter($action,$bouton) {
echo '<table class='table table-responsive>';
echo '<form action="".$action."" method="post" name="form1">';
echo '<tr>';
echo '<td>Login</td>';
echo '<td><input type="text" name="login" value="" class="form-control" required
placeholder="login"></td>';
echo '</tr>';
echo '<tr>';
echo '<td>Mot de passe</td>';
echo '<td><input type="password" name="mdp" class="form-control" required"
placeholder="Mot de apsse"></td>';
echo '</tr>';
echo '<tr>';
echo "<td>;
echo '<input type="submit" name="Bouton" class="btn btn-primary" value="".$bouton."">';
echo '</td>';
echo '</tr>';
echo '</form>';
echo '</table>';
}
?>
Créer une fonction qui affiche un message en fonction du poids si c'est un homme
ou une femme.
Trés maigre
if else
if else, permet de tester si une condtion est respectée ou non.Dans notre exmple ci dessous, si la
condition est respectée, elle renvoit "instruction1", sinon "instruction2"
<?php
if(condition) {
// instruction1;
}
else{
// instruction2;
}
?>
Exemple basique
<?php
$gender="Homme";
if($gender=="Homme"){
echo "Bonjour Monsieur";
}
else{
echo "Bonjour Madame";
}
?>
=== (identique) $a === $b $a est égal et du même type que $b (PHP4 seulement)
AND Et && Vérifie que toutes les conditions sont $a && $a et $b retournent
réalisées $b TRUE
$a and
$b
<?php
// Plusieurs conditions avec et
if(condition1 AND condition2) {
// instruction1;
}
else {
// instruction2;
}
?>
<?php
// Plusieurs conditions avec ou
if(condition1 OR condition2) {
instruction1;
}
else {
instruction2;
}
?>
Exemple avec OR
Si l'emploi est = à "sécurité" ou = "gardiennage" l'accès est autorisé sinon l'accès est refusé.
<?php
$emploi="securité";
if(emploi=="gardiennage" OR emploi=="sécurité") {
echo "Accès autorisé";
}
else {
echo "Accès refusé";
}
?>
if elseif else
Nous pouvons combiner un certains nombre de conditions avec if elseif else ....
Si la condition1 est respectée, elle renvoit "instruction1", sinon on teste la condition2
Si la condition2 est respectée, elle renvoit "instruction2"
Sinon elle renvoit enfin le dernier test "instruction3"
<?php
// 3 cas de figure
if(condition1) {
// instruction1;
}
elseif (Condition2){
// instruction2;
}
else {
// instruction3;
}
?>
<?php
if($poids>=100){
echo "C'est Lourd";
}
elseif($poids>=80){
echo "Il faut faire attention";
}
elseif($poids>=60){
echo "C'est parfait";
}
elseif($poids>=40){
echo "C'est léger";
}
else {
echo "C'est maigre";
}
?>
case "condition2":
// instruction;
break;
case "condition3":
// instruction;
break;
default:
// instruction;
break;
}
<?php
switch($age){
case 15:
echo "Vous êtes mineur.";
break;
case 20:
echo "C'est le meilleur âge";
break;
case 40:
echo "C'est l'âge de la maturité";
break;
case 60:
echo "C'est bientôt la retraite";
break;
default:
echo "Votre âge n'est pas défini";
break;
}
?>
Exercice switch
<?php
$var="toto";
if(isset($var) && $var=="toto"){
echo "C'est bien toto<br>";
}
else{
echo "Ce n'est pas toto";
}
?>
Exercices isset()
empty($variable)
La fonction empty() détermine si une variable est vide ou non.
Elle retourne TRUE si la chaîne passée en argument est vide
<?php
$prenom="Paul";
if(empty($prenom)){
echo "La variable est vide";
}
else{
echo "La variable n'est pas vide, elle est de type " .gettype($prenom);
}
?>
Exercice empty()
empty()
Exercice :
Si l'emploi est complété dans la variable, on l'affiche, sinon on affche que l'emploi
n'a pas été complété
Dédinition
Les boucles vont vous permettre d'effectuer un certain nombre de fois les mêmes opérations, par
exemple afficher une suite de nombres que l'on incrémentera à chaque tour de boucle. Vous allez
pouvoir répéter autant d'instructions que vous souhaitez et vous arrêter lorsque vous l'aurez
décidé, selon une condition bien précise par exemple (si vous ne vous rappelez plus de ce qu'est
une condition, je vous engage à relire le chapitre les concernant). Voyons maintenant différents
types de boucles que nous expliquerons au fur et à mesure. Commençons par la boucle la plus
simple, la boucle while.
Source vulgarisation-informatique.com
Boucle for
Cette boucle est trés utile lorsque vous souhaitez incrémenter une variable sur une certaine plage
de valeurs connue à l'avance.
<?php
for ( initialisation; condition de continuité ; expression 3) {
// Bloc d'instructions;
}
?>
Exemple
<?php
for($d=1;$d<11;$d++){
echo $d;
}
?>
Rappel :
$i++ Incrémenter
$i-- Décrémenter
Exercice boucle for
Boucle while
Cette boucle qui est une des plus utilisées en PHP va vous permettre d'effectuer une ou plusieurs
actions tant que la condition que vous placerez à l'intérieur des parenthéses sera vérifiée
C'est pour cela que, quel que soit le type de boucle (While ou For), il faut indiquer une condition.
Tant que la condition est remplie, les instructions sont réexécutées. Dés que la condition n'est
plus remplie, on sort de la boucle
Pas sur de faire le bloc d'instruction si la condition est fausse
<?php
while(condition) {
// Bloc d'instruction
}
?>
<?php
$j=1;
while($j<7){
echo $j++ ." ";
}
?>
Tant que $j est < à 7, on incrémente jusque 6 (puisque $i est strictement < à 7)
123456
Il faut TOUJOURS s'assurer que la condition sera au moins remplie une fois.
Si elle ne l'est jamais, alors la boucle s'exécutera à l'infini !
PHP refuse normalement de travailler plus d'une quinzaine de secondes.
Il s'arrêtera tout seul s'il voit que son travail dure trop longtemps et affichera un message d'erreur.
Comment savoir lequel prendre quand je dois choisir entre un While et un For ?
While marche à tous les coups.
For ne marche que quand on a un nombre qui s'incrémente, comme on a fait ici. Donc For est
parfois plus adapté, mais personne ne vous tuera si, comme moi, vous préférez utiliser un While
tout le temps
Exercices boucle while
Boucle do while
Elle a des similitudes avec la boucle while.
Néanmoins, une différence de taille les séparent.
Si l'on reprend l'exemple avec la boucle while :
<?php
$i = 0;
while($i < 7)
{
echo $i.'<br />';
$i++;
}
?>
Vous constatez que si on initialise $i à 8, la boucle ne sera jamais exécutée, car dés l'analyse de la
condition, 8 < 7 renverra FALSE (8 est bien inférieur à 7 ).
La boucle do-while permet d'effectuer au moins une fois une opération, et si une condition est
vraie, reboucler autant de fois que vous le souhaitez.
Avec le do, il sera au minimum exécuté une fois
<?php
do
{
// instruction 1;
// instruction 2;
}
while(condition);
?>
<?php
$i=8;
$j=7;
do
{
echo 'la boucle a bouclé une fois, même si la condition n\'a pas été respectée,<br />
la variable $i < n\'est pas inférieur à $j';
}
while ($i < $j);
?>
la boucle a bouclé une fois, même si la condition n'a pas été respectée,
la variable $i < n'est pas inférieur à $j
do while
Exercice avec une condition qui n'est pas respectée.
<?php
$i=8;
$j=7;
do
{
echo 'la boucle a bouclé une fois, même si la condition n\'a pas été respectée, la
variable $i < à $j while($i < $j)';
$i++; // Pas possible d'icrémenter
}
while($i < $j);
?>
la boucle a bouclé une fois, même si la condition n'a pas été respectée, la
variable $i < n'est pas inférieur à $j while($i < $j)
Définition :
Il s'agit de variables qui peuvent contenir plusieurs valeurs.
On peut donc imaginer leur représentation sous forme d'un tableau.
Pour différencier les valeurs, pour savoir comment on va dire à PHP "je veux telle valeur de cette
variable" il faut bien distinguer les valeurs par des indices.
Voilà comment on peut représenter tout ça :
Indice Valeur
0 Maurice
1 Jean
2 Pierre
3 Paul
4 Gérard
$Prenom[0]='Maurice';
$Prenom[1]='Jean';
$Prenom[2]='Pierre';
$Prenom[3]='Paul';
$Prenom[4]='Gérard';
echo $Prenom[4];
?>
<?php
// Syntaxe equivalente
$Prenom=array(0=>'Maurice',
1=>'Jean',
2=>'Pierre',
3=>'Paul',
4=>'Gérard');
echo $Prenom[4];
?>
<?php
/* Dans le cas où vous souhaitez garder le premier indice à zéro (et les suivants
incrémentés de 1 à chaque fois) vous pouvez également utiliser la syntaxe suivante */
$Prenom=array('Maurice','Jean','Pierre','Paul','Gérard');
echo $Prenoms[4];
?>
Gérard
Gérard
Gérard
count()
count($variable)
<?php
echo count($Prenoms1) ." prénoms dans le tableau";
?>
Exercice
<?php
// Seconde syntaxe
$Articles=array('Numero' =>77,
'Nom' => "Cable rond",
'Prix' => 7);
echo "Ref: ".$Articles['Numero'] ." Article: " .$Articles['Nom'] ." Prix: " .
$Articles['Prix'];
?>
France Paris 80
Japon Tokyo 90
UK Londres 70
Voici un exemple de code pour le traduire en PHP, vous pouvez remarquer que nous utilisons un
second indice.
<?php
// 1ère ligne
$tab1=array();
$tab1[0][0]="France";
$tab1[0][1]="Paris";
$tab1[0][2]=80;
// 2ème ligne
$tab1[1][0]="Japon";
$tab1[1][1]="Tokyo";
$tab1[1][2]=90;
// 3ème ligne
$tab1[2][0]="UK";
$tab1[2][1]="Londres";
$tab1[2][2]=70;
echo $tab1[1][2];
?>
Nous souhaitons afficher la population du Japon
La population du Japon est : 90
$tab2[0][0]="France";
$tab2[0][1]="Paris";
$tab2[0][2]=80;
$tab2[1][0]="Japon";
$tab2[1][1]="Tokyo";
$tab2[1][2]=90;
$tab2[2][0]="UK";
$tab2[2][1]="Londres";
$tab2[2][2]=70;
Japon Tokyo 90
Exercice
Boucle foreach
La boucle foreach se décline en deux versions.
Version 1
avec un tableau indicé
Ainsi, nous parcourons le tableau $array et la valeur de l'élément courant est copié dans $value,
qui est ensuite affiché.
foreach($array as $value)
<?php
$array = array( 1, 2, 3, 5, 8, 12 );
foreach( $array as $value ) // Pas d'accolades
echo $value . '<br >';
?>
1
2
3
5
8
12
N°1
N°2
N°3
Version 2
La deuxiéme version de foreach permet de connaître, en plus de la valeur de l'élément courant, sa clé
Dans ce cas, on parcourt le tableau $array et la clé de l'élément courant est copiée dans $key tandis que
sa valeur est copiée dans $value
Exemple 1
<?php
$array = array( 'premier' => 'N° 1', 'deuxieme' => 'N° 2', 'troisieme' => 'N° 3');
foreach( $array as $key => $value )
echo 'Cet élément a pour clé "' . $key . '" et pour valeur "' . $value . '"<br>';
?>
$_SERVER[DOCUMENT_ROOT]=/home/conseiw/www
$_SERVER[GATEWAY_INTERFACE]=CGI/1.1
$_SERVER[HTTP_ACCEPT]=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
$_SERVER[HTTP_ACCEPT_ENCODING]=gzip, deflate, sdch
$_SERVER[HTTP_ACCEPT_LANGUAGE]=fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
$_SERVER[HTTP_CONNECTION]=keep-alive
$_SERVER[HTTP_HOST]=www.conseil-webmaster.com
$_SERVER[HTTP_REFERER]=http://www.conseil-webmaster.com/formation/php/07-boucles-php.php
$_SERVER[HTTP_UPGRADE_INSECURE_REQUESTS]=1
$_SERVER[HTTP_USER_AGENT]=Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/56.0.2924.87 Safari/537.36
$_SERVER[PATH]=/bin
$_SERVER[QUERY_STRING]=
$_SERVER[REDIRECT_STATUS]=200
$_SERVER[REMOTE_ADDR]=105.104.22.197
$_SERVER[REMOTE_PORT]=51604
$_SERVER[REQUEST_METHOD]=GET
$_SERVER[REQUEST_URI]=/formation/php/08-tableaux-php.php
$_SERVER[SCRIPT_FILENAME]=/home/conseiw/www/formation/php/08-tableaux-php.php
$_SERVER[SCRIPT_NAME]=/formation/php/08-tableaux-php.php
$_SERVER[SCRIPT_URI]=http://www.conseil-webmaster.com/formation/php/08-tableaux-php.php
$_SERVER[SCRIPT_URL]=/formation/php/08-tableaux-php.php
$_SERVER[SERVER_ADDR]=51.254.199.182
$_SERVER[SERVER_ADMIN][email protected]
$_SERVER[SERVER_NAME]=www.conseil-webmaster.com
$_SERVER[SERVER_PORT]=80
$_SERVER[SERVER_PROTOCOL]=HTTP/1.1
$_SERVER[SERVER_SIGNATURE]=
$_SERVER[SERVER_SOFTWARE]=Apache
$_SERVER[PHP_SELF]=/formation/php/08-tableaux-php.php
$_SERVER[REQUEST_TIME]=1489352993
Trier un array
ksort Trie un tableau suivant les clés
<?php
$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>
echo '<br>';
}
?>
fruits:
pommes
tomates
abricots
animaux:
chats
chiens
pays:
Suisse
France
Angleterre
Boucle foreach
Exercice 1 avec un tableau associatif
3 jours
2 jours
2 jours
$_GET
$_POST
$_SERVER
$_SESSIONS
$_COOKIE
1. envoi.html, qui contient le lien à envoyer dans l'url (Nous n'avons pas forcément besoin d'une
page en php).
2. reception.php (qui va traiter l'information envoyée dans l'url)
Dans notre page envoi.html, nous allons créer un lien hypertexte classique.
<a href="reception.php" title="Envoyer">Envoyer des données via une url</a>
Nous allons maintenant un peu modifier notre lien. Après l'extension .php, nous allons ajouter un
point d'interrogation (?), le nom de la variable, un égal, puis sa valeur ex : ?variable=valeur.
Si l'on veut envoyer la variaible Prenom qui a pour valeur Christophe, ça vous donne ça :
<a href="reception.php?Prenom=Christophe" title="C'est GET">Envoyer des données via une
url</a>
<?php
// Code PHP pour afficher le résultat dans ma page reception.php
echo $_GET['Prenom'];
?>
Dans votre code HTML, il ne faut pas écrire directement le symbole "&", Il faut le remplacer par son code
HTML : &
http://www.conseil-webmaster.com/mapage.php?jour=12&mois=03&annee=2017
$_GET['jour'] = "12"
$_GET['mois'] = "03"
$_GET['annee'] = "2017"
<?php
echo $_GET['jour'] ."<br>";
echo $_GET['mois'] ."<br>";
echo $_GET['jour'] ."<br>";
?>
Une formation PHP coûte 300€ / Jour, elle se déroule sur une période de 3 jours.
Une formation Excel coûte 250€ / Jour, elle se déroule sur une période de 2 jours.
Créer une page reception.php où vous affichez les 2 formations ci dessous ainsi
que le prix total de la formation (Prix*nb de jours)
Lien
$_POST['Variable']
et non plus $Variable
Exemple
Dans cette page, ajouter un champ de formulaire que vous nommez "Nom" ainsi
qu'un bouton d'envoi
Dans la balise form, action doit pointer vers une page en PHP (Ex:
traitement.php") qui va traiter l'information.
Envoyer
Nom
Exercices
Exercice 1
Exercice 2 : Formulaire de connection
Exercice 3 : Calculer le prix d'une location de voiture
Exercice 4 : Calculer le prix d'une formation
.Exercice 1
Formulaire envoi
Exercice
Envoyer les variables Nom et Prenom à partir de cette page, les afficher sur une
autre page reception.php
Nom
Prénom
Envoyer
Exercice
Dans le cas contraire, vous êtes redirigé vers une nouvelle page qui sera nommée
erreur.php
Login
Mot de passe
Me connecter
Exercice
Type de voiture :
citadine = 30 €
familiale = 45 €
sportive = 70 €
utilitaire = 50 €
Nombre de jours :
0-250 = 0 €
251-500 = 25 €
501-1000 = 45 €
>1001 = 65 €
Chauffeur
civilite
Mr Mme Melle
nom
prenom
type
Nb de jours
km
0-250
251-500
501-1000
>1000
chauffeur
Envoyer
Personnes
1 personne supplémentaire : 100€ HT / Jour
Région
Nord pas de Calais : 0€
Somme: 50€ HT / jour
Ile de France : 100€ HT / Jour
Nom
Prénom
Nb de personnes 1
Région
Envoyer
Envoyer les variables Nom et Prenom sur une même page
Envoyer les variables Nom et Prenom, sur cette page et les afficher ci-dessous.
Mon nom
Mon prénom
Envoyer
Exercice
Si vous renseignez "toto" comme nom et "titi" vous redirigez l'utilisateur vers une
page nommée succesphp sinon vous affichez :Entrer votre nom et votre mot de
passe.
Nom
Mot de passe
Envoyer ma demande
$_SERVER : ce sont des valeurs utiles que nous donne le serveur. Pour les
afficher, il faut indiquer ce qu'on demande entre crochets puisque que c'est un
array.
Je vous en donne quelques unes ci-dessous :
www.conseil-webmaster.com
$_SERVER['DOCUMENT_ROOT']
/home/conseiw/www
Cest le chemin de la page que vous êtes en train d'exécuter, par rapport à la
racine de votre site web.
Exemple : si vous êtes sur la page http://www.monsite.com/scripts/monscript.php,
alors $_SERVER['PHP_SELF'] aura pour valeur : /scripts/monscript.php
<?php echo $_SERVER['PHP_SELF']; ?>
/formation/php/09-variables-serveur-php.php
105.104.22.197
http://www.conseil-webmaster.com/formation/php/09-variables-superglobales-
php.php
Page précédente
Les sessions
Dans ce tutoriel, nous abordons les SESSIONS en PHP.
Les sessions en PHP permettent de sauvegarder des variables de page en page pendant une
certaine durée prédéfinie par PHP (et modifiable bien entendu).
Chaque utilisateur ayant besoin des sessions se voit attribuer un identifiant unique appelé ID de
session. Cet identifiant est stocké sur le poste de l'internaute sous forme d'un cookie ou transite via
l'URL si l'option session.use_trans_sid est à 1 (ou On) dans le fichier php.ini.
Utiliser la méthode du cookie est plus que recommandée : un identifiant de session dans l'URL
empêche de retenir l'adresse d'une page simplement par le visiteur néophyte, cela rallonge donc
l'adresse de votre page. Cela nuit également au référencement de votre page. En effet, l'identifiant
étant unique, lorsque le robot du moteur de recherche scanne votre site, il ne retombera jamais sur
la même URL plusieurs fois de suite.
session_start()
Pourquoi session_start() doit-elle être placée de la sorte ? et bien parce que si PHP utilise les cookies pour
repérer quel est l'id de session utilisé par l'internaute, il va écrire cet id de session dans un cookie. Or, le
protocole HTTP fonctionne de telle sorte que les en-têtes (qui permettent de dire à votre navigateur "crée
un cookie ayant tel nom et telle valeur") sont envoyés avant le premier caractére HTML transmis.
Cela veut dire que dés que vous transmettrez un caractére HTML, les en-têtes seront envoyés et vous ne
pourrez plus les modifier, vous ne pourrez donc plus écrire le cookie de session.
En général, si vous faites une maladresse de ce style, vous vous retrouverez avec une erreur de headers
already sent.
session_unset()
unset($_SESSION["mavariable"])
La commande session_write_close() écrit les valeurs des variables de session sur le serveur et
ferme la session.
session_write_close()
Dans le cas où une des 2 informations n'est pas complété, on crée un lien de
retour vers cette page où l'on affiche les champs Prénom et Mots de passe avec
l'information saisie précédemment.
Dans le cas où l'utilisateur a saisi comme Prénom "toto" et comme mot de passe
"toto", on lui affiche un lien de connexion et on détruit la variable de session
lorsqu'il a cliqué dessus.
Prénom
Mot de passe
Envoyer
Les cookies
Dans ce tutoriel, nous abordons les COOKIES en PHP.
$_COOKIE
Un cookie est un fichier petit fichier texte que l'on stocke sur le poste du visiteur.
Exemple :
Vous stockez le pseudo du visiteur. Lorsqu'il revient sur votre site, vous pouvez
lire dans le cookie et lui afficher "Bonjour votre_pseudo".
Contrairement à certaines légendes, les cookies sont totalement inoffensifs, ce
ne sont pas des virus ou troyens ou je ne sais quoi !
setcookie (string nom, string valeur, string expiration, string chemin, string domaine,
string securise)
Vour remarquez que le 3éme paramétre définit la durée de vie pour du cookie,
aprés celui ci sera supprimé.
Créer 2 cookies: Un qui retient mon nom et un autre qui retient mon prénom.
<?php
$timestamp = time() + 365*24*3600; // Le cookie a une durée de vie de 1an
setcookie('Nom', 'Lambert', $timestamp); // On écrit un cookie
setcookie('Prenom', 'Christophe', $timestamp); // On en écrit un autre cookie...
// Vous remarquez que tout est bien noté avant le début du code HTML
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Titre de ma page</title>
</head>
etc ...
Afficher un cookie
$_COOKIE['Nom_cookie']
Aller dans le menu Outils > Options > Vie privée > Supprimer des cookies
spécifiques
La procédure est un peu plus longue, je vous invite à consulter cet article.
Supprimer un cookie
Pour supprimer un cookie, Il suffit de déclarer le cookie sans mettre de valeur
setcookie("Nom_cookie")
<?php
// Pour supprimer le cookie Nom
setcookie("Nom");
?>
La fonction fopen() renvoie true si l'ouverture est possible et false si elle ne l'est pas.
fopen("fichier.txt", "r")
<?php
$source="fichier.txt";
if($fichier=@fopen($source,"r")) // Le @ permet de ne pas afficher l'erreur et renvoie le
statut que nous définisons en dessous
{
echo "L'ouverture du fichier est possible car la fonction fopen retourne TRUE<br />";
}
else
{
echo "Ouverture du fichier impossible car fopen retourne FALSE";
}
?>
Valeurs posiibles :
a Ouverture du fichier pour : écrire et créer le fichier. L'écriture commence a la fin du fichier
a+ Mêmes fonctions que ci-dessus sauf que la lecture est permise.
r Ouverture d'un fichier en lecture seule.
r+ Mêmes fonctions que ci-dessus sauf qu'il est possible d'écrire dans le fichier. L'écriture
commence au début du fichier.
w Ouverture du fichier en écriture seulement. Création du fichier si celui-ci n'existe pas sauf que
les données contenues précédemment sont effacées.
w+ Mêmes fonctions sauf qu'il est possible de lire dans le fichier.
Exercice
<?php
$source1="fichier1.txt";
$fichier1=fopen($source1,"r");
fpassthru($fichier1); // Permet d'afficher le contenu du fichier dans un navigateur
?>
< ?php
$source4="fichier.txt";
$fichier4=fopen($source4,"r+");
echo fgets($fichier4,4);
?>
fgetc(string pointeur)
< ?php
$fichier = fopen("fichier.txt","r");
$premier = fgetc($fichier);
echo "Premier Caractére : " . $premier;
fclose($fichier);
?>
fgets($fichier, longueur)
<?php
$fichier = fopen("fichier.txt","r");
$premier = fgets($fichier, 10);
echo "Dix Premier Caractéres : " . $premier;
fclose($fichier);
?>
fgetss()
fgetss($fichier,longueur)
La fonction fgetss() a quasiment la même utilité que la fonction fgets() sauf qu'elle n'extrait ni
les balises HTML, ni les balises PHP
La fonction fread() permet de lire une chaîne de caractére dans un fichier ouvert, jusqu'a la longueur
indiquée en argument
Exercice
ou
fputs()
fputs(string pointeur, string chaîne, (string longueur))
<?php
$fichier = fopen("essai.txt","w");
if(fwrite($fichier, "TEXTE A ECRIRE"))
{
echo "OK !";
}
else echo "Erreur";
fclose($fichier);
?>
Exemple
Exercice1
Exercice compteur
file_exists(string fichier)
file_exists("fichier.txt")
<?php
if(file_exists("fichier.txt")) {
echo "Fichier existant";
}
else echo "Introuvable !";
?>
copy(fichier_depart,fichier_destination)
<?php
if(@copy("essai.txt","complet/copy_fichier.txt"))
{
Echo "Le fichier essai.txt a été copié dans le répertoire complet/copy_fichier.txt.";
}
else echo "Erreur";
?>
Exercice
<?php
if(@rename("essai.txt","nouveau_fichier.txt")) {
Echo "Le fichier essai.txt a été renommé en nouveau_fichier.txt.";
}
else echo "Erreur";
?>
Exercice
unlink(fichier)
<?php
if(@unlink("essai.txt"))
{
Echo "Le fichier essai.txt a été supprimé.";
}
else echo "Erreur";
?>
Exercice
Exercice 2.4: