Cours PHP 2014
Cours PHP 2014
Plan du cours
0. Les bases de la programmation web
0.1. Le web et le site web
0.2. Le site web statique et le site web dynamique
0.3. Les différents types de Sites
0.4. Les outils de développement web
0.5. Les composantes d’une application web
0.6. Les échanges de données dans une application web avec formulaire
1. Introduction au Javascript
1.1. Les scripts côté navigateur
1.2. Javascript dans les pages HTML
1.3. Les instructions de bases
1.4. Exercices
2. Programmation web en PHP
2.1. Les bases du langage PHP
2.2. Configuration du PHP
2.3. Récupérer les paramètres envoyés par un client web
2.4. Gérer les bases de données MySQL
3. Système de publication de contenu
3.1. Introduction
3.2. Avantages des logiciels de gestion de contenu
3.3. Fonctionnalités attendues pour les logiciels de gestion de contenu
3.4. Quelques solutions existantes
4. Etude de cas
facilitent les opérations de mise à jour, permettent plus d’interactivité sur les
pages…
mises à jour : tout se fait depuis votre navigateur. De plus, l’application est
accessible depuis n’importe quel ordinateur connecté au web. On peut citer
comme applications web des services de facturation en ligne ou de gestion de
projets.
f) Le site communautaire
C’est un site qui fait la part belle à ses membres et propose de nombreux services
autour de la communication entre internautes. Le plus connu de ce site est bien
entendu Facebook. On peut également citer des sites basés sur des forums ou des
jeux en ligne comme Piplex.
g) Le blog
On ne présente plus le blog, ce symbole même du web 2.0 qui vous permet de
publier, jour après jour des billets dans lesquels vous pouvez écrire vos humeurs
mais aussi des articles d’actualité ou d’analyse d’un domaine particulier. Le blog
est un outil formidable pour faire la promotion de votre activité, de renforcer votre
réputation en ligne tout en améliorant votre référencement naturel.
h) Le site spécifique, sur mesure
Cette dernière catégorie regroupe en fait tous les autres types de sites qui
n’entrent pas dans celles présentées précédemment. Ce sont des sites qui sont
développés sur mesure pour un client qui a des besoins spécifiques après l’étude
d’un cahier des charges.
client, le serveur déclenche le script (SA) associé à l’URL demandée, script qui va
détecter les paramètres et les traiter.
4. le serveur délivre la page web construite par programme (SA, SB, SC). Cette
étape est identique à l’étape 2 précédente. Les échanges se font désormais selon
les étapes 2 et 3.
1. Introduction au Javascript
1.1. Les scripts côté navigateur
Les simples pages HTML (avec ou sans objets) ne fournissent des solutions aux
besoins d'interactivité et de dynamisme des sites. Quand le visiteur demande une
pareille page HTML en tapant une adresse URL, le serveur web lui renvoie
simplement le contenu de la page demandée, c'est le navigateur web qui
interprète le contenu HTML et les plug-ins qui interprètent les objets, en
demandant à leur tour le contenu des objets au serveur web.
Si du code, côté client, est inséré dans la page, le serveur web renverra également
la page au client, y compris le code. C'est donc, à nouveau le navigateur web qui
doit interpréter le code et faire ce que le code demande.
La programmation côté client sera utilisée essentiellement dans le cas de
validation de formulaires (champs obligatoires, petits calculs,...) et dans la création
de petites animations (menus déroulants, ...).
La programmation côté client utilise des langages de scripts. À la différence
d'autres langages de programmation, ces langages ne sont pas compilés, ils sont
interprétés par le navigateur web du visiteur, et leur syntaxe est moins stricte que
celle des langages de développeurs (variables non-typées a priori, le point-virgule à
la fin des instructions est optionnel, ...).
Un script est une portion de code qui vient s'insérer dans une page HTML. Le code
du script n'est toutefois pas visible dans la fenêtre du navigateur car il est compris
entre des balises spécifiques qui signalent au navigateur qu'il s'agit d'un script écrit
dans un langage spécifique.
Les langages de script côté client sont nombreux. En voici quelques uns :
Javascript : qui est le plus utilisé. Il est reconnu par tous les navigateurs (dans
les versions actuelles). Il se base sur le langage normalisé ECMAScript et
possède une syntaxe issue du langage Java.
JScript : qui est très proche du JavaScript. c’est simplement une adaptation de
celui-ci par Microsoft.
VBScript : qui est le langage de script développé par Microsoft sur base du
Visual Basic. Ce langage n'est interprété que par les navigateurs basés sur ceux
développés par Microsoft (soit Internet Explorer et Maxthon). Il est donc peu
utilisé sur l'Internet (mais utilisé parfois sur des intranets).
Perlscript : qui est développé sur base du langage Perl. Il n’est également
interprété que par Internet Explorer et est peu utilisé.
1.2. Javascript dans les pages HTML
JavaScript a été initialement développé par Netscape et s'appelait à l'époque
LiveScript. Adopté à la fin de l'année 1995, par la firme Sun (qui a aussi développé
Java), il prit alors son nom actuel de JavaScript. Microsoft l'a aussi adopté à partir
de son Internet Explorer 3.
Les scripts JavaScript sont gérés et exécutés en direct et sans retard par le
navigateur lui-même sans devoir faire appel aux ressources du serveur. Par
conséquent la page est chargée sur le navigateur avec le code source qui contient
des scripts bruts de JavaScript en vue d’exécution. Il est alors évident que la
confidentialité du code est « compromise » et il peut être copié et réutilisé par
d’autres personnes.
On appelle souvent le langage JavaScript un langage événementiel. En effet, la
plupart de ses scripts sont associés à des événements qui peuvent se produire sur
le navigateur tel que le chargement de la page, la fermeture de la page, le clic, le
survol, la sélection, la frappe au clavier… JavaScript est généralement utilisé pour
contrôler les formulaires avant envoi au lieu d’attribuer ce travail à un langage coté
serveur tel que le PHP.
La balise <script> informe le navigateur sur le début d’un script. Et pour préciser
que c’est du JavaScript on ajoute l’attribut language=”javascript”.
La balise devient alors :
<script language=”javascript”>
La balise </script> informe de la fin du script JavaScript.
Il est toutefois possible de préciser au navigateur la version JavaScript à exécuter
en ajoutant son identificateur.
une variable est implicitement déclarée dès son apparition et typée par son
contexte d'utilisation (affectation).
Toute instruction se clôture par un point virgule.
Il est également important de signaler que Javascript est sensible à la casse des
caractères (différenciation entre les minuscules et majuscules, ex. Mois ≠
mois).Les méthodes toLowerCase() et toUpperCase() permettent de convertir
tous les caractères d’une chaîne respectivement en minuscule et en majuscule.
Une chaîne de caractères est présentée encadrée par des guillemets " ou en la
délimitant par des apostrophes ' et en plaçant le tout entre parenthèses.
Si vous souhaiter utiliser des guillemets dans vos chaînes de caractères, tapez \"
ou \' pour les différencier vis à vis du compilateur.
document.mon_form.mon_text
- L’objet « document » se troue dans l’objet « window ». L’objet window (ou
fenêtre) est l’objet le plus haut en hiérarchie. C’est à partir de là que
commence l’appel aux objets. L’expression précédente redevient:
window.document.mon_form.mon_text
N.B. : Puisque le premier objet dans la hiérarchie est l’objet « window », alors on
peut toujours ne pas le mentionner lors de l’appel hiérarchique aux objets. La
dernière expression devient alors: document.mon_form.mon_text
On veut maintenant accéder à la valeur du champ texte, en mentionnant alors la
méthode (ou la propriété) à la fin de la hiérarchie. On aura donc:
document.mon_form.mon_text.value
1.4. Quelques instructions de bases
Les fonctions d’entrée et de sortie
La fonction alert est une méthode de l’objet window qui effectue une sortie
d’expression à travers une boîte de message. Cette boite bloque le programme
en cours tant que l'utilisateur n'aura pas cliqué sur "OK". Elle va aussi nous
aider à débugger les scripts. Sa syntaxe est :
Alert (expression) ;
Où expression peut être un nombre, une chaîne de caractères ou une variable.
Si vous souhaitez écrire sur plusieurs lignes, il faudra utiliser le signe \n.
La fonction prompt est une autre méthode de l’objet window qui affiche une
boîte d’entrée de données avec un texte dessus. Il est généralement utilisé
pour saisir des données fournies par l'utilisateur. Sa syntaxe est :
Rep=Prompt ("texte de la boite d'entrée") ;
Où Rep est la variable qui reçoit la donnée saisie en entrée.
On peut également proposer une valeur d’entrée par défaut. La syntaxe
devient :
Rep=Prompt ("texte de la boite d'entrée", "valeur par défaut") ;
En cliquant sur OK, la méthode renvoie dans Rep la valeur tapée par l'utilisateur
ou la valeur par défaut. Si l'utilisateur clique sur Annuler ou Cancel, la valeur
null est alors renvoyée.
N.B. : Le texte de la boite d'entrée ne doit pas dépasser 45 caractères sous
Netscape et 38 sous Explorer 3.0.
Exemple : Soit le code suivant qui affiche la date courante du système à travers
une boîte de dialogue, et demande à l’utilisateur d’entrer son nom avant de
l’afficher.
<html>
<head><title>Exemple Boîtes de dialogue</title></head>
<body >
<h1>Utilisation des boîtes "alert et prompt" </h1><hr/>
<script language="Javascript">
date=new Date();
mois=date.getMonth()+1
alert("Nous sommes le "+ date.getDate()+" - "+ mois +" - "+ date.getYear());
rep=prompt('Tapez votre nom')
alert("Votre nom est : "+rep)
</script>
</body>
</html>
Nota : toute fois les boîtes de dialogues sont à éviter dans les pages web, car elles
les rendent lourdes.
Exemple : Entrez une valeur quelconque dans la zone de texte d'entrée. Appuyer
sur le bouton pour afficher cette valeur dans la zone de texte de sortie.
<html>
<head>
<script language="javascript">
function afficher(form2) {
var testin =document. form2.input.value;
document.form2.output.value=testin
}
</script>
</head>
<body>
<form name="form2">
Zone de texte d'entrée : <input type="text" name="input" value=""><br>
<input type="button" name="bouton" value="afficher"
onclick="afficher(form2)"><br>
Zone de texte de sortie : <input type="text" name="output" value="">
</form>
</body>
</html>
Grâce au gestionnaire d'évènement onclick, il est possible d'exécuter une fonction
au click du bouton.
La méthode confirm qui affiche une boite de dialogue de confirmation qui
donne la possibilité de choisir entre ‘OK’ (renvoie la valeur true) ou ‘Annuler’
(renvoie la valeur false). Cette méthode est très utile pour confirmer les actions
de l’utilisateur sur le navigateur. Sa syntaxe :
Rep=confirm ("texte de la boite d'entrée") ;
Une minuterie
Javascript met à votre disposition une minuterie (ou plus précisément un compteur
à rebours) qui permettra de déclencher une fonction après un laps de temps
déterminé.
La syntaxe de mise en route du temporisateur est :
nom_du_compteur = setTimeout("fonction_appelée()", temps en milliseconde)
Les Opérateurs
Les opérateurs sont des symboles qui permettent de manipuler des variables,
c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types
d'opérateurs : les opérateurs de calcul, les opérateurs d'assignation, les opérateurs
d'incrémentation, les opérateurs de comparaison, les opérateurs logiques …
Les opérateurs de calcul : ils permettent de modifier mathématiquement la valeur
d'une variable
Opérateur Dénomination Exemple Résultat (avec X valant 7)
+ Addition X+2 9
- soustraction X-2 5
* multiplication X*3 21
/ Division X/2 3.5
= affectation X=3 Met la valeur 3 dans la variable X.
Les opérateurs d'assignation : ils permettent de simplifier des opérations telles
qu’ajouter une valeur dans une variable et stocker le résultat dans la variable. Une
telle opération s'écrirait habituellement de la façon suivante par exemple: x=x+2
Avec les opérateurs d'assignation il est possible d'écrire cette opération sous la
forme suivante: x+=2 Ainsi, si la valeur de x était 7 avant opération, elle sera de 9
après...
Les autres opérateurs du même type sont les suivants:
Opérateur Effet
-= Soustrait deux valeurs et stocke le résultat dans la variable
*= Multiplie deux valeurs et stocke le résultat dans la variable
/= Divise deux valeurs et stocke le résultat dans la variable
Les opérateurs d'incrémentation : ils permettent de facilement augmenter ou
diminuer d'une unité une variable. Ces opérateurs sont très utiles pour des
structures telles que des boucles, qui ont besoin d'un compteur (variable qui
augmente de un en un).
Un opérateur de type x++ permet de remplacer des notations lourdes telles que
x=x+1 ou bien x+=1
Opérateur Dénomination Effet Ex. Résultat (avec X = 7)
++ incrémentation Augmente d’une X++ 8
unité la variable
-- décrémentation Diminue d’une X -- 6
unité la variable
Les opérateurs de comparaison
Opérateur Dénomination Effet Syntaxe Résultat (avec X= 7)
== Egalité Vérifie que deux X==3 Retourne 1 si X est
valeurs sont égales égal à 3, sinon 0
< Infériorité Vérifie qu’une X<3 Retourne 1 si X est
stricte variable est inférieur à 3, sinon 0
strictement inférieure
à une valeur
<= Infériorité Vérifie qu’une X <= 3 Retourne 1 si X est
variable est inférieure inférieur ou égal à
ou égale à une valeur 3, sinon 0
> Supériorité Vérifie qu’une X>3 Retourne 1 si X est
stricte variable est supérieur à 3, sinon
strictement 0
supérieure à une
valeur
>= Supériorité Vérifie qu’une X >= 3 Retourne 1 si X est
variable est supérieur ou égal à
supérieure ou égale à 3, sinon 0
une valeur
=! Différence Vérifie qu’une X=!3 Retourne 1 si X est
variable est égal à 3, sinon 0
différente à une
valeur
</html>
Exemple 2 : Choix à l’aide des boutons radio.
<html>
<head>
<script language="javascript">
function choixprop(form3) {
if (form3.choix[0].checked) { alert("vous avez choisi la proposition " +
form3.choix[0].value) };
if (form3.choix[1].checked) { alert("vous avez choisi la proposition " +
form3.choix[1].value) };
if (form3.choix[2].checked) { alert("vous avez choisi la proposition " +
form3.choix[2].value) };
}
</script>
</head>
<body>
entrez votre choix :
<form name="form3">
<input type="radio" name="choix" value="1">Choix numéro 1<br>
<input type="radio" name="choix" value="2">Choix numéro 2<br>
<input type="radio" name="choix" value="3">Choix numéro 3<br>
<input type="button" name="but" value="Quel et votre choix ?"
onclick="choixprop(form3)">
</form>
</body>
</html>
Exemple 3 : Affichage heure.
<html>
<head>
<script language="javascript">
<!--
function getdt(){
dt=new date();
hrs=dt.gethours();
min=dt.getminutes();
sec=dt.getseconds();
tm=" "+hrs+":";
tm+=min+":";
tm+=sec+" heure de Kinshasa";
document.horloge.display.value=tm;
settimeout("getdt()",1000);
}
// -->
</script>
</head>
<body onload="getdt()">
<form name="horloge">
<input type="text" name="display" size=25 value ="">
</form>
</body>
</html>
L'instruction switch
Elle permet d’effectuer un choix entre plusieurs en comparant la valeur test aux
valeurs possibles. En cas de concordance avec un cas, les instructions associées à
ce cas sont exécutées. Sa syntaxe est :
switch(valtest)
</select>
</form>
</body>
</html>
Les boucles
Les boucles sont des structures qui permettent d'exécuter plusieurs fois la même
série d'instructions jusqu'à ce qu'une condition soit ou ne soit plus réalisée.
La façon la plus commune de faire une boucle, est de créer un compteur (une
variable qui s'incrémente, c'est-à-dire qui augmente de 1 ou autre nombre à
chaque tour de boucle) et de faire arrêter la boucle lorsque le compteur dépasse
une valeur limite.
La boucle for
Elle permet d'exécuter plusieurs fois la même série d'instructions en fonction de la
réalisation d'un certain critère. Sa syntaxe est :
for (valeur initiale du compteur; condition; progression du compteur) {
liste d'instructions
}
Par exemple:
for (i=1; i<6; i++) {
Alert(i)
}
Cette boucle affiche 5 fois la valeur de i, c'est-à-dire 1, 2, 3, 4, 5.
Elle commence à i=1, vérifie que i est bien inférieur à 6, puis progresse de 1 jusqu'à
atteindre la valeur i=6, pour laquelle la condition ne sera plus réalisée, la boucle
s'interrompra et le programme continuera son cours après l'accolade de
fermeture.
Nota : il faudra toujours vérifier que la boucle a bien une condition de sortie (i.e le
compteur s'incrémente correctement)
L'instruction while
Elle représente un autre moyen d'exécuter plusieurs fois la même série
d'instructions tant que la condition est réalisée. Sa syntaxe est :
while (condition) {
liste d'instructions
}
Attention, la condition de sortie pouvant être n'importe quelle structure
conditionnelle, les risques de boucle infinie (boucle dont la condition est toujours
vraie) sont grands, c'est-à-dire qu'elle risque de provoquer un plantage du
navigateur!
Arrêt inconditionnel
L'instruction break permet d'interrompre prématurément une boucle for ou while.
Pour illustrer ceci, voyons cet exemple :
compt=1;
while (compt<5) {
if (compt == 4)
break;
document.write ("ligne : " + compt + "<br>");
compt++;
}
document.write("fin de la boucle");
La boucle while sera interrompue par le break, une fois que le compteur aura
atteint la valeur 4. A ce moment, "fin de boucle" sera affiché.
Saut inconditionnel
Il peut être nécessaire de faire sauter à la boucle une ou plusieurs valeurs sans
pour autant mettre fin à celle-ci.
La syntaxe de cette expression est "continue;" (cette instruction se place dans une
boucle!), on l'associe généralement à une structure conditionnelle, sinon les lignes
situées entre cette instruction et la fin de la boucle seraient obsolètes.
Exemple: Imaginons que l'on veuille imprimer pour x allant de 1 à 6, la valeur de
1/(x-4).Il est évident que pour x=4, il y aura une erreur.
<html><head><title>Boucle tant que</title>
</head>
<body>
<center><h1>Exemple d'une boucle</h1></center><hr>
<p>Vous allez gérer la division par 0 quand boucle atteindra la valeur 4</p>
<script language="JavaScript">
x=1
while (x<=6) {
if (x == 4) {
alert('division par 0')
x++;
continue;
}
a = 1/(x-4);
alert(x)
x++
}
</script>
</body>
</html>
Grâce à l'instruction continue il est possible de traiter la valeur x=4 à part puis de
continuer la boucle.
En lieu et place de continue, l’instruction break arrête la boucle.
BATUBENGA J.D. Page 27
Cours de Langage PHP
La fonction (sous-programme)
On appelle fonction un sous-programme qui permet d'effectuer un ensemble
d'instructions par simple appel de la fonction dans le corps du programme
principal.
La déclaration d'une fonction
Avant d'être utilisée, une fonction doit être définie car pour l'appeler dans le corps
du programme il faut que le navigateur la connaisse, c'est-à-dire qu'il connaisse
son nom, ses arguments et les instructions qu'elle contient. La définition d'une
fonction s'appelle "déclaration". La déclaration d'une fonction se fait grâce au mot
clé function selon la syntaxe suivante:
function Nom_De_La_Fonction(argument1, argument2, ...) {
liste d'instructions
}
Remarques:
Un nom de fonction doit commencer par une lettre ; peut comporter des
lettres, des chiffres et est sensible à la casse (différenciation entre les
minuscules et majuscules)
Les arguments sont facultatifs, mais s'il n'y a pas d'arguments, les parenthèses
doivent rester présentes
Appel de fonction
Pour exécuter une fonction, il suffit de faire appel à elle en écrivant son nom (une
fois de plus en respectant la casse) suivi d'une parenthèse ouverte
(éventuellement des arguments) puis d'une parenthèse fermée:
Nom_De_La_Fonction();
Remarque:
Si jamais vous avez défini des arguments dans la déclaration de la fonction, il
faudra veiller à les inclure lors de l'appel de la fonction (le même nombre
d'arguments séparés par des virgules)
Pour éviter d’erreurs de référence, toute fonction doit être déclarée avant d’être
appelée, et cela se fait généralement dans les balises <script> et </script>situées
dans l'en-tête de la page.
Grâce au gestionnaire d'évènement onLoad (à placer dans la balise body), il est
possible d'exécuter une fonction au chargement de la page, comme par exemple
l'initialisation des variables pour votre script, et/ou le test du navigateur pour
savoir si celui-ci est apte à faire fonctionner le script. Il s'utilise de la manière
suivante:
<html>
<head>
<script language="Javascript">
function Chargement() {
alert('Bienvenue sur le site');
}
</script>
</head>
<body onLoad="Chargement();" >
Javascript qui ne sert absolument à rien si ce n'est déranger vos visiteurs...
</body>
</html>
Les paramètres d'une fonction
Il est possible de passer des paramètres à une fonction, c'est-à-dire lui fournir une
valeur ou le nom d'une variable afin que la fonction puisse effectuer des
opérations sur ces paramètres ou bien grâce à ces paramètres. Lorsque vous
passez plusieurs paramètres à une fonction, il faut les séparer par des virgules,
aussi bien dans la déclaration que dans l'appel et il faudra veiller à bien passer le
bon nombre de paramètres lors de l'appel au risque sinon de créer une erreur.
Imaginons que l'on veuille créer une page web qui affiche une boîte de dialogue
avec un texte différent selon le lien sur lequel on appuie. La méthode de base
consiste à faire une fonction pour chaque texte à afficher:
<html>
<head>
<script language="Javascript">
function Affiche1() {
alert('Clique sur Texte 1');
}
function Affiche2() {
alert('Clique sur Texte2');
}
</script>
</head>
<body onLoad="Chargement();" >
<a href="javascript:;" onClick="Affiche1();">Texte1</a><br/>
<a href="javascript:;" onClick="Affiche2();">Texte2</a>
</body>
</html>
Il existe toutefois une méthode plus "confortable" qui consiste à créer une fonction
qui a comme paramètre le texte à afficher:
<html>
<head>
<script language="Javascript">
function Affiche(Texte) {
alert(Texte);
}
</script>
</head>
<body onLoad="Chargement();" >
<a href="javascript:;" onClick="Affiche('Clique sur Texte1');">Texte1</a>
<a href="javascript:;" onClick="Affiche('Clique sur Texte2');">Texte2</a>
</body>
</html>
Exemple d’un lien qui ouvre d’une fenêtre dans laquelle s’affiche une image :
<html>
<head>
<title>nouvelle fenetre</title>
<script>
function creerFenImage() {
fiRef = window.open ("","fenImage", "width=290, height=200, scrollbars=no,
toolbar=no, location=no, directories=no, status=no")
}
</script>
<body>
<a href="JD.jpg" target="fenImage"onClick="creerFenImage()">
<b>cliquer pour ouvrir une nouvelle fenêtre </b></a>
</body>
</html>
Exemple de gestion d’un envoi de mail :
<html>
<head><title>Envoyer un mail</title></head>
<body>
<script>
function envoyer() {
BATUBENGA J.D. Page 31
Cours de Langage PHP
}
</script>
<form name="mail" action="" method="get" enctype="text/plain"
onsubmit="envoyer()">
<b>sujet du mail : </b><br>
<select name="sujet">
<option value="probleme">problème
<option value="suggestion"> suggestion
<option value="commentaire" selected> commentaire
</select>
<hr>
<p>
<b>message :</b><br>
<textarea name="message" rows="15" cols="50" wrap></textarea>
<input type="hidden" name="browser">
<hr>
<center>
<input type="submit" value="envoyer le message">
</center>
</form>
</body>
</html>
L'emploi de this
Lorsque vous faîtes appel à une fonction à partir d'un objet, par exemple un
formulaire, le mot-clé this fait référence à l'objet en cours et vous évite d'avoir à
définir l'objet en tapant window.objet1.objet2... ainsi lorsque l'on passe l'objet en
cours en paramètre d'une fonction, il suffit de taper nom_de_la_fonction(this)
pour pouvoir manipuler cet objet à partir de la fonction.
Pour manipuler les propriétés de l'objet il suffira de taper this.propriété (où
propriété représente bien sûr le nom de la propriété).
function valeur(){
with (document.frmpersonne){
champs=/^\s*(\d+)\s*$/.exec(txtAge.value);
if (champs == null){
alert('Age incorrect');
txtAge.focus();
return;
}
txtAge.value=champs[1];
submit();
}
}
</script>
</head><body><center>
<h1>Un formulaire Web</h1>
<h2>Récupération des valeurs des champs par un script Javascript côté
navigateur</h2>
<hr>
<form name="frmpersonne" method="post">
<br>
<table>
<tr><td>Nom</td>
<td><input type="text" value="" name="txtNom"></td>
</tr><tr><td>Age</td>
<td><input type="text" value="" name="txtAge"></td>
</tr><tr></tr>
1.5. Exercices
1. Proposer une page qui permet la lecture de quatre valeurs puis calcule et affiche
leur moyenne.
2. Modifier le formulaire précédent en exigeant que l’âge soit supérieur à 15 pour
que l’envoie soit validé.
Saisissez un nom pour l’alias (nom de votre site, ex. Urkim) et le chemin du
répertoire créé (ex. C:\weblocal\sites\sites1).Cliquez sur valider pour terminer.
Il ne reste qu’à redémarrer EasyPHP pour qu’il prenne en charge votre nouveau
site, faute de quoi vous aurez un message d’erreur 404 (‘impossible d’afficher la
page).
Revenez à l'interface d’administration d'EasyPHP, où avec un clic sur le nom de
votre alias, vous visualisez votre site avec ses différentes pages.
Les pages web sont au format html, tandis que les pages web dynamiques
générées avec PHP sont au format php (index.php par exemple). Le code source
php est directement inséré dans le fichier HTML grâce aux balises suivantes :
<?php …?>(balise standard)
<? …?> (balise concise)
<script language=‘’PHP’’> … </script> (balise de script)
Exemple d’une page nommée index.php:
<html>
<head>
<title>Notre première instruction : echo</title>
</head>
<body>
<h2>Affichage de texte avec PHP</h2>
<p>
Cette ligne a été écrite entièrement en (x)HTML.<br />
<?php echo("Celle-ci a été écrite entièrement en PHP.<br>");
Printf("MWAMBA NZAMBI %s","Junior Jude");
?>
</p>
</body>
</html>
Les variables
En PHP le typage des variables est implicite (ce n’est pas un langage très typé). Il
n’est donc pas nécessaire de déclarer les types ni d’initialiser les variables. Il est
même possible d’affecter à une variable des valeurs de types différents dans le
même script.
Les identificateurs de variables sont précédées par le symbole « $ »
Exemple:
$nom=‘‘MUJINGA’’;
$c=$a+$b;
Les variables peuvent être de type entier (integer), réel (double), chaîne de
caractères (string), tableau (array), booléen (boolean).
Chaîne de caractères : la valeur est délimitée par des guillemets (simples ou
doubles, on privilégie les simples pour question de rapidité) :
<?php
$prenom = 'Anthony';
?>
Un nombre : il peut s’agir d’un nombre entier ou d’un nombre réel (flottant) :
<?php
$nombre = 7;
$nombre = 3.02;
?>
Un booléen : les variables booléennes peuvent prendre deux valeurs : la
valeur true (vrai) et la valeur false (faux). Elles peuvent être utiles pour savoir
par exemple si une option est activée ou pas :
<?php
$afficher_options = false; //on n'affichera pas les options
$utiliser_cache = true; //on utilisera un cache
?>
Il est possible de convertir le type d’une variable, settype($var, ’’type’’) : convertit
la variable d’un type à un autre.
Exemple:
$str = ’’12’’; // $str vaut la chaîne ‘’12’’
$nbr = (int)$str; // $nbr vaut le nombre 12
N.B. : Les constantes PHP ne sont préfixées par aucuns symboles. Elles sont
déclarées de la façon suivante :
define(‘‘id_constante’’,‘‘valeur’’);
// ou bien define(id_constante, ‘‘valeur’’);
Exemple : define(‘‘nom’’, ‘‘UNIKIN’’); // la constante nom vaut la valeur UNIKIN
Les constantes ne sont définie qu’une seule fois dans le script (leurs valeurs restent
inchangées et leurs identificateurs ne sont pas sensibles à la casse, contrairement
aux variables).
Les opérateurs
Les opérateurs arithmétiques sont :+ (addition), - (soustraction), * (multiplié),
/(divisé), %(modulo), ++ (incrément) et --(décrément).
Les opérateurs d’assignement := (affectation), *= ($x*=$y équivalent à $x=$x*$y),
de même pour /=, +=, -=, %=
Les opérateurs logiques : and, && (et), or, || (ou), xor (ou exclusif) et ! (non)
Et les opérateurs de comparaison :== (égalité), < (inférieur strict), <= (inférieur
large), >, >= et != (différence)
La concaténation de chaînes
L’opérateur de concaténation de chaînes est « . », et se présente sous 2 formes :
Exemple 1 :
$var1 = ‘’Bonjour’’;
$var2 = ‘’ à tous’’;
echo $var1.$var2; // imprime Bonjour à tous
Exemple 2 :
$var = ‘Ca va bien’;
$var.= ‘’ monsieur’’
echo $var; // affiche Ca va bien monsieur
Les structures de contrôle
La syntaxe des structures de contrôle est la même que celle en langage C.
Structure conditionnelle si … alors … [sinon …]
if( condition1 )
{
traitement 1
}
elseif(condition 2-1)
{
traitement 2-1
}
else
{
traitement 2-2
}
Sélection de cas (branchement multiple)
switch( paramètre_index )
{
case valeur 1 : { traitement 1 } break;
case valeur 2 : { traitement 2 } break;
…
default : { traitement par défaut }
}
Structure de boucle en nombre défini
for( $i=$n ; $i<$m ; $i++ )
{
traitement
}
Où $i le compteur, reçoit sa valeur initiale $n ; $i<$m est la condition de sortie
avec $m la limite à ne pas dépasser ; $i++ est l’expression de progression
du compteur.
Structure de boucle en nombre non défini
- Tant que …
while( condition )
{
traitement
}
- Faire … Tant que …
do
{
traitement
}
while( condition )
N.B. : L’instruction break permet de quitter prématurément une boucle. Et
L’instruction continue permet d’ignorer le traitement associé à une valeur de la
boucle et de passer à l’occurrence suivante d’une boucle.
Exemple 1 :
while($nbr < 10) {
echo $nbr.’’<br>’’;
if($nbr == 5)
break;
$nbr++;
}
Exemple 2 :
for($i=1; $i<=10; $i++) {
if($i==5)
continue;
echo $i;
}
La valeur 5 ne sera pas affichée.
Les tableaux
La fonction array() permet de créer des tableaux dynamiques qui seront exploités
par les scripts PHP. Un tableau array est temporaire et ne reste généré que le
temps du déroulement du script.
Les tableaux array servent souvent à stoker les données provenant d’une base de
données en attendant le traitement. Elles permettent aussi aux fonctions de
retourner plusieurs résultats au lieu d’une seule.
Remarque : Les tableaux dynamiques ou arrays n'ont rien à voir avec les tableaux
HTML, qui servent à la mise en forme des données de la page Web.
Pour initialiser un tableau on utilise plusieurs méthodes:
Méthode 1: (classique)
$tableau= array($val1,$val2,$val3,…);
Exemple:
$tab=array(‘’URKim’’,2012,’Kinshasa’);
dans ce cas $tab[0]=‘’URKim’’, $tab[1]=2013 et $tab[2]=‘Kinshasa’
Méthode 2: (initialisation directe)
$tableau[0]=$val0;
$tableau[1]=$val1;
$tableau[10]=$val10; …
Méthode 3: (initialisation directe implicite)
$tableau[]=$val0; (sous-entend $tableau[0]=$val0)
$tableau[]=$val1; (sous-entend $tableau[1]=$val1)
$tableau[]=$val2; …
Ainsi, l’appel d’un élément du tableau se fait à l’aide de son indice.
Exemple:Echo $tab[0];
Parcours d’un tableau
La première méthode pour parcourir un tableau consiste à utiliser une boucle tant
que.
$i=0;
while($i <= count($tab)) // la fonction count() retourne le nombre d’éléments
{
echo $tab[$i].’’<br>’’;
$i++;
}
La seconde la plus simple consiste à l’utilisation de la boucle foreach, dont la
syntaxe est la suivante:
foreach($tableau as $element)
{
traitement;
}
La variable $element prend pour valeurs successives tous les éléments du tableau
nommé $tableau.
Exemple:
foreach($tab as $elem)
{
echo $elem.’’<br>’’;
}
Quelques fonctions manipulant les tableaux
count(), sizeof() : retournent le nombre d’éléments du tableau ;
in_array($var,$tab) : dit si la valeur de $var existe dans le tableau $tab ;
list($var1,$var2…) : transforme un tableau en liste de variables ;
range($i,$j) : retourne un tableau contenant un intervalle de valeurs ;
shuffle($tab) : mélange les éléments d’un tableau ;
sort($tab) : trie alphanumérique les éléments du tableau ;
rsort($tab) : trie alphanumérique inverse les éléments du tableau ;
</table>
<input type="submit" name="cmdUtiliser" value="Envoyer">
</form>
</center><hr>
<h4>Valeurs récupérées</h4>
<table border="1"><tr>
<td width=30>Nom</td><td width=80><?php echo $_GET["txtNom"]
?></td></tr><tr>
<td width=30>Age</td><td width=80><?php echo $_GET["txtAge"] ?></td></tr>
</table>
</body>
</html>
N.B. : L'existence d'une donnée dans un champ peut être testée avec la fonction
isset(donnée) qui rend la valeur true si la donnée existe, false sinon. Cfr exemple
suivant.
Cas d’utilisation de la méthode Post :
<html>
<head><title>Formulaire web</title>
<?php
$post=isset($_POST["txtNom"]) && isset($_POST["txtAge"]);
if($post){
$nom=$_POST["txtNom"];
$age=$_POST["txtAge"];
}
else {
$nom="";
$age="";
}
?>
</head>
<body><center><h3>Un formulaire Web 2</h3>
<h4>Récupération des valeurs des champs d'un formulaire</h4><hr>
<form name="frmPersonne" method="post">
<table><tr><td>Nom</td>
<td><input type="text" value="<?php echo $nom ?>" name="txtNom"
size="20"></td><td>Age</td>
<td><input type="text" value="<?php echo $age ?>" name="txtAge"
size="3"></td><tr>
</table><input type="submit" name="cmdUtiliser" value="Envoyer">
</form></center><hr>
<?php
if ($post) {
?>
<h4>Valeurs récupérées</h4>
<table border="1"><tr>
<td>Nom</td><td><?php echo $nom ?></td></tr>
<tr><td>Age</td><td><?php echo $age ?></td></tr></table>
<?php
}
?>
</body>
</html>
Exemple de récupération des valeurs d’un formulaire dans une autre page
Considérons le code HTML suivant qui après envoi est traité par le fichier
reponse.php
<html>
<head><title>Centre Informatique Infonet</title></head>
<body><center>
<form name="Inscription" Method="post" Action="reponse.php">
Enregistrement d'un candidat
<table border=0>
<tr><td>Nom</td>
<td><input type="text" name="nom" size="20" tabindex="1"></td></tr>
<tr><td>Sexe</td>
<td>Homme : <input type=radio name="sexe" value="M" checked>
<br/>Femme : <input type=radio name="sexe" value="F"> </td></tr>
<tr><td>Cochez les Cours que vous comptez suivre :</td>
</tr><tr><td></td><td>
<input type="checkbox" name="choix1" value="ok"> Word<br/>
<input type="checkbox" name="choix2" value="ok"> Excel<br/>
<input type="checkbox" name="choix3" value="ok"> Access
</td></tr><tr></tr><tr><td>Niveau d'études :</td>
<td><select name="fonction">
<option value="primaire">Primaire</option>
<option value="D6">Diplome d'état</option>
<option value="G3">Graduat</option>
<option value="L2">Licence</option>
<option value="D">DEA ou Thèse</option>
</select></td></tr><tr><td>Joindre un fichier :</td><td>
Vous allez maintenant pouvoir créer votre base de données. Pour l'exemple, nous
allons créer une base de données intitulée actualites. Mettez donc actualites dans
la case Créer une base de données et cliquez sur Créer. Ne vous préoccupez pas du
champ interclassement.
La base de données a été créée. Comme vous pouvez le constater, le langage SQL
que PHPMyAdmin a utilisé pour créer cette base est CREATE DATABASE actualites
Il s'agit de ce qu'on appelle une requête (My)SQL. Nous allons maintenant créer
une table news qui va contenir des actualités pour notre site Web. Réfléchissez
maintenant au nombre de champs que nous pourrions mettre. Tout d'abord, il faut
pouvoir identifier chacune des actualités postées. Nous allons utiliser un champ de
type numérique que l’on va nommer id_news. Chaque news aura donc un id
différent. Ensuite, il faut que l'on connaisse le titre de l'actualité, sa date de
parution, l'auteur de la news et son texte. Cela nous fait donc 5 champs au total.
Dans la case nom, indiquez news, dans la case nombre de champs, mettez 5, puis
cliquez sur Exécuter.
Vous voici maintenant devant une liste de champs qu'il va falloir déterminer. Le
premier champ sera notre champ id_news. Indiquez donc dans la première case
id_news. Pour le type de champ, nous allons donc utiliser un type SMALLINT avec
comme attribut UNSIGNED où vous pourrez stocker 65536 news.
Maintenant, nous allons insérer des données dans cette table news. Pour ce faire,
remarquez les onglets présents en haut du cadre de droite :
Cliquez sur l'onglet Insérer. Vous obtenez à l'écran une représentation des
différents champs avec des zones de texte pour vous permettre de les remplir :
Il va maintenant falloir remplir les champs. Voici ce que vous pouvez mettre :
Tout d'abord dans le champ id_news, ne mettez rien car c’est un champ
automatique. Pour le titre, à vous de trouver un titre comme par exemple
« Bienvenue sur mon site ». En ce qui concerne la date, faites dans un fichier PHP
ceci :
<?php
echo time();
?>
Notez la valeur obtenue et renseignez-la dans le champ date. Pour le champ
auteur, indiquez votre pseudo. Mettez ensuite un texte dans la zone de texte
correspondant au champ texte, ce sera le texte de la news. Cliquez ensuite sur
Exécuter.
Introduction
Une fois que vous êtes connecté au serveur MySQL, sachant qu'il peut contenir
une infinité de bases de données, il faut bien qu'il sâche sur laquelle vous souhaitez
travailler. On utilise pour cela la fonction mysql_select_db() en PHP. Elle prend
comme paramètre le nom de la base de données que vous souhaitez utiliser.
Pour ceux qui ont suivi le chapitre précédent, j'avais utilisé une base actualites.
Tous mes exemples vont donc s'appuyer sur cette base que nous avons créée
ensemble. Voici comment dire à PHP que nous allons travailler sur cette base :
<?php
mysql_select_db('actualites') OR die('Sélection de la base impossible');
?>
Il s'agit d'une étape très importante et trop souvent négligée dans de nombreux
scripts. Il faut savoir que MySQL dispose d'un paramètre spécifiant le nombre
maximum de connexions simultannées qu'il peut traiter. En local, vous n'aurez
pratiquement jamais de problème avec ce paramètre (qui se manifeste par une
erreur de Max user connections et vous empêche donc d'effectuer vos requêtes).
En revanche, chez un hébergeur, ce paramètre est souvent placé à une valeur de 3
ou de 5 (5 étant préférable). Cela veut dire que 5 connexions pourront avoir lieu
quasiment simultanément. Vous vous dites "c'est énorme, il n'y aura jamais
personne en même temps qui pourra cliquer sur mon site". Le problème, est que la
connexion est par défaut, si vous ne la fermez pas, active pendant toute la durée
de génération de la page. Si vous ouvrez votre connexion tout en haut de la page
et que le serveur met 1 seconde (ce qui est énorme) pour générer la page, votre
connexion restera ouverte pendant une seconde. Vous imaginez qu'il devient alors
très facile d'avoir 5 connexions à la même seconde pour peu que vous ayez un peu
de visiteurs ou des scripts très lents. Il faut donc fermer la connexion le plus tôt
possible, après avoir effectué la dernière requête, et AVANT TOUT TRAITEMENT.
Vous allez voir tout à l'heure que nous allons utiliser la fonction mysql_query()
pour effectuer des requêtes MySQL, et bien voici un schéma qu'il faudrait adopter
pour bénéficier d'une optimisation maximum :
<?php
$connexion = mysql_connect('localhost', 'root', '') OR die('Erreur de connexion');
mysql_select_db('actualites') OR die('Erreur de sélection de la base');
$requete1 = mysql_query('....');
$requete2 = mysql_query('....');
//Ici vous placez vos autres requêtes
mysql_close(); //On ferme la connexion à MySQL
//Ici vous mettez le code PHP qui va aller récupérer les données provenant des r
equêtes (fonction mysql_fetch_row() par exemple)
?>
Comme vous pouvez le voir, on utilise la fonction mysql_close() pour fermer la
connexion au serveur MySQL. Par défaut, elle ne prend pas de paramètre.
equête MySQL');
mysql_close();
/**
* On récupère les données
* Tant qu'une ligne sera présente, la boucle continuera
*/
while($resultat = mysql_fetch_row($requete))
{
echo '<p>Titre : '.$resultat[0].'. Texte : '.$resultat[1].'</p>';
}
?>
Et avec la fonction mysql_fetch_assoc() (équivalente à la fonction
mysql_fetch_array() à laquelle on passe une constante en second paramètre :
MYSQL_ASSOC) :
<?php
mysql_connect('localhost', 'root', '') OR die('Erreur de connexion à la base');
mysql_select_db('actualites') OR die('Erreur de sélection de la base');
$requete = mysql_query('SELECT titre, texte FROM news') OR die('Erreur de la r
equête MySQL');
mysql_close();
/**
* On récupère les données
* Tant qu'une ligne sera présente, la boucle continuera
*/
while($resultat = mysql_fetch_assoc($requete)) //équivalent à while($resultat
= mysql_fetch_array($requete, MYSQL_ASSOC))
{
echo '<p>Titre : '.$resultat['titre'].'. Texte : '.$resultat['texte'].'</p>';
}
?>
Pour tout ce qui est insertion de données, il est conseillé de lire les requêtes
MySQL associées dans ce cours : requêtes MySQL d'insertion de données. Le
principe est le même, sauf que là on ne récupère aucun résultat.
Enfin, les rédacteurs n'étant pas des spécialistes du langage HTML, les CMS
proposent des interfaces utilisateurs simples et intuitives, accessibles par le biais
des navigateurs web. Il est aussi important que les CMS puissent transformer
automatiquement tout document sous format bureautique habituel
(.doc, .pdf, .txt, .xls,…) produit préalablement par les rédacteurs.
Il faut distinguer deux types d'interfaces :
• l'interface de « back office »
Cette interface a pour rôle de simplifier la gestion des sites web, elle peut être
appelée également partie privée ou espace privé d'un site. Elle est utilisée par les
administrateurs des sites, les webmestres, les contributeurs/rédacteurs…
• l'interface de « front office »
Cette interface est la partie publique du site, elle permet de gérer les visiteurs et
de leur faciliter l'accès aux informations dont ils ont besoin.
La plupart des logiciels libres CMS offrent la possibilité d'associer des forums de
discussion (modérés ou non) aux articles publiés afin de transformer les sites web
en outil de communication bilatérale. Les commentaires des internautes peuvent
apporter une valeur ajoutée à l'information publiée.
Gestion des versions du contenu
Un CMS permet de conserver et d'archiver les différentes versions d'un
document avec le jour, l'heure et l'auteur de la modification.
Le contrôle des versions permet à plusieurs intervenants de travailler sur un même
fichier, sans que les modifications des uns « n'écrasent » le travail des autres.
De plus, des forums de discussion internes peuvent être disponibles et les
commentaires sont utiles au moment de l'élaboration des documents.
Utilisation des métadonnées et recherche
La complexité et la variété des systèmes d’information s'étant accrues, les
métadonnées constituent des structures et des descriptions émises à un niveau
d’abstraction supérieur (méta) et relatives à un niveau inférieur (ou référence).
Ainsi, les métadonnées sont « des données sur les données » de type :
4. Etude de cas
Nous présentons ici une application web sur la gestion des licences d’exportation
et d’importation des biens et services via une banque locale, la sofibanque qui se
présente comme client de la banque centrale du Congo.
Interface d’accès
Interface de modification
Interface de recherche
Notre base de données tourne sur Mysql qui est un SGBD léger.
Notre table EB avec les champs et les types de données utilisées
La structure de notre table utilisateur pour la gestion d’accès des utilisateurs dans
notre application
$quantite=$_POST['quantite'];
$poids=$_POST['poids'];
$destination=$_POST['destination'];
$date_embarquement=$_POST['date_embarquement'];
$fonds_repartie=$_POST['fonds_repartie'];
$qte_exporter=$_POST['qte_exporter'];
$prefinancement=$_POST['prefinancement'];
$date_embarquementTimestamp=strtotime($date_embarquement);
//date extreme
$date_extreme=date('d-m-Y', strtotime('+'.$duree_mois.'month',
$date_embarquementTimestamp));
//date rapatriement
if($nature=='DIAMAND'){
$date_rapatriement=date('d-m-Y', strtotime('+'.$duree_jour.'day',
$date_embarquementTimestamp));
}
else{
$date_rapatriement=date('d-m-Y', strtotime('+'.$duree_jour_autres.'day',
$date_embarquementTimestamp));
}
$date_extreme_nombre=strtotime($date_extreme);
$date_today=strtotime($date_du_jour);
//solde montant
$solde_montant=$montant - $fonds_repartie;
//comparaison temps pour le statut
if($date_today< $date_extreme_nombre){
if($solde_montant == $montant ){
$statut='encours/payé totalement';
}
else{
$statut='encours/payé partiel';
}
BATUBENGA J.D. Page 85
Cours de Langage PHP
}
else{
if($solde_montant == $montant ){
$statut='expiré/payé totalement';
}
else{
$statut='expiré/payé partiel';
}
}
//nombre des jours en retard
$date_rapatriement_ennombre=strtotime($date_rapatriement);
$nbre_jour=round(($date_rapatriement_ennombre - $date_today)/86400);
$solde_qte_restant=$quantite - $qte_exporter;
//jour ecoulé
$jour_ecoule=round(($date_embarquementTimestamp- $date_today)/86400);
$echeance=$date_embarquement;
$rekette = 'INSERT INTO eb VALUES("'.$date.'", "'.$num_licence.'",
"'.$exportateur.'", "'.$acheteur.'", "'.$devise.'", "'.$montant.'", "'.$nature.'",
"'.$quantite.'", "'.$poids.'", "'.$destination.'", "'.$date_embarquement.'",
"'.$statut.'", "'.$date_extreme.'", "'.$nbre_jour.'", "'.$qte_exporter.'",
"'.$date_rapatriement.'", "'.$fonds_repartie.'", "'.$prefinancement.'",
"'.$solde_montant.'", "'.$solde_qte_restant.'", "'.$jour_ecoule.'", "'.$echeance.'")';
mysql_query ($rekette) or die ('ErreurSQL !'.$rekette.'<br />'.mysql_error());
mysql_close();
<?php
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>.::SOFIBANK-GESTION DES LICENCES::.</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" media="screen" type="text/css" title="style_didier"
href="style.css" />
Code Remboursement
</head>
<body>
<div class="corps">
<div class="un">
<div class="un_gauche"><?phpecho $_SESSION['nom']; ?></div>
<div class="un_droit">
<?php
$date_du_jour = date ("d-m-Y");
echo $date_du_jour;
$base=mysql_connect('localhost','root','');
mysql_select_db('licences',$base) or die(mysql_error());
?>
</div>
</div>
<div class="deux">
<div class="deux_gauche">
<ul>
<li><a href="eb.php">EB</a></li>
<li><a href="es.php">ES</a></li>
<li><a href="ib.php">IB</a></li>
<li><a href="is.php">IS </a></li>
<li><a href="rc.php">RC </a></li>
</ul>
</div>
<div class="deux_droit">
<div class="sous_menu">
<ul>
<li><a href="eb.php">RAPPATRIEMENT</a></li>
<li><a href="eb_rembousprefi.php">REMBOURS.
PREFINANCEMENT</a></li>
<li><a href="eb_modification.php">MODIFIER</a></li>
<li><a href="eb_recherche.php">RECHERCHE</a></li>
</ul></div>
<div class="fomulaire_selection">
<!--<form action="ajout_eb_prefi.php" method="post" >-->
<table>
<form action="validation_rc.php" method="post">
<tr><td><span class="nom_user">FORMULAIRE
EB</span></td><td></td></tr>
<tr><td><span class="nom_user">DATE DE
VALIDITE:</span></td><td><input type="text" name="date" value=""
size="30"/></td></tr>
<tr><td><span class="nom_user">NumLicence:</span></td><td><input
type="text" name="num_licence" value="" size="30"/></td></tr>
<tr><td><span class="nom_user">EXPORTATEUR:</span></td><td><input
type="text" name="exportateur" value="" size="30"/><input type="submit"
value="Lier RC" /></td></tr></form>
<tr><td><span class="nom_user">RC:</span></td><td>
<select id="form_promo" name="licence_rc">
<option></option>
</select></td></tr>
<tr><td><span class="nom_user">ACHETEUR:</span></td><td><input
type="text" name="acheteur" value="" size="30"/></td></tr>
<tr><td><span class="nom_user">DEVISE:</span></td><td><input
type="text" name="devise" value="" size="30"/></td></tr>
<tr><td><span class="nom_user">MONTANT:</span></td><td><input
type="text" name="montant" value="" size="30"/></td></tr>
BATUBENGA J.D. Page 88
Cours de Langage PHP
<tr><td><span class="nom_user">NATURE:</span></td><td>
<select id="operations" name="nature">
<option value="DIAMAND">DIAMAND</option>
<option value="BOIS">BOIS</option>
<option value="AUTRES">AUTRES</option>
</select></td></tr>
<tr><td><span class="nom_user">TarifDouanier:</span></td><td><input
type="text" name="tarif" value="" size="30"/></td></tr>
<tr><td><span class="nom_user">Quantité:</span></td><td><input
type="text" name="quantite" value="" size="30"/></td></tr>
<tr><td><span class="nom_user">Poids:</span></td><td><input
type="text" name="poids" value="" size="30"/></td></tr>
<tr><td><span class="nom_user">Destination:</span></td><td><input
type="text" name="destination" value="" size="30"/></td></tr>
<tr><td><span class="nom_user">Date
Embarquement:</span></td><td><input type="text"
name="date_embarquement" value="" size="30"/></td></tr>
<tr><td><span
class="nom_user">QuantitéExporter:</span></td><td><input type="text"
name="qte_exporter" value="" size="30" /></td></tr>
<tr><td><span class="nom_user">FondsRapatriee a
cejour:</span></td><td><input type="text" name="fonds_repartie" value=""
size="30" /></td></tr>
<tr><td><span
class="nom_user">Préfinancement:</span></td><td><input type="text"
name="prefinancement" value="" size="30" /></td></tr>
<div class="un_gauche"></div>
<div class="un_droit">
<?php
echo '<a href="logout.php">Déconnection</a>';
?>
</div>
</div>
</div>
</body>
</html>
Code Recherche
<?php
session_start();
// Connexion MySQL
// Obligatoire pour la suite !
$base=mysql_connect('localhost','root','');
mysql_select_db('licences',$base) or die(mysql_error());
// la variable qui va contenir les données CSV
$outputCsv = '';
// Nom du fichier final
$fileName = 'exportateur-csv.csv';
$date_debut=$_POST['date_debut'];
$date_fin=$_POST['date_fin'];
$statut=$_POST['statut'];
$exportateur=$_POST['exportateur'];
if ($statut == 'encour_total'){
$statut_bd = 'encours/payé totalement';
}
else if ($statut == 'encour_partiel'){
$statut_bd = 'encours/payé partiel';
}
Annexes
(Rappels sur XHTML)
2. Syntaxe html
Le langage HTML est un langage de marquage qui ne connaît que l’alphabet ASCII
standard, limité à 128 caractères. Le marquage, réalisé par des balises, décrit la
structure logique du document et est interprété par les logiciels de navigation
(navigateurs ou browsers).
Une balise prend la forme suivante:
<title>Titre de la page</title>
</head>
<body>
Contenu de la page
</body>
</html>
Exemple d’un document HTML :
<html> <!-- Début du document nommé test.htm -->
<head>
<title>Université Révérend Kim</title> <!-- Titre du document -->
</head>
<body> <!-- La partie du document affichée sur le Navigateur -->
<font face="verdana" size="2" color="#0000FF">
<b>URKIM</b>, centre de formation et d’excellence !<br/>
</font>
Facultés organisées : <br/>
Gestion Informatique <br/>
Droit <br/>
Médecine <br/>
</body>
</html>
Saisir ce code sur bloc notes, puis l’enregistrer avec l’extension html (ou htm). Par
exemple index.html.
Exemple :
<body topmargin=0 leftmargin=0 bgcolor=‘’#0000ff’’ text=‘’blue’’>
…
</body>
Balise <marquee>
La balise marquee permet d’insérer un texte (ou une image) défilant sur la page
Web. Cette balise n'est pas reconnue par Netscape qui ne rendra son contenu
qu’en élément fixe et immobile.
Les attributs associés sont :
- Id: identificateur de l’élément
- Behavior: comportement de l’élément (alternate, slide, scroll)
- Direction : sens de défilement (left, right, up, down)
- Loop: nombre du défilement (si rien n’est mentionné: infinie)
- Scrollamount: fixe le pas de déplacement en pixel (par défaut 6)
- Scrolldelay: vitesse de défilement (par défaut 90)
- Width: largeur de l’élément (zone réservée au défilement)
- Height: hauteur de l’élement
Exemple : <marquee direction=”right”> <b>URKIM</b>, centre de formation et
d’excellence !</marquee>
Balise <p>
La balise p permet de définir un nouveau paragraphe. Ses attributs associés sont :
- Style=‘’margin-left: n px’’ marge gauche
- Style=‘’margin-right: n px’’ marge droite
- Style=‘’margin-top: n px’’ marge supérieure
- Style=‘’margin-bottom: n px’’ marge inférieure
Avec n un nombre entier définissant la valeur de la marge en pixel.
Exemple:
Exemple:
<img src=‘’images/portrait.jpg’’ width=‘’250’’ height=‘’300’’ alt=‘’mon portrait’’/>
Balise <bgsound>
L'élément bgsound, placé entre <head> et </head>, permet de créer des pages
avec un fond sonore et de paramétrer la durée de diffusion, le volume et la
balance.
Cet élément admet les types de fichiers sons extension .wav, .au et .mp3 et les
séquences d’extension .mid.
Les attributs associés sont :
- Id: identificateur de l’élément
- Src: chemin relatif du fichier son
- Loop: nombre de répétitions (-1 veut dire infini)
- Volume: volume du son entre -10 000 et 0 (0: maximum)
- Balance: balance entre les deux haut-parleurs entre -10 000 et +10 000 (-10 000:
le son provient entièrement du haut-parleur gauche)
N.B. : La balise <embed> est utilisée avec les mêmes attributs pour insérer dans
une page web un fichier audio ou vidéo (le multimédia). Son attribut autostart, qui
a pour valeurs true et false, spécifie si l’élément va se lancer automatiquement à
l’affichage de la page web ou pas.
Balise <a>
La balise a permet de définir un lien hypertexte vers une autre page ou un autre
site.
- Href: lien de destination (chemin relatif de la page appartenant au site courant ou
chemin absolu commençant par http:// si la page existe sur un autre site Web)
- Target: carde de destination (fenêtre courante ou nouvelle fenêtre)
- Title: titre affiché dans l’info bulle si l’on survole le lien avec le pointeur de la
sourie.
Quelques valeurs courantes de l’attribut « target »:
- _self: même cadre
BATUBENGA J.D. Page 101
Cours de Langage PHP
Exemple:
<meta http-equiv=‘’content-type’’ content=‘’text/html; charset=iso-8859-1’’>
Orienter les robots (robots de moteurs de recherche)
Si vous désirez que le robot indexe toutes les pages de votre site, c'est-à-dire
toutes celles vers lesquels vous avez placé des liens, utilisez la propriété All :
<meta name=‘’robots’’ content=‘’all’’>
Si le site est en construction et que vous voulez que le robot n’indexe pas vos
pages vous mettez ‘’none’’ à la place de ‘’all’’. Avec ‘’follow’’ les destinations des
liens sont indexées. ‘’Nofollow’’ empêche le robot d’indexer ces destinations. Avec
‘’Index’’ seule la page courante est indexée. ‘’NoIndex’’ La page courante n’est pas
indexée
Vous pouvez aussi demander aux robots de réindexer automatiquement votre site
après n jours :
<meta name="Revisit-after" content="n">
Exemple:
<meta name="Robots" content=‘’Index,Follow">
<meta name="Revisit-after" content="5">
Rafraîchissement et redirection
Pouvoir faire recharger une page périodiquement peut s'avérer très utile surtout si
l'on affiche des bannières publicitaires qu’on veut changer souvent. Ainsi, il est
possible d'ordonner au navigateur de recharger une page toutes les n secondes
grâce à l'attribut Refresh :
<meta http-equiv="Refresh" content="n">
On peut même procéder au chargement d'une page différente, très utile lorsqu'on
change d'hébergeur afin de rediriger le navigateur vers un autre site:
<meta http-equiv="Refresh" content="n; url=url souhaité">
Exemple :
<meta http-equiv="Refresh" content="60; url=http://www.google.com’’>
Date d'expiration
Vous savez qu'il existe des ordinateurs qui, pour faciliter l'accès aux pages web,
conserve dans leurs disques durs les pages déjà visitées et donc susceptibles d'être
redemandées. Ainsi, lorsqu'on accède à une seconde reprise au même site, on a
des chances de retomber sur les mêmes pages déjà visitées. Ainsi, lorsqu'on veut
empêcher cela, on indique une date d'expiration qui, si elle est dépassée,
ordonnera au Proxy d'aller récupérer les vrais pages et de supprimer celles
expirées. Attention, la date est au format anglophone!
<meta http-equiv="Expires" content=‘’Sat, 2 Jun 2008 14:30:00">
En plus, vous pouvez interdire aux navigateurs de conserver en mémoire-cache vos
pages:
<meta http-equiv="Pragma" content="no-cache">
Les formulaires
Les formulaires HTML (Forms en anglais) sont des ensembles de composants,
appelés aussi champs, qui permettent à l'utilisateur d'entrer des informations,
d'exprimer ses choix, de saisir du texte…
En général, un site dynamique contient des formulaires, car les champs de
formulaires permettent à l’internaute de communiquer avec le site (Il ne se
contente pas de voir le contenu en passant d’un lien à autre).
La balise <form> …</form> déclare un formulaire sur la page web.
Tous les champs (zone de texte, boutons, listes de choix, cases à cocher…) doivent
être placés entre <form> et </form>.
N.B. : Une page peut contenir plusieurs formulaires à la fois, ceux-ci sont
généralement traités par des scripts tels que JavaScript ou PHP…
Balise:
<form name=‘’nom_formulaire’’ Method=‘’méthode d’envoi’’ Action=‘’URL’’>
Name : qui spécifie le nom du formulaire, est utile si on utilise plusieurs
formulaires sur la même page.
Method (valeurs possibles post et get) : post permet l’envoi des valeurs du
formulaire dans l’entête du document (les valeurs ne sont pas visibles) ; alors que
get les envoie avec l’URL (les valeurs sont visibles sur la barre d’adresse, ce qui
peut compromettre la confidentialité des données envoyées tels que les mots de
passe).
Action : Spécifie la page qui se charge du traitement du formulaire.
Le champ TEXTE
Syntaxe : <input type=‘’text’’>
Ses attributs sont :
Name : nom du champ texte (Identificateur du champ)
Value : valeur par défaut
Size : taille en caractère
Tabindex : ordre de tabulation (définit l’ordre de déplacement du curseur entre les
champs de formulaire suite à l’appuie sur la touche TABULATION du clavier).
Exemple :
<input type=‘’text’’ name=‘’login’’ size=‘’20’’ tabindex=‘’1’’>
Les cases à cocher peuvent être traitées comme des éléments indépendants, des
groupes d’éléments ou encore des tableaux d’éléments (apprécié en PHP)
Exemple :
<input type=‘’checkbox’’ name=‘’che’’ value=‘’1’’ checked>
<input type=‘’checkbox’’ name=‘’che’’ value=‘’2’’>
Le champ BOUTON
Syntaxe : <input type=‘’type_de_bouton’’>
Il existe trois types :
- type=‘’submit’’ ce sont les boutons d’envoie de formulaires
- Type=‘’button’’ boutons ordinaires (peuvent être personnalisés avec
JavaScript)
- Type=‘’reset’’ boutons rétablir (rétablie les valeurs par défaut des champs de
formulaire)
Ses attributs sont :
Type: type de bouton
Name: nom du bouton
Value: label du bouton (texte écrit dessus)
Tabindex: ordre de tabulation
Exemple:
<input type=‘’button’’ name=‘’imp’’ value=‘’Imprimer cette page’’>
<input type=‘’submit’’ name=‘’valider’’ value=‘’Envoyer’’>
<input type=‘’reset’’ name=‘’RES’’ value=‘’Rétablir le formulaire’’>
Si le bouton est de type submit (le plus utilisé d’ailleurs), le fait de cliquer dessus
redirige le navigateur vers la page définie en valeur de l’attribut action de la balise
form. En effet, c’est le bouton submit qui soumet le formulaire au traitement.
Le champ LISTE DE SELECTION
Syntaxe :
<select name=‘’nom_de_l_element’’>
<option>option1</option>
<option>option2</option>
…
</select>
Les attributs de la balise select sont :
Name : nom de la liste
Tabindex : ordre de tabulation
Et les attributs de la balise option sont :
Value : valeur de l’option (par défaut c’est le contenu de l’option)
Selected : mentionne si l’option est sélectionnée par défaut.
Exemple :
<select name=‘’secteur_activité’’>
<option selected>Télécoms</option>
<option>Électricité</option>
<option>Informatique</option>
<option>Mécanique</option>
<option>Métallurgie</option>
</select>
L’attribut value de la balise option est facultatif. Si rien n’est mentionné alors le
contenu de la balise passe en valeur de l’attribut value.
Le champ CHARGEMENT DE FICHIER
Syntaxe : <input type=‘’file’’>
Ses attributs sont :
Name : nom du champ
Tabindex : ordre de tabulation
Les champs file permettent de parcourir un fichier sur le poste de travail et le
soumettre au formulaire. Ce dernier, grâce à des scripts coté serveur comme PHP,
charge le fichier sur le serveur (UPLOAD)
BATUBENGA J.D. Page 110
Cours de Langage PHP
Exemple :
<input type= "file" name="mon_fichier">
Exemple d’un formulaire :
<html>
<head>
<title>Université Révérend Kim</title>
</head>
<body>
<center>
<form name="nom_formulaire" Method="get" Action="[email protected]">
Enregistrement d'un utilisateur
<table border=0>
<tr>
<td>Nom</td>
<td>
<input type="text" name="login" size="20" tabindex="2">
</td>
</tr>
<tr>
<td>Sexe</td>
<td>
Homme : <input type=radio name="sexe" value="M" checked>
<br/>Femme : <input type=radio name="sexe" value="F">
</td>
</tr>
<tr>
<td>Les loisirs que vous intéressent :</td>
</tr><tr>
<td> </td><td>
<input type="checkbox" name="choix" value="1"> Sport<br/>
<input type="checkbox" name="choix" value="2">Théatre <br/>
<input type="checkbox" name="choix" value="3" >Musique
</td>
</tr>
<tr></tr>
<tr>
<td>Fonction :</td>
<td>
<select name="fonction">
<option value="enseignant">Enseignant</option>
<option value="etudiant">Etudiant</option>
<option value="ingenieur">Ingénieur</option>
<option value="retraite">Retraité</option>
<option value="autre">Autre</option>
</select>
</td>
</tr>
<tr>
<td>Commentaires :</td>
<td>
<textarea name="commentaire" colls="30" rows="6" tabindex="3">
Ceci est un commentaire
</textarea>
</td>
</tr>
<tr>