1
PHP
I-Définition :
PHP (Personal Home Page ou Hypertext Preprocessor) est un langage de
scripts. Php est un langage exécuté coté serveur, à la différence de JavaScript et
HTML, donc vôtre code n'apparaît pas dans la source de vôtre page Web, seule
les informations que vous souhaité affichées seront visible par les visiteurs.
Une page qui ne contient que du HTML possède l'extension ".HTML". Une
page qui contient du code PHP possède l'extension ".PHP".
PHP permet d'interfacer très facilement de très nombreuses bases de données
notamment MySQL qui est gratuite et performante.
Un des gros avantages de PHP est l'intégration dans la même page du code
HTML et du code PHP. Vous pouvez avec PHP taper vos lignes de codes en
HTML, puis intégrer ou vous le désirez du code PHP et ainsi de suite.
Ce qu’il bien retenir aussi, c’est que PHP vous permet de créer des pages Web
dynamiques, qui se mettent à jour toutes seules.
II-Différences entre HTML_JavaScript et PHP
HTML_JavaScript :
1- Le client : demande avoir une page Web. Il va donc faire une demande au
serveur.
2- Le serveur : répond en envoyant la page Web.
PHP :
1- Le client : demande avoir une page Web. Il va donc faire une demande au
serveur.
2- Le serveur n’envoie pas la page au client. Il la génère. En effet le client n’est
pas capable de lire une page PHP. Le serveur va transformer la page en page
HTML.
3- Une fois la page et générée, elle ne contient plus que du code HTML. Le
serveur peut l’envoyer au client.
III-Les bases du PHP
Plusieurs balises sont utilisables pour indiquer le début et la fin de la partie en
langage PHP.
<? Php
/Début
codes php ...
?>
/fin
<?
codes php ...
?>
2
Pour afficher des textes : En utilisant soit la fonction Echo ou Print
<? Echo "message" ; Echo
(“message”);
Echo ‘message’ ; Echo (‘merci’);
?>
<? Print "message" ; Print ( "message" ) ;
Print ‘message’ ; Print (‘message’) ;?>
Il est possible de mettre des balises HTML dans une instruction PHP.
Commentaire :
Si votre commentaire ne se situe que sur une ligne vous pouvez le faire
précéder par deux slashs // ou par un dièse # et sur plusieurs ligne on utilise
/*.
Exemple :
<html><body>
<?php
echo "J’habite au <b>TUNIS</b> <BR>"; // Message avec retour à la ligne
echo "<BR>J’ai 23 ans ";
?>
</body></html>
Le fichier PHP ne sera exécuté qu’à travers son adresse WEB
(http://localhost/…) ou (
http://127.0.0.1
/...) etc
A- Les structures des données :
Les constantes : define(
"
Nom_Const "," Valeur"
)
<? define ("Nom","Med_Salah") ;
Echo "Je suis :".Nom ;?>
-
Il est possible de concaténer des chaînes avec le point:
<? $chaine1 = "Med";
$chaine2 = "Salah";
Echo $chaine1.$chaine2;
?>
Les variables :
Le caractère qui précède toutes les variables PHP est le dollar : $.
Les types texte :
<? $variable = "bonjour";
//on défini une variable
echo "$variable";
//on affiche le résultat
?>
Résultat : J’habite au TUNIS J’ai 23 ans Résultat : Je suis :Med_Salah Résultat : Je suis :MedSalah3
Les nombres :
<? $variable = 3;
//on défini une variable
echo $variable*3;
//on affiche le résultat qui égale à 9
?>
Les booléens : <? $variable1 = true;
$variable2 = false ;?>
Les types des variables : Pour connaitre les types des variables on utilise la
fonction Gettype()
<?
$var1 = 'salah' ;
$var2 = 3 ;
$var3 = 15.8 ;
Echo (gettype($var1)."<br>".gettype($var2)."<br>".gettype($var3));
?>
Après la fonction gettypes($var1) il existe un point car le résultat est une chaine
de caractère.
Type renvoyé par gettype Type de la donnée
Integer Entière
Double Réelle
String chaîne simple
Array liste ou tableau
Object Objet (pointeur)
Class Classe
NULL Type inconnu
Conversion de types: On utilise la fonction Settype($Nom_Var, "
type
"
) ; ou
$Nom_Var=(type)$Nom_Var ;
<?
$var1 = 'salah' ;
$var2 = 3;
$var3 = 15.8 ;
Settype ($var3, integer);
$var2 = (string)$var2 ;
Résultat : string integer double Résultat : var3 contient:15 et var2 contient:34
Echo ("var3 contient :".$var3."<br>"."et var2 contient :".$var2 );
?>
Int isset ($var) : La fonction Isset retourne le résultat True (1) si la variable var
possède une valeur, False (0) sinon.
<?
$Nom= "MedSalah" ;
Echo (isset($Nom)) ; // 1
?>
Les opérateurs :
D’affectation : = (exemple : $nom= "ali")
De comparaison : = = (exemple: if ($nom= = “ali”){…}) ,> ,>= ,< ,<=,
De calcul : +, -, /, *, % (Modulo)
Logique : && et, || ou, != différent, ! (non)
(exemple: if (($nom= = “ali”)&&($prenm !="salah")){…})
! not (non)
++: increment, - - decrement (exemple: for(i=1 ;i<=10 ;i++{…})
Exercice 1 :
Écrire une script PHP qui permet de déclarer deux variables quelconque et de
faire les opérations suivante : addition, soustraction, multiplication, division,
reste de division et la somme de toutes les opérations.
Et enfin d’afficher les résultats entiers des tous les opérations sous la forme
suivante :
Par exemple : x=20, y=3
Calculer :
Addition = 23
Soustraction = 17
Multiplication = 60
Division = 6
Reste de division = 2
Somme = 108
B- Les structures de contrôle simple et itératives :
Comme en JavaScript le Syntaxe est :
if (condition)
{cas A}
else
{cas B}
for (initialisation ; condition ; incrément) {…} :
exemple : for ($i = 0 ; $i<10 ; $i++)
<? //Exemple if ($var = = 'ok') { print 'test'; } else{ print 'refusé'; }?>
5
while (condition) {….};
do {….} while (condition);
Switch($var)
{Case $valeur1:
Liste d’instruction;
Break;
Case $valeur2:
Liste d’instruction;
Break;
Default: liste d’instruction;
}
Correction exercice1 :
Exercice 2 :
Écrivez une script PHP qui permet de déclarer deux variables x et y, de calculer
la puissance de x par y, de calculer la factorielle de y puis d’afficher les résultats
sur l’écran.
switch($operation) {
case '1':
print ' operation numero 1'; break; case '2':
print 'operation numero 2'; break;
default:
print 'operation par defaut'; }
<?php echo "<h1><b><i>Calculer</i></b></h1>"; $x=20; $y=3; $add=$x+$y; $sous=$x-$y; $mult=$x*$y; $divs=$x/$y; $mod=$x%$y; $divs = (integer)$divs ; $somm=$add+$sous+$mult+$divs+$mod;
echo ("l'addition=".$add."<br>"."La soustraction=".$sous."<br>"."La multiplication=".$mult."<br>". " La division=".$divs."<br>"."Le reste=".$mod."<br>"."Et la somme=".$somm);
6
Exemple : Si x=4 et y=2 le résultat : « la puissance de 4 par 2= 16 et la
factorielle de 2=2 »
<?php
………
………….….………
……….…..
?>
Exercice 3 :
Écrivez une script PHP permet d’afficher les entier diviser par 5 entre 1 et
100 puis d’afficher leur somme.
<?php
……….….. ……….….. ……….….. ……….….. ……….….. ?>VI-
Les entrés sorties en PHP :
Les sorties en PHP :
L’affichage se fait grâce à la fonction Echo ou Print :
$x= "MedSalah" ;
Echo(" je suis $x") ;
Les entrées en PHP :
Il existe deux solutions pour récupérer des données à partir d’une page PHP :
1- Récupérer les informations saisies à travers les objets des formulaires
(Zone de texte, case à cocher…) : on utilise l’une des deux fonctions
suivantes :
$_GET[‘Nom_Objet’] ou $_POST[‘Nom_Objet’], dépendamment de la
valeur de la propriété Methode de la balise FORM (Rappel :<form
action="@" method="POST">)
Exemple : Le nom de la page et Exemple.Php
<?
if (isset($_GET['Nom'])) {$Nom=$_GET['Nom']; echo ("Merci $Nom");} if (isset($_POST['Nom'])) {$Nom=$_POST['Nom']; echo ("Merci $Nom");} ?>
<form action="Exemple.php" methode="post"> Nom :<input type="text" name ="Nom">
<input type="submit" value ="valider"> </form>
La méthode Isset permet de retourner le résultat True (1) si la variable
$_Get[‘Nom’] possède une valeur si non false,
Action="Exemple.php" Designer la place du résultat de l’exécution de script PHP.
7
2- Récupération des informations envoyées en paramètre à un fichier
PHP à travers la syntaxe suivante :
http://adresse-url/nom_du_fichier
.php?variable1=valeur1&variable2=valeur2...
Exemple : <a
href="Exemple.php?Nom=Med&Prenom=Salah">Cliquer ici</a>
Rappel (les formulaires):<FORM method="post" action="URL d'expédition" ">
... les formulaires proprement dit ...
</FORM>
L'attribut "method" vous offre le choix entre Get et Post. La différence entre ces deux méthodes repose sur la façon dont les données seront transmises au serveur et exploitées par celui-ci. Généralement quand on récupère les valeurs d’un formulaire, on utilise le préfixe $_Post[‘Nom_Objet’] et quand on récupère les valeurs de puis une adresse on utilise le préfixe $_Get[‘Nom_Objet’]
L'attribut "action" spécifie l'adresse d'expédition (d’envoi) des données (indique la page à afficher).
Exercice :
Créer une page PHP permettant d’afficher un formulaire HTML classique comportant les 4 zone de saisi (Nom, Prénom, adresse et NumTel) et un bouton de type submit, suite à un click sur le bouton un nouvelle fichier affiche tous les informations saisi par l’utilisateur.
Les tableaux en PHP
Un tableau est composé d’un certain nombre d’éléments possédant chacun une valeur propre ainsi qu’une indice permettant de faire référence à cet élément.
Par défaut, l’indice du premier élément d’un tableau est zéro.
L’index dans le tableau peut être indifféremment un entier ou une chaîne de caractères. Les éléments d’un tableau peuvent être de type différent.
2 méthodes sont possibles :
Affecter directement les valeurs au tableau : Exemple : <?php $tableau[0]="a"; $tableau[1]="b"; $tableau[2]="c"; ?>
Utiliser la fonction array(). Exemple :
<?php
$tableau = array(″a″, ″b″, ″c″) ; ?>
8
On peut utiliser l’opérateur => afin de spécifier les indices particuliers des éléments d’un tableau. <?php $tableau = array(1=>"a", 2=>"b", 3=>"c") ; ?> Exemple récapitulatif : <?php
$tab1 = array(1,2,3,4); // automatique
$tab2 = array('couleur' => 'rouge', ‘gout' => 'sucre', 'forme' => 'rond', 'nom' => 'pomme'); // associative
echo ($tab1[0]); // affiche 1
echo ($tab2['gout']); // affiche sucre ?>
Parcourir un tableau
Les deux fonctions each() et list() peuvent être utilisées conjointement afin de parcourir un tableau, même si les indices ne sont pas séquentiels.
Exemple :
<?php
while (list ($cle, $valeur) = each ($tab2)) {
echo ("L'élément $cle est égal à $valeur <br>"); }
?>
Il existe d’autres fonctions prédéfini en PHP permettant de gérer un tableau :
Fonction
Description
Exemple
reset() Remet le pointeur interne de tableau au début. reset ($tab2) ; pos() Retourne la valeur de l'élément courant d'un tableau. $a=pos ($tab2) ; key() Retourne l'indice de l'élément courant d'un tableau. $b=key($tab2) ; next() Avance le pointeur interne d'un tableau. next($tab2) ; prev() Recule le pointeur courant de tableau. prev($tab2) ; end() Positionne le pointeur de tableau en fin de tableau. end($tab2) ; sizeof() Retourne le nombre d’éléments dans un tableau $c=sizeof($tab2) ; sort() Trier un tableau par valeur croissante sort($tab2) ; rsort() Trier un tableau par valeur décroissante rsort($tab2) ; ksort() Trier un tableau par indice croissante ksort($tab2) krsort() Trier un tableau par indice décroissante krsort($tab2)
Exemple 1 :
<?php
$pays = array ("us" => "Etats-Unis", "ch" => "Suisse", "ca" => "Canada","fr" => "France","de" => "Allemagne");
sort ($pays);
while (list ($cle, $val) = each ($pays)) {
Résultat :
L'élément couleur est égal à rouge L'élément gout est égal à sucre L'élément forme est égal à rond L'élément nom est égal à pomme
Résultat d’exécution :
L'élément 0 est égal à Allemagne L'élément 1 est égal à Canada L'élément 2 est égal à Etats-Unis L'élément 3 est égal à France L'élément 4 est égal à Suisse La taille du tableau est:5
9 echo "L'élément $cle est égal à $val<BR>\n"; }
Echo "La taille du tableau est : ".sizeof($pays) ; ?>
Exemple 2 :
<?php
$pays = array ("us" => "Etats-Unis", "ch" => "Suisse", "ca" => "Canada","fr" => "France","de" => "Allemagne");
ksort ($pays);
for (reset($pays);$key=key($pays);next($pays)) {
$x=pos($pays);
echo "L'élément: $key est égal à $x <BR>\n"; }
?>
Exercice 1:
Écrivez une script PHP permettant d’initialiser un tableau de 6 éléments d’une manière associative (noir=52, bleu=89, rouge=70, jaune=30, blanc=40 et vert=10)
T.A.F : Afficher tous les éléments du tableau. Afficher la taille du tableau.
Afficher le contenu du couleur rouge.
Trier les indices du tableau d’une manière descendante. Afficher ces derniers comme dans l’exemple ci-dessus.
Les Chaines de caractère en PHP
Les fonctions prédéfinies sur les chaines de caractère : (Exemple :$x="Bonjour Salah ")
Fonction
Description
Exemple
subst(string,début,taille) Retourne une portion de string $y=substr($x,7,15) ;//‘salah’
trim(string) retire les espaces de début et de fin $w=trim($x) ;//’Bonjour Salah’
strlen(string) Retourne la longueur de la chaîne $y=strlen($w) ;//13
implode(string sep,tab)
sep :Separateur
Retourne une chaîne séparée de tous les éléments du tableau
$pays = array ("a","b","c"); $y=implode("|",$pays);//a|b|c
explode(string sep,strin)
strin:String/sep: séparateur
Retourne un tableau qui contient les éléments de la chaîne string
$chain="a|b|c" ;
$tab=explode("|",$chain) ;
str_replace() Remplace toutes les occurrences de modèle dans chaîne par autre
$z=str_replace ("Salah","Med",$x); Exercice 2:
Écrivez une script PHP permettant d’initialiser la chaine ch1 à "Je suis" et ch2 à "Med Salah" T.A.F : Concaténer les deux chaines dans une autre.
Afficher les tailles de trois chaines comme : (« La taille de ch1=…, la taille de ch2=… et la taille de ch3=… »)
Remplacer le mot Salah par "Ali" et afficher le résultat.
Résultat d’exécution :
L'élément: ca est égal à Canada L'élément: ch est égal à Suisse L'élément: de est égal à Allemagne L'élément: fr est égal à France L'élément: us est égal à Etats-Unis
10
Retourner un tableau qui contient les éléments de la chaine.
Les fonctions en PHP
Comme en C la syntaxe et :Function Non_Fonction ($liste des argument) {
Instruction1 ; Instruction2 ; …
Instruction n ;
[return $valeur de retour ;]
}
Exemple :
<?
function carre($nombre) {
return $nombre * $nombre ;
}
echo carre(3) ; //affiche la valeur 9 echo carre(4) ; //affiche la valeur 16 ?>
Remarque : En PHP toute fonction doit être définie avant d’être utilisée. Exercice 3:
- Écrivez une script PHP permet d’effectuer le calcul combinatoire : Avec n et p sont déclaré par l’utilisateur puis afficher le résultat.
11 Correction Exercice 1 :
<? $tab = array ("noir"=>52, "bleu"=>89,"rouge"=>70,"jaune"=>30,"blanc"=>40 ,"vert"=>10);
$t=sizeof($tab);
echo "la taille du tableau=$t<br>"; echo ($tab['rouge']);
krsort ($tab);
for (reset($tab);$key=key($tab);next($tab)) {$x=pos($tab);
echo "L'élément: $key est égal à $x <BR>\n"; }?>
Correction Exercice 2 :
<? $ch1="je suis"; $ch2="Med Salah"; $ch3=$ch1.$ch2;
echo ("la taille de ch1=".strlen($ch1).", la taille de ch2=".strlen($ch2)." et la taille de ch3=".strlen($ch3)."<br>"); $z=str_replace("Salah","Ali",$ch2); echo "$z"; $tab=explode("|",$z); ?> Correction Exercice 3 : <? $n=6; $p=3; function fact ($x) { $p=1; for($i=1;$i<=$x;$i++) $p=$p*$i; return $p; } $resultat=fact($n)/(fact($n-$p)*fact($p)); echo ("le resultat=".$resultat); ?>
Utilisation de MySQL avec PHP
L’utilisation de MySQL avec PHP s’effectue en quatre étapes principales: Connexion au serveur des données.
Sélection de la base des données. Exécution de la Requête.
Exploitation des requêtes.
I. Connexion au serveur des données : (En utilisant la fonction : mysql_connect()) int mysql_connect (string hostname, string username , string password):
12
hostname: L’adresse du serveur de donnée qui à comme valeur par défaut "localhost". username: Le nom d’utilisateur qui à comme valeur par défaut "root".
password: Le mot de passe qui à comme valeur par défaut " ".
La fonction mysql_connect() retourne un entier permettant de vérifier l’établissement de la connexion, par exemple :
<? if(mysql_connect("localhost" , "root" , " ") > 0 ) {echo " Connexion réussie ! ";
}else
{echo " Connexion impossible ! ";
}?> Ou encore : <? $connexion= mysql_connect("localhost" , "root" , " ") ;?> II. Sélection de la base des données : (En utilisant la fonction : mysql_select_db())
int mysql_select_db(string database_name, [int link_identifier]) database_name : Nom de la base de données (obligatoire)
link_identifier : Identifiant de la connexion (facultatif) si on ne donne pas le paramètre
link_identifier, la fonction utilise la dernière connexion ouverte.
La fonction mysql_select_db() retourne true ou false selon que l’opération réussit ou non.
Exemple :
<? if(mysql_select_db( "ma_base ") = = True ) {echo "Sélection de la base réussie";
} else
{echo "Sélection de la base impossible";
}?> Ou encore : <? $conx = mysql_connect("localhost" , "root" , " ") ; $teste = mysql_select_db( "ma_base ",$conx) ?> III. Exécution d’une requête SQL : (En utilisant la fonction : mysql_query())
int mysql_query (string query, [int link_identifier])
Cette fonction permet d’envoyer au serveur MySQL une instruction SQL, par exemple :
<? $requete = "SELECT * FROM tab1 WERE nom = 'alain' "; $result = mysql_query( $requete );
?>
IV. Exploitation d’une requête
A la suite d’une requête de sélection (d’insertion, de modification ou de suppression), les données sont mises en mémoire. Pour pouvoir les exploiter, PHP gère un pointeur de résultat, c-à-dire qu’il repère un enregistrement parmi les autres puis il le gère.
La fonction de lecture du résultat :
Array mysql_fetch_array (int result, int result_type)
Extrait la ligne sous forme d’un tableau associatif. Le paramètre result_type est facultatif. Il peut prendre les valeurs suivantes : MYSQL_NUM (Les indices du tableau sont numériques), MYSQL_ASSOC (Les indices du tableau sont associatifs) ou MYSQL_BOTH (Les indices du tableau sont à la fois numériques et associatifs).
Si le paramètre result_type n’a pas spécifié, MYSQL_BOTH est considérée comme valeur par défaut de cet argument.
13 $enregistrement = mysql_fetch_array($result);
echo $enregistrement["prenom"] ; //Affiche le champ –prenom-
echo $enregistrement["nom"] ; //Affiche le champ –nom-
echo $enregistrement["date"] ; //Affiche le champ –date-
?>
int mysql_num_rows (int result)
Retourne le nombre d’enregistrements qui ont été retournés par la sélection. Exemple :
< ?
$requete = "SELECT * FROM membres"; $result = mysql_query($requete);
echo "il y a" .mysql_num_rows($result) ." membre(s)"; while($enregistrement = mysql_fetch_array($result)) {
echo $enregistrement["nom"]. " " . $enregistrement["prenom"] ; } ?>
Généralité et rappel sur les requêtes SQL :
Sélection Insertion Modification
mysql_connect("localhost",
"root"," ") ;
mysql_select_db("base1") ;
$requete ="Select * From tab";
mysql_query($requete);
mysql_connect("localhost","root"," ") ; mysql_select_db("base1") ;
$req="Insert into tab values(‘120’,..)";
mysql_query($req);
mysql_connect("localhost",
"root"," ") ;
mysql_select_db("base1") ;
$re="Update tab set … where"
mysql_query( $re);
Pour le requête de type Delete on utilise la même syntaxe. Autre fonction :
int mysql_affected_rows(): Permet de connaître le nombre d’enregistrement affectés par
la requête Update.( <? Echo mysql_affected_rows()."enregistrement modifies."; ?> )
Application :
Créer une application Web de Gestion de Stock qui possède les fonctionnalités suivante :
- Page d’accueille qui comporte deux liens vers Saisie.html et Recherche.php (La page d’accueille à l’extension PHP car il comporte la fonction Date()).
- Une interface de saisie des produits. - Une interface de recherche des produits.
Inscription Numéro : Nom : Date Commande : Prix : Valider Annuler Recherche Numéro de produit :
Num Nom DateCo Prix 2 Ordinateur 11/4/2008 625.000 2 Chercher Gestion de Stock Inscription Recherche 12/04/08
14
On suppose qu’on dispose d’une base de données "Stock", composée d’une table Produit. L’inscription se fait avec l’utilisation d’un autre page Ins.php (ce dernier affiche "Inscription avec sucées" après l’insertion) et la recherche se fait dans le même page Recherche.php.
Correction :
Interface de saisie Interface de recherche
Page d’accueille
<? //Ins.Php //on se connecte à la base de données
$db = mysql_connect("localhost","root","") or die ("erreur de connexion");
//on sélectionne vôtre base
mysql_select_db("stock",$db) or die ("erreur de connexion base"); $Num=$_POST['Num'];
$Nom=$_POST['Nom']; $Date=$_POST['Date']; $Prix=$_POST['Prix'];
mysql_query("INSERT INTO produit VALUES ('$Num','$Nom','$Date','$Prix')"); echo ("<center>Inscription avec sucées</center>");
?> <html> //Recherche.php <head><title>Recherche</title></head> <body> <? if(isset($_GET['Num'])or isset($_POST['Num'])) { if (isset($_GET['Num']))$Num=$_GET['Num']; if (isset($_POST['Num']))$Num=$_POST['Num']; } mysql_connect("localhost","root",""); mysql_select_db("stock");
$requete="select * from produit where Num='$Num'"; $resultat=mysql_query($requete);
$enreg=mysql_fetch_array($resultat); ?>
<center><b><h2><u>Recherche</u></h2></b></center><br> <form name="form" method="POST" action="Recherche.php"> Numéro de produit:<input type="text" name="Num"> <br> <center><input type="submit" value="Chercher"></center> </form> <table border=1> <tr> <td>num</td> <td>nom</td> <td>Date</td> <td>Prix</td> </tr> <tr> <td> <? echo $enreg["Num"];?></td> <td><? echo $enreg["Nom"];?></td> <td><? echo $enreg["DateCom"];?></td> <td><? echo $enreg["Prix"];?></td> </tr> </table> </body></html> <html><head> //Accueille.php <title>Acueille</title> </head> <body> <b><u><center><H2>Gestion de Stock</H2></center></u></b> <center><a href="saisie.html">Inscription</a></center> <center><a href="Recherche.php">Recherche</a></center> <center><?echo date("j/m/y");?></center> </body>