Site de e-commerce Quels langages pour cela ? Le langage PHP L

Transcription

Site de e-commerce Quels langages pour cela ? Le langage PHP L
Systèmes d'informations
Exemple : Site de e-commerce
Quels langages pour cela ?
¾ Bases
¾ L'utilisateur
de données :
Articles en ventes
• Clients + commandes / factures
ne peut pas accéder directement aux BD
•
C'est un ensemble d'outils pour stocker / gérer / diffuser
des informations / des données
¾
¾
Le stockage : Bases de données + SGDBR
¾
La gestion : Saisie, Mise à jour, Contrôle
¾
faut transiter par un serveur Web
ÖAffichage
du catalogue sur le Web
• Extraction et affichage des données
• Outils de recherche
+ formulaires
¾ Diffusion
¾ Le
ÖAlertes
client passe commande :
Ajout de données dans la table "commandes"
• Diffusion de la commande au service expédition
• Suivi du paiement
¾ Plusieurs
•
1
Programmation avancée
serveur accède aux données et déclenche des actions
ÖRequêtes
¾ Un
La diffusion : Catalogue, Sites Web, Services spécifiques
Programmation avancée
¾ Il
sur le SGDBR
au services d'expédition / de facturation
langages possibles coté serveur :
ÖPHP
(Apache, ...)
(IIS, ...)
ÖProgrammes CGI : C/C++, Perl, Python
ÖASP
2
Programmation avancée
Le langage PHP
L'architecture Client/Serveur en PHP
Insertion dans un document HTML
¾ Généralités
¾ Le
¾ Le
¾ Liaison
•
avec un serveur de base de données
¾ Génération
¾ Réception
¾ Insertion
client demande une URL classique :
Le serveur envoie un fichier HTML
document HTML doit avoir l ’extension ".php"
et doit être ouvert via un serveur Web (http://…)
¾ Pour
¾ Le
client demande une URL contenant du PHP :
Le serveur exécute le script
• Le serveur peut accéder à des fichiers, des BD
• Le serveur envoie les résultats sous forme HTML
d'une page d’après une BD
de données reçues dans une BD
¾ ou
<?php
instruction1;
instruction2;
?>
¾ Conséquences
Öle
Öle
Programmation avancée
4
client n'a pas à connaître PHP
client ne voit pas les scripts PHP, mais leurs résultats
Programmation avancée
insérer un script :
<? print("coucou"); ?>
•
de données provenant d'un formulaire
5
Programmation avancée
Les variables
Les tableaux
Lire les valeurs d'un tableau
¾ Les
¾ Ils
¾ Lire
¾ Il
noms de variables commencent tous par "$"
existe 4 principaux types de variables :
integer (entiers) :
•
sont définis de 2 façons :
d'un bloc :
•
case par case (avec l'indice précis) :
$i = 4;
•
$x = 4.2; $y = 1.035e-3;
•
•
Programmation avancée
//
//
//
//
taille du tableau et la création des cases vides sont
gérées automatiquement
7
Programmation avancée
plusieurs cases et remplir une liste de variables :
list($num,$nom) = $t;
comme résultat d'une fonction (ex : requête SQL)
¾ La
array (tableaux)
une seule case et placer sa valeur dans une variable :
$t = array("1","Dupond","Paris");
string (chaînes de caractères) :
$nom = "Dupond";
•
¾ Lire
$tab[0] = "Lundi";
$tab[3] = "Mardi";
float (réel = nombres à virgule flottante) :
6
$x = $tab[8];
$tab = array("Lundi","Mardi",…);
•
3
8
résultats
$num = "1";
$nom = "Dupond";
la valeur "Paris" n'est pas lue
Programmation avancée
9
Définir une fonction
Structure d'un programme
La diffusion d'information
¾ Mot
¾ Identique
¾ Pour
clé "function" + nom des arguments + instructions :
function affiche($nom,$prénom) {
print("Nom = $nom<BR>");
print("Prénom = $prénom<BR>");
}
¾ Appelle
au langage Java / JavaScript / C :
conditionnelles simples :
•
alternatives :
if (condition) { instructions; }
else { instructions; };
de la fonction avec des valeurs :
•
Nom = Dupond<BR>Prénom = Jean<BR>
10
•
while (conditions) { ... };
•
Programmation avancée
Exécuter une requête
¾ Connexion
¾ On
$c = pg_connect("host=nom-du-serveur
dbname=nom-de-la-base
user=nom-de-login
password=mot-de-passe");
•
•
exécute une requête SQL à travers la connexion crée :
if (!$result) {
print("Erreur dans la requête.");...
}
Afficher le résultat d'une requête
Programmation avancée
14
faut faire une boucle pour afficher chaque ligne :
¾ Il
list($titre,$prix) =
pg_fetch_row($result,$i);
print("$titre $prix<BR>");
faut extraire les données ligne par ligne :
}
list($case1,$case2,…,$caseN) =
pg_fetch_row($result,$i);
Programmation avancée
Programmation avancée
15
for ($i=0;$i<$nlignes;$i++) {
list($titre,$prix) =
pg_fetch_row($result,$i);
print("<TR><TD>$titre</TD>");
print("<TD
ALIGN='RIGHT'>$prix</TD></TR>");
}
for ($i=0;$i<$nlignes;$i++) {
for ($i=0;$i < $n;$i++) {
extraire les données de la ligne $i
produire le HTML pour la ligne $i}
$c = pg_connect("host=iuthaprojet
dbname=biblio
user=biblio");
print("<TABLE>");
print("<TR><TH>ISBN</TH><TH>Prix</TH></TR
>");
$nlignes = pg_numrows($result);
¾ Il
12
Exemple pour afficher une table
$result = pg_exec($,
"SELECT titre,prix FROM livres;");
$nlignes = pg_numrows($result);
Programmation avancée
$result = pg_exec($,
"SELECT titre,prix FROM livres;");
Exemple : affichage simple
faut rechercher le nombre de lignes :
afficher un pied de page
fermer la connexion
if (!$c) {
print("Echec de la connection");
exit;
}
$result est un tableau à deux dimensions contenant la
table résultant de la requête (éventuellement vide)
• $result est nul si la requête a échoué :
13
: pour chaque ligne
en forme HTML
Exemple de requêtes
•
if (!$c) {
print("Erreur de connexion.");…
}
¾ Il
11
$result = pg_Exec($c,"requête SQL;");
la variable $c contient un numéro de connexion
$c est nulle (booléen faux) si la connexion a échoué :
Programmation avancée
Ömise
for ($i=6; $i<12; $i++) { ... };
Accéder à un serveur PostgreSQL
à une base de donnée
Öboucle
boucles :
le code HTML suivant :
Programmation avancée
diffuser des données sur une page Web en PHP,
il faut :
• se connecter à un serveur (PostgreSQL ici)
• demander l'exécution d'une requête
• afficher un entête
• afficher les données :
if (condition) instruction;
affiche("Dupond","Jean");
¾ Produit
•
print("</TABLE>");
16
Programmation avancée
17
Programmation avancée
18
Recevoir des données sur le serveur
Exemple de formulaire
¾ Envoi
: créer un formulaire avec :
action = l'URL du fichier contenant le script PHP
• méthode = POST (ou GET pour débugger)
• nommer tous les éléments du formulaire à lire
• donner des valeurs aux boutons radio et choix
¾ Réception
: dans le script PHP :
une variable est créée par élément (elle porte son nom)
• pour un groupe de bouton radio, une liste de choix :
valeur de variable = "value" de l'élément choisi
•
19
Réception et insertion dans une BD
¾ Connexion
<BODY>Bonjour
<? print($nom); ?>
<BR>Vous avez &nbsp;
<?php
switch ($x) {
case 0 : print("aucun enfant");
case 1 : print("1 enfant");
case 2 : print("2 enfants");
case 3 : print("3 enfants ou plus");
}
?>
</HTML>
<FORM ACTION="recept.php"METHOD="POST">
Nom : <INPUT TYPE="TEXT" NAME="nom">
<BR>Enfants :<BR>
<INPUT TYPE="RADIO" NAME="x" VALUE="0">
aucun<BR>
<INPUT TYPE="RADIO" NAME="x" VALUE="1">
1<BR>
<INPUT TYPE="RADIO" NAME="x" VALUE="2">
2<BR>
<INPUT TYPE="RADIO" NAME="x" VALUE="3">
plus
</FORM>
•
Programmation avancée
Exemple de réception : recept.php
Programmation avancée
20
Exemple
à la base de données
<?php
$c = pg_connect("host=iuthaprojet
dbname=clients");
¾ Exécution
d'une requête de type "INSERT INTO" avec les
variables contenant les données du formulaires reçues
pg_exec($c,
"INSERT INTO clients VALUES (
$nom,$x);");
¾ Affichage
d'un message de confirmation
ou redirection vers une autre page du site
?>
<H3>Inscription effectuées</H3>
<A HREF="...">Retour à l'accueil</A>
Programmation avancée
22
Programmation avancée
23
Programmation avancée
21