Comment trouviez vous ce cours ?

10(83.3%)
8
2(16.7%)

Appéciations du lecteurs :

Visualisations : 735
Appreciations : 12

A propos de l'auteur :

R@chid
Email: victrachild@yahoo.com
Validation du cour : 26/02/2012

Langage de programmation PHP

Langage de programmation PHP

Introduction

Historique

L'apparaition du Php a été aux années 90, un certain Rasmus Lerdorf avait placé une grosse macro sur sa page personnelle (Personal Home Page) afin de garder trace de ses visiteurs. À l'époque ce script ne permettait pas encore de réaliser de boucles ni de tests mais déjà exploitait les requête SQL. Le succès immédiat de Php auprès d'une communauté de développeurs a permis l'apparition de la version 3 en 1998.

De nos jours, on utilise enocre la version 5 malgré que le développement de la fameuse version PHP 6 a débuté il y a maintenant près de six ans.
Le php est présenté par le mascotte :

Un script Php peut analyser les données d'un formulaire HTML, communiquer avec une base de données et effectuer des calculs à la volée. Le code source de Php est compilé avec le serveur Apache. Php est gratuit, modifiable (open source), orienté exclusivement Web et très documenté.

Comment ça marche ?

Les balises HTML sont interprétées par le navigateur alors que dans le cas du PHP, le code est interprété puis exécuté par le serveur. Lorsque vous demandez à votre navigateur d'afficher le code source, le serveur ne lui ayant expédié que le résultat au format HTML, vous ne verrez pas le code PHP. Les balises PHP ne peuvent plus être lues. Seul le résultat l'est.

Pour utiliser du PHP dans vos pages, il vous faut :

  • Vous assurer que le serveur sur lequel vos pages sont hébergées interprète le PHP.
  • Donner à vos pages une extension .php ou selon la configuration du serveur.
  • Insérer votre PHP dans le code HTML grâce aux balises réservées. On utilise <?php ?> le plus fréquemment. Voici les balises qui caractèrisent une zone de création d'un script :


  1. <?........?> : Balise classique.
  2. <?php........?> : Balise évolué.
  3. <%........%> : balise peu connue.

Utilitaires.

Programmer en PHP nécessite quelques programmes et utilitaires spéciaux pour débuter:

  • - Editeur PHP : Vous pouvez créer des pages avec Notepad, mais des logiciels gratuits et plus professionnels sont téléchargeables sur Internet. ConText, un freeware (gratuit) utilisable en plusieurs langues. HydraPHP, PHPedit, ... sont aussi possibles.
  • - Serveur : Une page en PHP doit être décodée par un serveur et ... votre ordinateur sous Windows ne fonctionne pas comme serveur php. Pour tester vos programmes en PHP - MySQL, vous pouvez télécharger logiciel easyphp. Il fonctionne sous Windows et permet non seulement de tester des pages en local, mais également de créer des bases de données locales Mysql. EasyPhp n'est pas seulement un logiciel de test, c'est une réelle application serveur qui peut vous permettre d'héberger votre site Internet sur votre ordinateur en local, mais attention à la sécurité.

Ces 2 utilitaires vous permettent finalement d'utiliser votre PC sous Windows pour créer et tester des pages programmées en PHP, pour les retransférer vers votre site Internet ensuite.

Installation

Télécharger EasyPHP, l'installation est facile on cliquant sur suivant de l’assistant, spécifier le répertoire ou vous vouliez garder vos projets, la fin de l’installation une petite icône apparaisse dans la barre des taches, cliquer sur laquelle par la bouton droite du souris, une fenêtre s’affiche permet de contrôler l’état de deux serveurs.


Le clique du bouton droite de souris sur l’icone de barre de tâche de easyphp, une boite de contexte apparaisse.


Syntaxe du php.

Le PHP est un langage de programmation spécialisé dans la génération de code HTML (notamment). Les balises PHP peuvent être insérées directement dans le code html de la page qui a l'extention (~.php). Toutes les instructions php doivent se terminer par ';' Si vous l'oubliez vous aurez un message d'erreur de type: Parse error: parse error, unexpected T_PRINT in c://prgramFile/easyphp/www/tests.php on line x

Mes premier commandes php.

<?php
	/*Mes Premiers Commandes Php*/
	echo "Salam ! ça va?"; /*La commande echo permet plus particulièrement
	d'afficher du texte (entre "" ou '') ou une variable*/
	print("Salam ! ça va?"); /*print est similaire a echo, les parenthèses
	n'est pas obligatoire .*/
	echo'J'ai réussi ma première commande en PHP'; /*Il faut insérer le
	caractère devant le guillemet*/
	echo'Bonjour ' . "Tout le monde"; /*Le . sert a concaténer 2 chaine de
	caractères*/
	echo"<h1>Inclure de Code Html dedans</h1>"; /*Le . sert a concaténer 2
	chaine de caractères*/
	/*Les Commentaires*/
	//C'est un commentaire dans une seule ligne
	/*C'est un commentaire
	dans une plusieurs lignes*/
	# ceci est un commentaire à la Unix. 
?>

Les variables.

L'un des principaux intérêts du PHP est de mémoriser des informations dans le but de les stocker ou de les traiter, ces informations(données) sont stockées temporairement dans des variable, chaque vaiable possède un nom et une valeur, les variables existent tant que la page est en cours de génération . Le PHP accepte 6 types de variables :


  • Booléen : True, False (vrai ou faux).
  • Entier : un nombre entier (sans virgules).
  • Chiffre en virgule flottante : (c'est automatiquement un nombre décimal de type double), nombre avec des chiffrée derrière la virgule comme 0.23, 45.2369, ... Remarquez le point comme séparateur.
  • Chaîne de caractères : du texte encadré par ', exemple: 'Ceci est un texte'
  • Tableaux : array(2,2,2).
  • Objets : (image, ...).


PHP ne demande pas de spécifications du type de variable préalable, ni même de les déclarer (sauf les tableaux).
Les noms de variable doivent:
  • commencer par $
  • inclure des lettres, des chiffres et le caractère _
  • commencer par une lettre ou _
Les noms de variables ne doivent pas:
  • inclure les caractères réservés - @ , . ; : /<>
  • inclure des espaces
Quelques remarques pour le nom:
  • Il peut inclure des caractères accentués mais ce n'est pas souhaitable.
  • le nom de la variable est spécifique à la casse (majuscules, minuscules)

Les Variables prédéfinies

En effet, PHP propose toute une série de variables qui sont déjà présentes dans le langage sans que vous n'ayez à les déclarer. Ces variables s'écrivent toujours en majuscules et nous fournissent divers renseignements.
Voici la liste des variables d'environnement existantes :

OpérateurDescription
$_SERVER['DOCUMENT_ROOT']Racine du serveur
$_SERVER['HTTP_ACCEPT_LANGUAGE']Langage accepté par le navigateur
$_SERVER['HTTP_HOST']Nom de domaine du serveur
$_SERVER['HTTP_USER_AGENT']Type de navigateur
$_SERVER['REMOTE_ADDR']Adresse IP du client
$_SERVER['REMOTE_PORT']Port de la requête HTTP
$_SERVER['REQUEST_URI']Chemin du script
$_SERVER['SERVER_ADDR']Adresse IP du serveur
$_SERVER['SERVER_ADMIN']Adresse de l'administrateur du serveur
$_SERVER['SERVER_NAME']Nom local du serveur
$_SERVER['REQUEST_METHOD']Méthode d'appel du script


<?php
	echo $_SERVER['DOCUMENT_ROOT'] . '<br/>';
	echo $_SERVER['HTTP_ACCEPT_LANGUAGE'] . '<br/>';
	echo $_SERVER['HTTP_HOST'] . '<br/>';
	echo $_SERVER['HTTP_USER_AGENT'] . '<br/>';
	echo $_SERVER['REMOTE_ADDR'] . '<br/>';
	echo $_SERVER['REMOTE_PORT'] . '<br/>';
	echo $_SERVER['REQUEST_URI'] . '<br/>';
	echo $_SERVER['SERVER_ADDR'] . '<br/>';
	echo $_SERVER['SERVER_ADMIN'] . '<br/>';
	echo $_SERVER['SERVER_NAME'] . '<br/>';
	echo $_SERVER['REQUEST_METHOD'] . '<br/>';
?>

Les Constantes

Une variable va changer de contenu suivant le programme mais parfois nous allons utiliser la même valeur pour tous le programme. Une constante se définit par la commande DEFINE().


<?php
	define("VALEUR_FIXE","valeur");
	define("VALEUR_FIXE_2","valeur");
	Print("La valeur de la constante VALEUR_FIXE est ".VALEUR_FIXE);
	ECHO "et VALEUR_FIXE_2 prend la valeur ".VALEUR_FIXE_2;
	/*Même si ce n'est pas obligatoire, les constantes sont souvent nommées 
	en majuscules, ceci facilite la lecture du programme. Pour les afficher 
	ou les utiliser. Remarquez que nous avons directement utilisé son nom, 
	sans $ comme pour les variables.*/
?>

Les formats de dates

Le langage PHP inclut une fonction gérant les dates et heures. La fonction date(format,optionnel) renvoie une chaîne de caractère suivant le format choisi.

LettreSignificationValeurs possiblesExemple
sSecondes00 à 5953
iMinutes00 à 5926
HHeure00 à 2300
IIndique si l'heure d'été est activée (1 = oui, 0 = non)0 ou 11
ODifférence d'heures avec l'heure GMT (Greenwich)-1200 à +1200+0200
dJour du mois01 à 3129
mMois de l'année01 à 1208
YAnnée, sur 4 chiffresBeaucoup de possibilités2005
yAnnée, sur 2 chiffresBeaucoup de possibilités05
LIndique si l'année est bissextile (1 = oui, 0 = non)0 ou 10
lJour de la semaine écrit en anglaisSunday à SaturdayMonday
FMois écrit en anglaisJanuary à DecemberAugust
tNombre de jours dans le mois28 à 3131
wNuméro du jour de la semaine0 (dimanche) à 6 (samedi)1
WNuméro de la semaine dans l'année01 à 5235
zNuméro du jour de l'année0 à 365240

Quelques exemples de la commande date():

  • date('d/m/Y') affiche 26/02/2012
  • date('D d F Y h:s') affiche Sun 26 february 2012 17:56

L'utilisation de la partie optionnelle permet par exemple d'afficher la date de modification de la page, comme filemtime.

<?php
	print('Créé le 26/02/2012');
	print(', modifier le ');
	print(date('d/m/Y', filemtime('index.php')));
?>

Le timestamp

C'est le nombre de secondes écoulées depuis le 1er Janvier 1970 à Minuit. ça représente le début de l'époque où le système d'exploitation Unix a été créé.

<?php
	/*le 1er Janvier 1970 à Minuit, le timestamp avait pour valeur 0*/
	echo 'Le timestamp actuel est : ' . time();
	$timestamp=1330324299; /*C'est l'heure qu'il était quand j'écrivais le tutoriel !*/
	/*Voici quelque d'infos sur ce timestamp :*/
	echo 'Ce jour était le : ' . date('l', $timestamp);//Sunday
	//Sunday03h 44min 59s
	echo 'Il était exactement : ' . date('Hh imi
 ss', $timestamp);
	echo 'Il y avait : ' . date('t', $timestamp);//29 jours dans ce mois
	echo "C'était le : " . date('z', $timestamp);//56 ème jours de cette année
?>

Les Opérateurs

Un opérateur est un symbole qui indique à PHP qu'il doit effectuer une opération.

- Opérateurs d'incrémentation/décrémentation

OpérateurNomRésultat
++$aPré-incrémentIncrémente $a d'un, puis renvoie $a.
$a++Post-incrémentRenvoie $a, puis incrémente $a de un.
--$aPré-décrémentDécrémente $a d'un, puis renvoie $a.
$a--Post-décrémentRenvoie $a, puis décrémente $a d'un.

- Opérateurs d'affectation

OpérateurSignification
=affectation simple
+=addition puis affectation
-=soustraction puis affectation
*=multiplication puis affectation
/=division puis affectation
%=modulo puis affectation
=>associe une valeur à une clé dans un tableau
->réalise un appel de méthode

- Opérateurs arithmétiques

OpérateurOpération
+addition
-soustraction
/division
*multiplication
%modulo
++incrément
(voir paragraphe "incrémentation/décrémentation")
--décrément
(voir paragraphe "incrémentation/décrémentation")

- Opérateurs de comparaison

ExempleNomRésultat
$a == $bEgalVrai si les valeurs de $a et $b sont égales
Noter les DEUX signes "égale" à la suite : $a = = $b
$a === $bIdentiqueVrai si $a == $b et si $a et $b sont de même type.
Noter les TROIS signes "égale" à la suite : $a = = = $b (PHP 4)
$a != $bNon égalVrai si $a n'est pas égal à $b.
$a <> $bNon égalVrai si $a n'est pas égal à $b.
$a !== $bNon identiqueVrai si $a n'est pas égal à $b,
ou si $a et $b sont de types différents (PHP 4).
$a < $bPlus petit queVrai si $a est plus petit que $b.
$a > $bPlus grand queVrai si $a est plus grand que $b.
$a <= $bPlus petit ou égal àVrai si $a est plus petit ou égal à $b
$a >= $bPlus grand ou égal àVrai si $a est plus grand ou égal à $b.

- Opérateurs logiques

ExempleNomRésultat
$a and $bAndVrai si $a et $b sont vrais
S'exécute après le =
$a or $bOrVrai si $a, ou $b, ou les deux, sont vrais
S'exécute après le =
$a xor $bXorVrai si un et un seul parmi $a ou $b est vrai
! $a NotVrai si $a est faux
$a && $bAndVrai si $a et $b sont vrais.
S'exécute avant le =
$a || $bOrVrai si $a, ou $b, ou les deux, sont vrais
S'exécute avant le =
<?php
	/*Les Opérateurs : Incrementation et Decrémentation*/
	$x=5;
	echo $x;
	$x++;//L'incrémentation
	echo $x;//6
	echo $x++;//Post-incrément, Affichage : 6
	echo ++$x;//Pré-incrément, Afficahge : 8
	$y=5.66;//Double point aulieu de virgule
	echo $y++;//Post-incrément, Affichage : 5.66
	echo ++$y;//Pré-incrément, Afficahge : 7.66
	/*Les Opérateurs : Affectation*/
	$x=15;
	$y=$x;//Affectation simple
	$y+=5;
	echo $y;//20
	$y-=5;
	echo $y;//15
	$y*=5;
	echo $y;//75
	$y/=5;
	echo $y;//15
	$y%=5;
	echo $y;//0
	/*Les variables : les chaines de caractères*/
	$nom="MOHAMED";//variable nom et sa valeur Mohamed
	$prenom="Ahmed";
	echo $nom . $prenom;
	echo "mon nom est $nom et mon prénom est $prenom";
?>

- L'opérateur ?

L'opérateur ? : s'appelle aussi opérateur de test "trinaire". Sa syntaxe est
[test logique] ? [expression si vrai] : [expression si faux]

<?php
	$a=$b=1
	($a==$b)?$c=10:$c=20;
	/*On peut également l'utiliser pour compacter les séquence de test / affectations*/
	$réponse=($a==$b)? "a égal b" : "a différent de b" ;
	echo $réponse;
?>

Exercices

Ex1 : Utiliser l'opérateur térnaire pour la comparaison Entre "3.14" et 3.14 .
Ex2 : Affecter votre nom au variable $nom et afficher dans la page (MON nom est "Mohamed").
Ex3 : Afficher dans la page (la vaible $nom = "Mohamed").
Ex4 : Affecter cette chaine de caractères "Il y a du $dollar dans l'air ! " a une variable et imprimer la.
Ex5 : Afficher les balise HTML aprés l'impression.

Instructions de contrôle.

Comme dans tous les langages de programmation, le php dispose de structure de contrôle. Le php étant issue du C, les instructions de contrôle sont presque indentique aux instructions du C.

L'instruction if ().

<?php
	/*Les Instructions de Controle : if(condition)*/
	$x=3;
	if($x==1)
	{
	// fait si $i = 1
	}
	else if($x==2)
	{
	// fait si $i = 2
	}
	else($x==2)
	{
	// bloc fait dans tous les autres cas.
	}
?>

L'instruction else if () sert à multiplier le nombre de choix sans pour autant augmenter le if ().

L'instruction switch ().

<?php
	/*Les Instructions de Controle : switch(condition)*/
	$x=3;
	switch($x==1)
	{
	case 1 :
	// fait si $i = 1
	break;
	case 2 :
	// fait si $i = 2
	break;
	default :
	// fait dans tous les autres cas restant.
	break;
	}
?>

Dans l'instruction switch () vous devez couvrir tous les cas possible, c'est pour cela qu'à la fin il faut mettre default :
Pour les débutants il falait mieux utiliser l'instruction if () à la place de switch () car elle procure le même resultat et elle est beaucoup plus facile à utiliser .

La boucle while ().

<?php
	/*Les Instructions de Controle : while(condition)*/
	$x=10;
	$i=0;
	while($x>$i)
	{
	$i++;
	}
?>

Tant que la condistion ($x>$i) est vraie $i sera incrémenté
La boucle while() est très utilisé quand on ne sait pas combien de fois il faut faire la boucle. l'instruction continue permet de sortir(sans quitter) du boucle sans executé les instructions qui la suit.
Vous pouvez mettre l'instruction break; si vous voulez stoper la boucle au milieu de son déroulement, il y a aussi l'instruction exit; qui stope toutes les tâches en cour.

La boucle do while ().

<?php
/*Les Instructions de Controle : do while(condition)*/
$x=10;
$i=0;
do
{
$i++;
}while($x>$i);// ; n'est obligatoire
?>

La boucle do while () est le même que la boucle while () sauf que l'instruction est faite au moin une fois.

La boucle for( ; ; ) .

<?php
/*Les Instructions de Controle :for( ; ; )*/
for($i=0; $i<40; $i++)
{
// Instruction faite 40 fois
}
?>

Explication des paramètres de boucle :

  • $i=0 : cela est l'initialisation de la boucle.
  • $i<40 : cela est la test d'arrêt de la boucle.
  • $i++ : cela est la condition de continuation de la boucle.

Si il y a une boucle à utiliser, c'est bien la boucle for(;;) car elle est très compacte est en une ligne on fait trois actions.

Exercices.

Ex2 : De 1 à 10, séléctionnez tous les nombres sauf 5.
Ex3 : De 1 à 10, séléctionnez les nombres paire.
Ex4 : De 1 à 10, séléctionnez les nombres de 1 jusqu'à 5.
Ex5 : Montrer la défférence entre break exit et continue.

Correction.

<?php
	/*Rp : 1*/
	$var_1="3.14";
	$var_2=3.14;
	($var_1 === $var_2) ? print "Condition vraie" : print "Condition fausse" ;
	// "Condition fausse"
	($var_1 == $var_2) ? print "Condition vraie" : print "Condition fausse" ;
	// "Condition vraie"
	for($i=0; $i<40; $i++)
	/*Rp : 2*/
	for($i=1; $i<=10; $i++)
	{
	if($i!=5){
	echo $i;
	}
	}
	for($i=1; $i<=10; $i++)
	if($i!=5)
	echo $i;
	for($i=1; $i<=10; $i++)
	{
	if($i==5)
	continue;
	echo $i;//1234678910
	}
	/*Rp : 3*/
	for($i=1; $i<=10; $i++)
	if($i%2 == 0)
	echo $i;//246810
	/*Rp : 4*/
	for($i=1; $i<=10; $i++)
	{
	echo $i;//12345
	if($i==5)
	break;
	}
	$i=1;
	while($i<=5){
	echo $i;//12345
	$i++;
	}
	/*Rp : 5*/
	/*
	*break; : permet de sortir d'un bloc;
	*continue; : permet de sortir d'un bloc d'instruction sans le quitter
	*exit : permet de quitter le programme.*/
?>

Les Tableaux.

Un tableau PHP est une variable pouvant contenir d'autres variables. C'est en fait un système d'associations ordonnées (map) qui fait correspondre des valeurs à des clés. Une clé est une valeur, unique dans une liste donnée, permettant de retrouver une valeur ou une ensemble de valeurs dans une liste (Exemple : le N° de Sécurité sosiale est une clé permettant de retrouver votre situation familliale, date et lieu de naissance...)

Initialisation des tableaux

<?php
	/*Il y a deux façons d'initialiser un tableau, qui donnent le même résultat :*/
	/* 1 - Le mot clé array est utilisé :*/
	/*On peut ne spécifier aucune clé :*/
	$monthName=array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", 
				"Aout", "Septembre", "Octobre", "Novembre", "Decembre");
	print("Moi 5 est $monthName[5] 
");//Moi 5 est Juin
	/*On spécifie seulement la valeur de la première clè :*/
	$monthName=array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", 
				"Aout", "Septembre", "Octobre", "Novembre", "Decembre");
	print("Moi 5 est $monthName[5] 
");//Moi 5 est Mai
	/*On utilise l'opérateur d'affectation pour chaque valeur*/
	$music=array("pop" => "Britney Spears", "rock" => "Aerosmith", 
					"jazz" => "Louis Armstrong");
	print("Top de 'pop' ".$music["pop"] . "
");//Britney Spears
	/* 2 - Le mot clé array n'est pas utilisé mais les crochets pour indiquer 
		qu'il s'agit d'un tableau:*/
	$monthName[1]="Janvier";
	$monthName[2]="Février";
	/*Nb : les clés ne sont pas forcement numériques :*/
	$utilisateur["nom"]="Mohamed Ali";
	$utilisateur["ville"]="Rabat";
	$utilisateur["tel"]="03655648221";
	/*On ne spécifie pas la clé pour chaque valeur, PHP affecte d'office 
		des valeurs en partant de 0 :*/
	$ville[]="Rabat";
	$ville[]="Tanger";
	$ville[]="Casablanca";
	$ville[]="Agadir";
	$ville[]="Marakech";
	$ville[]="Fes";
	/* Tableaux multidimensionnels */
	$events = array("1914"=> array ("Juin" => array ("23" => "Innauguration canal 
		de Kiev par Hitler", "28" => "Archiduc Ferdinand assassiné à Sarajevo"), 
			"July" => array ("26" => "Mobilisation en Autriche", "28" => 
			"L'Autriche déclare la guerre à la Serbie" )) 
			, "1918" => array( "November" => array ("11" => "Armistice signée ", 
			"16" => "retrait des troupes allemandes"))) ;
?>

Remarque importante :

  • Il ne peut y avoir deux clés identiques, mais deux clés différentes peuvent pointer vers deux valeurs identiques
  • En php les tableaux multidimensionnels n'existent pas, par contre on a la possibilité de mettre un tableau dans une cellule d'un tableau.
  • Depuis la version PHP 4 une structure de contrôle foreach a été inclut, comme en Perl ou d'autres langages. C'est un moyen simple de passer en revue les valeurs (et éventuellement les clés) d'un tableau.

Exemple de foreach

<?php
	$tab=array ("un" => 1,"deux" => 2,"trois" => 3,"dix-sept" => 17 );
	foreach($tab as $i => $v)
	print "$tab[$i]=>$v.
";
?>
<?php
	$lettre[0][0]="a";
	$lettre[0][1]="b";
	$lettre[1][0]="c";
	$lettre[1][1]="d";
	foreach($lettre as $v1)
	foreach($v1 as $v2)
	print "$v2
";
?>

Fonctions spécifiques utilisables avec les tableaux

Voici un tableau qui présente quelque fonctions spécifique au tableaux .

*FonctionDescription
 array_count_valuesCompte le nombre de valeurs dans un tableau
 array_filterFiltre les éléments d'un tableau
 array_flipRemplace les clés par les valeurs, et les valeurs par les clés
 array_key_existsCherche si une valeur ou une clé existe dans le tableau
 array_keysRetourne toutes les clés d'un tableau
xarray_pushEmpile un ou plusieurs éléments à la fin d'un tableau
 array_reverseRenverse l'ordre des éléments d'un tableau
 array_searchRecherche dans un tableau la clé associée à une valeur
xarray_shiftDépile (enlève) un ou plusieurs élément au début d'un tableau
 array_sumCalcule la somme des valeurs du tableau
xarray_unshiftEmpile (rajoute) un ou plusieurs éléments au début d'un tableau
 array_valuesRetourne les valeurs d'un tableau réindexées avec des entiers
xarrayCrée un tableau
xarsortTrie un tableau en ordre inverse
xasortTrie un tableau en ordre
 countCompte le nombre d'éléments d'un tableau
xcurrentTransforme une variable en tableau
 eachRetourne chaque paire clé/valeur d'un tableau
 endPositionne le pointeur de tableau en fin de tableau
 in_arrayIndique si une valeur appartient à un tableau
 keyRetourne une clé d'un tableau associatif
xkrsortTrie un tableau en sens inverse et suivant les clés
xksortTrie un tableau suivant les clés
 nextAvance le pointeur interne d'un tableau
 posRetourne l'élément courant d'un tableau
 prevRecule le pointeur courant de tableau
 resetRemet le pointeur interne de tableau au début
xshuffleMélange les éléments d'un tableau
 sizeofRetourne le nombre d'élément d'un tableau
xsortTrie le tableau
 is_array()Pour savoir si une variable est un tableau
xexplode()array explode ( string separator, string string [, int limit])
Retourne un tableau qui contient les éléments d'une chaîne contenant des délimiteurs
ximplode()string implode ( string glue, array pieces)
Retourne une chaîne constituée de tous les éléments du tableau, pris dans l'ordre, transformés en chaîne, et séparés par le séparateur
xsplit()array split ( string pattern, string string [, int limit])
Scinde une chaîne en un tableau, grâce à une expression régulière
xjoin()string join ( string glue, array pieces)
Regroupe tous les éléments d'un tableau dans une chaîne, avec une chaîne de jointure.

* : le x signifie que la fonction modifie le(s) tableau(x) spécifié en argument, sinon en principe c'est un nouveau tableau qui est créé

Les Fonctions.

Une fonction, dans la majorité des langages de programmation permet de regrouper un ensemble d'instructions qui doiventt être executés plusieurs fois dans un programme; des paramètres peuvent être envoyés à cette fonction qui pourra ou non renvoyer des valeurs.

Deux sortes de fonctions en php :

  • Les fonctions intégrées à PHP :fonctions pour gérer les tableaux, les conversions, les chaines de caractères ...(plus de 1000 fonctions en standard)
  • Les fonctions dites "utilisateur", que l'on construit soi-même

Les fonctions utilisateurs

Une fonction peut être définie en utilisant la syntaxe suivante :

<?php
	function nom_de_fonction ($arg_1, $arg_2, ..., $arg_n) ){
		echo"Exemple de fonction.
";
		return $return_value;
	}
?>

Exemple

<?php
	/* Fonction qui ne retourne aucune valeur*/
	function bonjour($nom){
		echo"Bonjour $nom !";
	}
	/* Fonction qui retourne une valeur*/
	function bonsoir($nom){
		return"Bonsoir $nom !";
	}
	/* L'appelation des fonctions*/
	bonjour("Mohamed");
	bonjour("Aba baker");
	echo bonsoir("Omar");
	echo bonsoir("Otmane");
	echo bonsoir("Ali");
?>

Syntaxe et principaux principes de fonctionnement :

- Les parenthèses sont obligatoires, même s'il n'y a pas d'arguments
- Pour activer une fonction, il suffit d'indiquer son nom, suivi des arguments éventuels entre parenthèses (parenthèses toujours obligatoires, à la fois dans la définition et dans l'appel, ainsi un nom de fonction est facilement identifiable (sauf pour les deux fonctions intégrées print et echo).
- Tout code PHP, correct syntaxiquement, peut apparaître dans une fonction et dans une définition de classe.
- En PHP 3, les fonctions doivent être définies avant qu'elles ne soient utilisées. Ce n'est plus le cas en PHP 4.ou 5.
- PHP 4 ne supporte pas le surchargement de fonction, ni la destruction ou la redéfinition de fonctions déjà déclarées.

Les fonctions php

<?php
	/*Les fonctions PHP principales spécifiques au traitement des chaînes de 
	caractères et nombres*/
	/*Fonction strlen() : renvoie la longueur de la chaîne de caractères */
	echo strlen("bonjour");//6
	/*Fonctions Trim, Rtrim, ltrim : Ces fonctions permettre de supprimer 
	les blancs dans une chaîne de caractères.*/
	echo trim(" bonjour ");/*efface les blancs devant et derrière dans la chaîne 
	de caractères, pas les espaces au milieu.*/
	echo rtrim("bonjour ");/*supprime les blancs à droite de la chaîne 
	de caractères.*/
	echo rtrim("bonjour", "jour");/*A partir de PHP 4.0.1, une opérante 
	optionnelle a été rajoutée. =>bon*/
	echo ltrim(" bonjour");/*supprime les blancs à gauche de la chaîne 
	de caractères.*/
	echo ltrim("bonjour", "bon");/*A partir de PHP 4.0.1, une opérante 
	optionnelle a été rajoutée. =>jour*/
	/*Fonctions MAJUSCULES et minuscules.*/
	echo STRTOLOWER("BONJOUR");/*transforme tous les caractères de la 
	chaîne en minuscule .*/
	echo strtoupper("bonjour");/*transforme tous les caractères de la chaîne 
	en MAJUSCULES .*/
	echo UCWORDS("bonjour tout le monde");/*transforme la première lettre chaque 
	mot en majuscule .*/
	echo ucfirst("bonjour tout le monde");/*transforme la première lettre de 
	la chaîne en majuscule .*/
	/*Manipulation et modification de chaînes : Ces fonctions PHP vont modifier 
	le contenu d'une chaîne de caractères..*/
	echo addslaches("l'entreprise");/*ajoute les anti-slashes  devant les caractères 
	spéciaux.=>l'entreprise*/
	/* Cette fonction est utilisée pour les fonctions Print(''") et ECHO''" et lors 
	d'introduction de valeurs via un formulaire.=>l'entreprise*/
	echo stripslaches("l'entreprise");/*supprime les anti-slashes, notamment utilisée 
	lors de version imprimable.=>l'entreprise*/
	echo CHUNK_SPLIT("bonbon","3","-");/*permet de scinder une chaîne de 
	caractère.=>bon-bon-*/
	echo strstr("programmation en partique","e");/*recherche le caractère et affiche 
	le reste de la chaîne, y compris le caractère.=>en partique*/
	echo STR_replace(";", " "; "programmation;en;partique");/*remplace dans la chaîne les 
	caractères à replacer(;) par le caractère de remplacement(' ') et l'assigne à une 
	variable.=>programmation en partique*/
	echo HTMlentities("< >");/*remplace le caractère par son équivalent HTML si 
	possible.=> & lt;& nbsp;& gt;*/
	echo ereg('MA', 'MA3625141414');/*recherche si la chaîne1 est contenue dans la 
	chaine 2, renvoie une valeur logique.=> true*/
	echo nl2br("Bonjour 
 tout 
 le monde");/*affiche les sauts de lignes en remplaçant 
	les /n par <br>*/
	/*Fonctions spécifique au nombre.*/
	echo DECHEX(5555);/*renvoie la valeur hexadécimale d'un nombre. =>15b3*/
	echo CEIL(5.55);/*renvoie le nombre entier supérieur. =>6*/
	echo FLOOR(5.55);/*renvoie le nombre entier inférieur. =>5*/
	echo is_int(5.55);/*renvoie true si le contenu est un entier, false sinon.*/
	echo rand(0, 9);/*ou 0 est min, 9 est max, Cette fonction renvoie une variable 
	entière entre 0 et 9 aléatoirement.*/
	echo intval("525");/*convertit une chaîne en variable entière.*/
	/*Fonctions sur les dates.*/
	echo checkdate ( int $mois, int $jour, int $année);/*vérifie si une date est valide. 
	mois doit être compris entre 1 et 12, jour entre 1 et 31 et année entre 1 et 32767. 
	La fonction tient compte des années bissextiles. Remarquez que le format est 
	anglophone. Le résultat est une valeur logique.*/
?>

Exercices

Ex 1 : Nous avons des circules avec diamétre défférentes et nous voulons calculant leurs surfaces.
Ex 2 : Faites un programme qui donne les mentions a partir des points.
Ex 3 : Créer la fonction de jeux love matter.
Ex 4 : Créer la fonction qui nous permet de récupérer la date en français.

Les formulaires

Passage de parametre par l'url

On peut passer des informations lors de la construction du lien d'une page vers une autre

  • http:// :HyperText Transfer Protocole est un protocole de communication Client/Serveur.
  • localhost : Nom de server équivalent(127.0.0.1) son adresse IP.
  • test/ : Nom de site.
  • cible.php : Nom de fichier.
  • ? : Il sépare le nom de fichier de paramétre de paramétre envoyés dans l'url.
  • nom=MAHAMED et prenom=Omar : Noms des paramétres et leurs valeurs.
  • & : Permet de séparer les paramétres.
  • $_GET['nom_variable'] C'est un tableau qui regroupe les valeurs des variables et leurs nom sont les indices.

Zones de saisie standard POST

C'est la methode à utiliser par défaut. Les données sont transmises de façon non visibles du navigateur au serveur. La syntaxe au niveau du formulaire est :

Dans le fichier cible.php, les données sont récupérées dans le tableau $_POST : $_POST["nom_de_variable"]

Zones de saisie standard GET

Cette methode est à proscrire pour les passages des mots de passe et autres informations 'sensibles', par contre elle est pratique pour la mise au point puisque l'on voit dans l'URL les valeurs envoyées au serveur. La syntaxe au niveau du formulaire est :

Les autres Contrôles HTML

Ces Contrôles peuvent fonctionner avec un formulaire GET ou POST.

  • Boutons radio : Ce type de controle est à utiliser lorsque l'on veut que l'internaute ne puisse choisir qu'une option parmi plusieurs.
  • Case à cocher : Ce type de controle est à utiliser lorsque l'on veut que l'internaute puisse choisir plusieurs cases à cocher à la fois.
  • Liste de choix : Liste déroulante à choix unique. On ne peut sélectionner qu'un seul élément de la liste.
  • Liste à choix multiple : Liste déroulante à choix multiple : l'internaute peut sélectionner plusieurs options dans la liste.
  • Boite de dialogue : Zone de texte multiligne permet d'entrer des grandes textes.

Le code source de ce formulaire index.html

Le code source de cible.php

Géstion de fichiers.

Les fichiers textes sont une bonne alternative à la BDD. PHP possède toute une série de fonctions qui permet de créer, écrire, modifier et supprimer dans un fichier texte.

Ouvrir un fichier

<?php
	/*Ouvrir un fichier text*/
	$f = fopen("fichier.txt", "r");/*Le premier paramètre de la fonction est le nom du 
	fichier et le second paramètre est le mode dans lequel on peut ouvrir nos fichiers*/
?>

Les différents modes

modeDescription
'r'Ouvre en lecture seule : Le pointeur est placé au début du fichier.
'r+'Ouvre en lecture/écriture : Le pointeur est placé au début du fichier.
'w'Ouvre en écriture seule : Le pointeur est placé au début du fichier.
Réduit la taille du fichier à 0. Tentative de création si celui ce n'existe pas.
'w+'Ouvre en lecture/écriture : Le pointeur est placé au début du fichier.
Réduit la taille du fichier à 0. Tentative de création si celui ce n'existe pas.
'a'Ouvre en écriture seule : Le pointeur est placé au début du fichier.
Tentative de création si celui ce n'existe pas.
'a+'Ouvre en lecture/écriture : Le pointeur est placé à la fin du
fichier. Tentative de création si celui ce n'existe pas.
'x'Crée et ouvre le fichier en lecture seule : Le pointeur est placé au
début du fichier. Si le fichier existe déjà, fopen va échouer.
'x+'Crée et ouvre le fichier en lecture/écriture : Le pointeur est placé au
début du fichier. Si le fichier existe déjà, fopen va échouer.
  • Si la fonction fopen() echoue lors de l'ouverture du fichier, celle ci retourne 0.
  • La fonction fclose() est utilisé pour fermer un fichier.

Exemple

<?php
	/*Overture de fichier en mode "r"*/
	/*Si le fichier n'existe pas un message d'erreur générer par php sera afficher avec 
	le message au dessous 'Fichier introuvable !'*/
	if(!($f = fopen("data.txt", "r")))
		exit("Fichier introuvable !");
	fclose($f);
?>

Écrire dans un fichier.

L'écriture dans un fichier texte se fait avec la fonction fwrite(). Pour faire des retour à la ligne vous devez utiliser : " "

<?php
	$f = 'data.txt';
	$text = "ma chaine de caractères";
	$handle = fopen($f,"w");
	// regarde si le fichier est accessible en écriture
	if (is_writable($f)) {
		// Ecriture
		if (fwrite($handle, $text) === FALSE) {
			echo 'Impossible d'écrire dans le fichier '.$f.'';
			exit;
		}
		echo 'Ecriture terminé';
		fclose($handle);
	}
	else {
		echo 'Impossible d'écrire dans le fichier '.$f.'';
	}
?>

Compter le nombre de lignes.

A l'aide de 2 fonctions. L'une place le fichier dans un tableau et l'autre pour compter les lignes du tableau.

<?php
	$f = 'data.txt';
	if(file_exists($f)){
		$tab = file(($f);// place le fichier dans un tableau
		$nb = count($tab);// compte le nombre de ligne
		echo $nb;// Affiche le résultat
	}
?>

Récupérer le contenu.

La fonction file_get_contents permet de récupérer le contenu du fichier ou utiliser fopen avec fread.!

<?php
	$contents = file_get_contents("data.txt");
	echo $contents;
	// Ou Avec fopen, fread
	$filename = "data.txt";
	$handle = fopen($filename, "r");
	$contents = fread($handle, filesize($filename));
	echo $contents;
	fclose($handle);
?>

TP : Géstion de base de données

Pour que le php soit capable de gérer une base de données située dans un SGBDR, il doit communiquer avce ce dernier. Cette communication est présenté sous forme d'un tuyou qui permet d'établir une connexion entre le server d'application et le server de base de données.

Apache peut comminuquer avec plusieurs type de SGBDR(Oracle, SQLServer, PostgreSQL, ...), et chaqu'un d'eux il le fallait un tuyou spécifique. Ces tuyous se sont des extensions, pour activer une des extensions on doit se situe dans le fichier php.ini et décommenter l'extension qu'on voulait activé par l'enlève de ';' au début la ligne;

Ou on sélectant une de la liste, on cliquant sur la barre tâche=>Le géstionnaire s'affiche=>PHP=>PHP extensions

L'activation d'une extension permet l'utilisation d'ensemble des fonctions spécifiant un SGBD précis. exemple mysql_query("Une request"); qui permet de retourner un résultat aprés l'executer une requête côté server de base de données MySQL, la fonction mssql_query("Une request"); fait la même chose avec autre SGBDR SQLServer.

Le code php qui permet d'établir la connexion entre l'application et le serveur de base de données MySQL( extension de mysql est activé par défaut).

<?php
	mysql_connect('server', 'user', 'password');
	//Aprés l'établissement de la connexion, on selecte la base de données
	mysql_db_select('database_name');
?>

Le code optimisé pour établir la connexion et la gestion d'éventuelles erreurs

<?php
	//Connexion avec server en local
	$host = 'localhost'; 
	$base = 'mabase';
	$login = 'root';
	$pwd = '';
	$con = mysql_connect($host, $login, $pwd);//Etablir la connexion
	//Si il y erreur lors d'établissemnt de la connexion avec le server
	if(!$con){
		die("Désolé, connexion impossible à [$host] : ".mysql_error());
	}
	//si il y erreur lors de la selection de la base de données(au cas d'elle n'existe pas)
	$db = mysql_select_db($base, $con);
	if(!$db){
		print "Désolé, la base de données [$base] n'as pas été trouvé sur le serveur [$host]<br>".mysql_error();
		exit();
	}
		
	//die(message) joue le même rôle de print(message) avec exit()
?>

Aprés qu'on a établit la connexion avec le serveur , et seléction la base de données, on peut maintenant interroger cette dernière avec des requêtes SQL.

La fonction php qui permet d'envoyer une requête SQL au serveur de base de données et récupérer le résultat est mysql_query('requête SQL');(mysql_query cela dépend au server a qui adresser la requête, le MySQL, mssql_query() au cas d'un serveur SQLServer), le resultat :

  • Vrai (1) : La requête s'est déroulée normalement.
  • Faux(0) : Une erreur s'est produite lors de l'éxecution de la requête MySQL.
<?php
	//Connexion avec server en local
	.
	.
	//Création d'une nouvelle table
	$result = mysql_query('CREATE TABLE persons(id int(3) PRIMARY KEY AUTO_INCREMENT, nom varchar(25), prenom varchar(25))');
	if($result)
		echo 'La requête a été bien éxecutée';
	else
		echo 'Erreur : '.mysql_error();
?>

Cette fonction mysql_query('requêtes') (requêtes avec s) peut envoyer une ou plusieurs requêtes à la fois au serveur, même qu'il est déconseillé, il faut envoyer une par une en récupérant à charque fois le résultat d'éxecution de la requête.

Les requêtes envoyées au serveur sont soit des requêtes LDD(Langage de Définition de données) qui permet la description de la structure de la base (tables, vues, index, attributs, ...) ou des requêtes LMD(Langage de Manipulation de Données) permet la manipulation des tables et des vues.

Pour ne pas monopliser la communication avec la base de données, il faut libirer la connexion, pour qu'un autre puisse l'utiliser.

<?php
	//Connexion avec server en local
	//Traitement 
	//Fermeture de la connexion
	mysql_close() or die('Problème lors de la fermeture de la connexion : '.mysql_error());
?>




Téléchargement ...