• Aucun résultat trouvé

[PDF] apprendre php pdf complet | Télécharger PDF

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] apprendre php pdf complet | Télécharger PDF"

Copied!
46
0
0

Texte intégral

(1)

Cours HTML/PHP

E.Coquery

(2)

Pages Web statiques

Principe de fonctionnement :

L’utilisateur demande l’acc`es `a une page Web depuis son navigateur.

Adresse tap´ee, clic sur un lien, utilisation d’un signet, etc ...

Le navigateur envoie une demande `a un serveur Web. Le serveur Web lit le fichier demand´e sur le disque dur. Le serveur Web envoie le contenu du fichier au navigateur. Le navigateur affiche le contenu de la page.

Pour l’affichage, il peut ´egalement demander le contenu d’autres fichier au serveur (ex : images).

(3)

Illustration

Web Navigateur Poste client

(4): contenu de index.html

(3): contenu de index.html (2): accès à "index.html" (1): demande "index.html"

Serveur

Disque Serveur Web

(4)

Pages Web dynamiques

Pages statiques :

Pour changer le contenu, il faut ´editer le fichier.

Id´ee : g´en´erer le contenu de la page au moment o`u elle est demand´ee, en fonction :

du contenu d’une base de donn´ees ;

(5)

Pages Web Dynamiques : fonctionnement

L’utilisateur demande l’acc`es `a une page Web depuis son navigateur.

Le navigateur transmet envoie une demande au serveur web comprenant :

le nom de la page, qui correspond en fait `a un programme ; ´

eventuellement un ensemble de param`etres.

Le serveur web va chercher sur le disque le code source d’un programme.

Le serveur web ex´ecute ce programme qui peut :

utiliser les param`etres transmis avec la demande du navigateur ; aller chercher des donn´ees dans une base de donn´ees ou sur le disque.

Durant l’ex´ecution, le programme g´en`ere un contenu HTML. Le contenu HTML est envoy´e au navigateur.

(6)

Illustration

(4.1): requêtes et résultats SGBD Serveur (5): contenu HTML (4): génération du contenu HTML

(3): code source de index.php (2): accès à "index.php" + paramètres (1): demande "index.php" PHP Module Serveur Web Disque Serveur Poste client Navigateur Web

(7)

Quelques langages

Langages utilis´es :

Pour le contenu des pages :

Donn´ees `a afficher Mise en forme

⇒ HTML, CSS, JavaScript, . . .) Pour g´en´erer le contenu des page :

Aller chercher les donn´ees

Fabriquer un document (en g´en´eral un document HTML)

⇒ PHP (ou bien Perl, Python, Java, . . .) Pour interroger la base :

Requˆetes `a effectuer sur la base.

(8)

Cr´

eation de pages dynamiques

Dans notre cadre, pour cr´eer une page dynamique, il faut : Cr´eer un programme PHP correspondant `a cette page.

Plus pr´ecis´ement, ´ecrire le code source de ce programme.

Le but de ce programme est de g´en´erer le contenu d’une page Web, i.e. du HTML.

Cette g´en´eration se fait via des print, un peu comme pour ´

ecrire dans un fichier.

Ce programme peut ´eventuellement utiliser des requˆetes SQL.

Ces requˆetes sont pass´ees sous forme de chaˆınes de caract`eres `

a des fonctions sp´eciales qui vont les transmettre au SGBD et r´ecup´erer les r´esultats.

Remarque : Bien que le but principal d’un programme PHP soit de produire un page HTML, cela reste un programme qui peut par cons´equent avoir d’autres effets :

(9)

HTML : Principe

Fichier texte contenant des informations de structuration. La structure est indiqu´ee `a l’aide de balises :

Le nom de la balise indique le type de mise en forme `a appliquer.

On met une balise ouvrante au d´ebut du morceau de texte concern´e :

<nom balise>d´ebut du texte

On met une balise fermante `a la fin du texte concern´e :

fin du texte</nom balise>( ! au /)

Une balise ouvrante peut contenir des attributs de la forme nom="valeur"

<nom balise nom1="val1" nom2="val2" ...>texte Les attributs permettent de pr´eciser des informations concernant la mise en forme.

Les balises peuvent ˆetre imbriqu´ees.

C’est le navigateur qui interpr`ete les balises pour faire l’affichage.

(10)

Structure d’une page HTML

Une page HTML a la structure suivante :

<html> <head>

<title>titre de la page</title> </head>

<body>

Partie affich´ee dans le navigateur.

</body> </html>

(11)

Structure : paragraphes et titres

<p>texte</p>

texte forme un paragraphe (saut de ligne avant et apr`es). <h1>texte</h1>

texte est un titre important (paragraphe avec un affichage plus gros, en gras).

<h2>texte</h2>

texte est un titre moins important (affichage un peu moins gros).

. . .

<h6>texte</h6> texte est un petit titre.

(12)

Exemple de document HTML

<html> <head>

<title>La page de Toto</title> </head>

<body>

<h1>Toto</h1>

<h2>L’histoire de Toto</h2> <p>Il ´etait une

fois ...</p> <p>Chemin

faisant ... </p>

<h2>Les amis de Toto</h2> <p>Ouioui</p>

<p>Casimir</p> </body>

(13)

Structure : styles simples

<i>texte</i> ou <em>texte</em> : mettre texte en italique.

<b>texte</b> ou <strong>texte</strong> : mettre texte en gras.

<u>texte</u> : souligner texte. <big>texte</big> : mettre texte en plus grand. <small>texte</small> : mettre texte en plus petit.

(14)

Structure : listes

<ul> <li>entr´ee 1</li> <li>entr´ee 2</li> <li>entr´ee 3</li> <li>...</li> </ul> <ol> <li>entr´ee 1</li> <li>entr´ee 2</li> <li>entr´ee 3</li> <li>...</li> </ol>

(15)

Structure : tableaux

<table> <tr> <td>case 1</td> <td>case 2</td> </tr> <tr> <td>case 3</td> <td>case 4</td> </tr> </table>

(16)

Structure : tableaux - 2

<table border="2"> <tr> <td>case 1</td> <td>case 2</td> </tr> <tr> <td>case 3</td> <td>case 4</td> </tr> </table>

(17)

Liens hypertextes

<a href="adresse web">texte</a> texte devient un lien cliquable.

Lorsque l’on clique sur texte, on va `a l’adresse (URL) adresse web.

<a href="http ://www.w3.org/TR/html401/">Documentation HTML</a>

Le texte Documentation HTML est un lien vers la page web dont l’adresse est http ://www.w3.org/TR/html401/

<a href="truc.html">Des trucs</a>

Le texte Des trucs est un lien vers la page web truc.html situ´ee au mˆeme endroit que la page courante.

(18)

Images

Inclure une image :

<img src="adresse web image">

Pas de balise fermante pour <img>

(19)

Formulaires : principe

Objectifs :

acc´eder `a une page (dynamique) en sp´ecifiant des param`etres ; permettre `a l’utilisateur de saisir ces param`etres.

Comment :

en utilisant des champs textuels, des listes d´eroulantes, des cases `a cocher ;

`

a chacun de des composants de saisie correspond un param`etre.

(20)

Formulaires : balise principale

<form action="adresse web" method="POST" name="nom"> contenu formulaire

</form>

contenu formulaire : du texte contenant en particulier des balises repr´esentant les diff´erents composants de saisie ; adresse web : l’adresse de la page web dynamique `a laquelle on souhaite acc´eder via ce formulaire ;

POST : la m´ethode de transmission des param`etres (on peut ´

egalement mettre GET) ;

(21)

Formulaires : saisie de texte

<input type="text" name="nom">

Cr´e´ee un champ de saisie pour une ligne de texte.

nom est le nom du param`etre correspondant `a ce composant. On peut ajouter les attributs suivants :

size="un nombre" : la taille du champ en caract`eres ; value="une valeur" : texte pr´e-saisi

utile pour modifier des informations.

On peut remplacer type="text" par type="password" si on veut afficher des * au lieu des lettres lors de la saisie.

(22)

Formulaires : saisie d’un grand texte

<textarea name="nom" rows="h" cols="l"> contenu pr´e saisi

</textarea>

Cr´e´ee un champ de saisie pour du texte sur plusieurs lignes. nom est le nom du param`etre correspondant `a ce composant. h est la hauteur du composant en nombre de lignes.

l est la largeur du composant en nombre de caract`eres. le contenu pr´e saisi peut ˆetre vide et ne contient de balise.

(23)

Formulaires : param`

etres cach´

es

<input type="hidden" name="nom" value="val"> Permet de donner la valeur val au param`etre nom. Ce composant n’est pas affich´e.

Utile pour sp´ecifier un identifiant dans un formulaire de modification des informations de la base.

(24)

Formulaires : liste d´

eroulante

<select name="nom">

<option value="val1">Texte 1</option> <option value="val2">Texte 2</option> ...

</select>

Cr´e´ee une liste d´eroulante ayant comme s´election possible Texte 1, Texte 2,. . .

La valeur du param`etre nom est donn´ee par la s´election choisie par l’utilisateur :

val1 pour Texte 1 val2 pour Texte 2 . . .

L’attribut value est optionnel.

Par d´efaut c’est le texte dans la balise <option></option>

On peut ajouter selected="true" dans une des balises options pour pr´e s´electionner cette option.

(25)

Formulaires : boutons de soumission

<input type="submit" value="texte">

Cr´e´ee un bouton d´eclenchant le chargement de la page de destination (attribut action de la balise <form>).

texte est un texte qui sera affich´e sur le bouton.

<input type="reset" value="texte">

Cr´e´ee un bouton d´eclenchant la r´einitialisation du formulaire, en utilisant les valeurs pr´e saisies lorsqu’elles existent.

(26)

HTML : m´

ethodes de transmission de param`

etres

Deux m´ethodes de transmission des param`etres GET

Les param`etres sont encod´es avec l’adresse de la page :

`

a la fin de l’adresse, on ajoute le caract`ere ? puis pour chaque param`etre on ajoute nom=val les param`etres sont s´epar´es par le caract`ere &

Utile pour sp´ecifier des param`etres dans un lien hypertexte.

POST

Les param`etres sont encod´es s´epar´ement de l’adresse web. Plus pratique pour les formulaires.

(27)

PHP

Un fichier PHP est le code source d’un programme. Ce programme a pour but de g´en´erer une page HTML. PHP est un langage imp´eratif proche du C.

(28)

PHP : deux types de ”zones”

D´elimit´ees par < ? et ?>

Zones entre < ? et ?> : code PHP `a ex´ecuter (similaire `a du code C).

Zones `a l’ext´erieur de < ? et ?> : texte et balises qui seront recopi´es directement dans le contenu HTML g´en´er´e.

(29)

PHP : variables

Le nom d’une variable commence par un $

$i, $utilisateur, $id, . . .

Affectation comme en C :

$i = valeur ;

Les variables ne sont pas explicitement d´eclar´ees comme en C.

Une variable existe d`es que l’on a fait une affectation dessus.

Une variable peut contenir un nombre, une chaˆıne de caract`eres, un bool´een (en r´ealit´e un entier comme en C) ou un tableau.

(30)

PHP : g´

en´

eration du contenu

Deux m´ethodes :

Mettre du texte `a l’ext´erieur de < ? et ?>. Utiliser l’instruction print :

print valeur ;

valeur est ´evalu´e puis transform´e en texte.

Ce texte est ajout´e `a la suite du contenu HTML d´ej`a g´en´er´e. On peut utiliser echo `a la place de print.

On peut consid´erer que le texte mis `a l’ext´erieur de < ? et ?> est pass´e en argument `a un print.

(31)

PHP : chaˆınes de caract`

eres

D´elimit´ees par des guillemets simples (’cha^ıne’)ou doubles ("cha^ıne").

Si une variable apparaˆıt dans une chaˆıne avec guillemets doubles, elle est remplac´ee par sa valeur (convertie en chaˆıne de caract`eres).

print "<p>Mon nom est $nom</p>" ;

Les variables apparaissant dans des guillemets simples ne sont pas remplac´ees.

Un . entre deux chaˆınes les concat`ene.

(32)

PHP : op´

erateurs courants

Arithm´etiques :

+ (addition), - (soustraction), * (multipli´e), / (divis´e), % (modulo), ++ (incr´ement), -- (d´ecr´ement).

De comparaison :

== (´egalit´e), < (inf´erieur strict), <= (inf´erieur large), >, >=, != (diff´erence)

Logiques :

(33)

PHP : tableaux

Syntaxe similaire au C :

$mon tableau[2] = "coucou" ;

Range "coucou" dans la case num´ero 2.

print $mon tableau[2] ;

G´en`ere le texte coucou.

$mon tableau[] = valeur ;

Ajoute une case au tableau $mon tableau et y range valeur.

La premi`ere case d’un tableau porte le num´ero 0. Pour cr´eer un tableau vide, on peut utiliser :

(34)

PHP : tableaux associatifs

Tableau associant une valeur `a une chaˆıne de caract`eres. Syntaxe :

$personne[’Prenom’] = ’Toto’ ;

Associe la valeur ’Toto’ `a la chaˆıne ’Prenom’.

print $personne[’Prenom’] ;

(35)

PHP : contrˆ

oles

Structures de contrˆoles similaires `a celles de C : if (...) { ...} else { ...}

for(... ;... ;...) { ...} while (...) { ...}

Inclusion d’un autre fichier PHP : include(”nom fichier.php”) ;

(36)

PHP : fonctions

D´efinition de fonction :

function nom fonction($param1, $param2, ...) { ...

}

Pour renvoyer un r´esultat dans une fonction :

(37)

PHP : r´

ecup´

eration des param`

etres

Principe :

L’interpr´eteur PHP initialise un tableau associatif qui associe `

a chaque nom de param`etre sa valeur.

Le nom du tableau initialis´e d´epend de la m´ethode : $ POST pour la m´ethode POST

$ GET pour la m´ethode GET

Exemple : afficher la valeur du param`etre nom, s’il est transmis par la m´ethode POST.

(38)

Acc`

es `

a une base de donn´

ee MySQL

Cinq ´etapes :

1 Connexion au SGBD.

2 S´election d’une base. 3 Envoi d’une requˆete.

4 ecup´eration et utilisation du r´esultat. 5 Fermeture de la connexion.

On peut it´erer les ´etapes 3 et 4 autant de fois que l’on veut avant de fermer la connexion `a l’´etape 5.

(39)

Connexion

Connexion au SGBD : $user = ’toto’ ; $passwd = ’mdptoto’ ;

$machine = ’localhost’ ; machine o`u tourne PHP

$connect = mysql connect($machine,$user,$passwd) or die(’Echec de connexion au SGBD’) ; Choix de la base :

$bd = ’entreprise’ ;

mysql select db($bd,$connect)

or die(’Echec lors de la selection de la base’) ; Fermeture (apr`es les requˆetes) :

(40)

Envoi de la requˆ

ete

$requete = ’une requete SQL’ ;

$resultat = mysql query($requete,$connect)

or die(’Erreur durant l’ex´ecution de la requ^ete’) ;

Exemple :

$salaire max = 20000 ;

$requete = "SELECT nom FROM employe "

." WHERE salaire <= $salaire max" ; $resultat = mysql query($requete,$connect)

or die(’Erreur durant l’ex´ecution de la requ^ete’) ;

Durant la phase de d´eveloppement, il peut ˆetre utile d’afficher $requete avant son envoi au SGBD.

(41)

Exploitation du r´

esultat d’une requˆ

ete

Code type pour parcourir le r´esultat :

while ($nuplet = mysql fetch assoc($resultat)) { ...

}

La boucle while permet de parcourir les n-uplets qui forment le r´esultat (un n-uplet par tour de boucle).

$nuplet est un tableau associatif qui associe `a chaque attribut du r´esultat sa valeur pour le n-uplet courant. Si la requˆete est une mise `a jour, il est inutile de parcourir le r´esultat.

(42)

Exemple

$salaire max = 20000 ;

$requete = "SELECT nom,salaire FROM employe "

." WHERE salaire <= $salaire max" ; $resultat = mysql query($requete,$connect)

or die(’Erreur durant l’ex´ecution de la requ^ete’) ;

print "<h3>Employ´es gagnant moins de "

."$salaire max euros par an</h3>" ; while ($nuplet = mysql fetch assoc($resultat)) {

$nom = $nuplet[’nom’] ; $sal = $nuplet[’salaire’] ;

print "<p>$nom gagne $salaire euros par ans.</p>" ; }

(43)

Sessions : pourquoi ?

Il peut ˆetre utile de conserver des informations d’une page sur l’autre. Par exemple pour :

se souvenir du login de l’utilisateur

se souvenir des r´ef´erences indiquant `a quoi l’utilisateur s’int´eresse

se souvenir des derni`eres pages vist´ees par l’utilisateur etc

Jusqu’ici, un seul moyen : utiliser des param`etres et penser `a les remettre `a chaque lien et dans chaque formulaire

(44)

Sessions

Une session peut ˆetre vue comme un ensemble d’informations concernant un utilisateur d’un site.

par utilisateur, on entend un navigateur sur une machine les informations sont conserv´ees entre deux pages une page PHP peut ajouter ou modifier des informations

En PHP, la session est vue comme une variable sp´eciale appel´ee $ SESSION :

c’est un tableau associatif

(45)

Utilisation des sessions en PHP

Une page PHP utilisant une session doit obligatoirement, avant mˆeme d’afficher quoi que ce soit, commencer par l’instruction :

session start() ;

Cette instruction cr´ee la variable $ SESSION et la remplit avec les valeurs qu’elle avait dans la page PHP pr´ec´edente.

La variable $ SESSION se manipule ensuite comme un tableau associatif classique.

(46)

econnexion

Lorque l’utilisateur se d´econnecte, il est important de d´etruire la session

par exemple pour ´eviter qu’une seconde personne utilisant le mˆeme ordinateur ne se fasse passer pour la premi`ere personne

pour d´etruire une session : $ SESSION = array() ; session write close() ;

Références

Documents relatifs

Ainsi, comme les individus de 16 à 24 ans représentent 10.13 % de la totalité des titulaires de permis de conduire valide dans la province de Québec (Société de

En moyenne, les fermages des prairies ne baissent que de 15 % avec la présence de zones humides (Graphique n°5) ; mais cette différence va du simple au double si l’on compare

linguistique diachronique, Bern, Peter Langles, 2008, à paraître.. prédominante dans les actes. Malheureusement, l'absence d'actes similaires de la même époque, nous

Après être revenus rapidement sur la portée des bases de données brevet comme outil de compréhension d’un domaine technologique, nous militerons dans cette

Par rapport à la surtaxation du carbone de l'essence, cette taxe annuelle, fortement dissuasive, présente deux avantages: d'une part, elle incite plus fortement les

Além da bananeira, o vírus também causa doença em mais de 800 espécies de plantas, dentre as quais destacam-se o pepino, tomate, pimentão, abóbora, melão,

Le passage dans l'entreprise d'un droit exclusivement civiliste fondé sur la reconnaissance du droit de propriété à un droit nouveau organisant la place de l'homme au travail, le

Ces débats publics et politiques portent sur plusieurs questions complémentaires : le degré d’ouverture aux flux migratoires, l’intégration des migrants dans la