Algorithmes et structures de donnes avances Partie Conception de Sites Web dynamiques - PowerPoint PPT Presentation

1 / 55
About This Presentation
Title:

Algorithmes et structures de donnes avances Partie Conception de Sites Web dynamiques

Description:

2. Nom de la base de donn es. 3. Nom d'utilisateur. preuter. 4. Mot de passe. Fichier ... Plusieurs personnes qui aiment plusieurs DVDs. Table CDs. 2. Nirvana ... – PowerPoint PPT presentation

Number of Views:206
Avg rating:3.0/5.0
Slides: 56
Provided by: PatrickR158
Category:

less

Transcript and Presenter's Notes

Title: Algorithmes et structures de donnes avances Partie Conception de Sites Web dynamiques


1
Algorithmes et structures de données avancées
Partie Conception de Sites Web dynamiques
  • Cours 11
  • Patrick Reuter

2
Programme
  • Mettre le site en ligne
  • Mise en page cohérente
  • BDD Relation entre des tables (11,1n,nm)
  • Variables de session
  • Référencement moteur de recherche

3
Transférer des fichiers vers votre hebergeur
  • Information de votre fournisseur
  • Addresse FTP
  • ftp.ifrance.com
  • ftp.numericable.fr
  • ftp.membres.lycos.fr
  • ftp.wanadoo.fr
  • FTP (File transfer protocol)
  • Client FTP Filezilla, FTP Expert, SmartFTP,
  • 2. Nom de la base de données
  • 3. Nom d'utilisateur

4
Fichier connect_db.php
  • lt?php
  • dbhost"localhost"
  • dbuser"root"
  • dbpassword""
  • dbname"base_cswd"
  • dblinkmysql_connect(dbhost,dbuser,dbpassword)
  • db_cswdmysql_select_db(dbname,dblink)
  • function qdb(sql)
  • resultat mysql_query(sql)
  • if (mysql_errno())
  • echo "MySQL error ".mysql_errno()."
    ".mysql_error()."\nltbrgt"
  • echo "Requête MySQL ".sql."\nltbrgt"
  • die
  • return resultat

5
Fichier connect_db.php
  • lt?php
  • dbhost"xxxx.ifrance.com"
  • dbuser"login"
  • dbpassword"mdp"
  • dbname"yyyy"
  • dblinkmysql_connect(dbhost,dbuser,dbpassword)
  • db_cswdmysql_select_db(dbname,dblink)
  • function qdb(sql)
  • resultat mysql_query(sql)
  • if (mysql_errno())
  • echo "MySQL error ".mysql_errno()."
    ".mysql_error()."\nltbrgt"
  • echo "Requête MySQL ".sql."\nltbrgt"
  • die
  • return resultat

6
Mise en page
En tête de la page
Accueil Menu 1 Menu 2 Menu 3 Menu 4
Pied de la page
7
Conception de Site Webs Interactifs
  • Déroulement
  • Pages web statiques (HTML/XHTML)
  • Mise en forme avec feuilles de styles (CSS)
  • Programmation côté serveur
  • Pages web dynamiques (PHP)
  • avec connexion à une base de données (MySQL)
  • Programmation côté client
  • JavaScript
  • Référencement Internet (moteur de recherche)

8
Mise en page
En tête de la page
Accueil Menu 1 Menu 2 Menu 3 Menu 4
Pied de la page
9
miseenpage.php
  • ltdiv id"page_entete"gt
  • Projet CSWD
  • lt/divgt
  • ltdiv id"menu"gt
  • ltulgt
  • ltligtlta href""gtAccueillt/agtlt/ligt
  • ltligtlta href""gtMenu 1lt/agtlt/ligt
  • ltligtlta href""gtMenu 2lt/agtlt/ligt
  • ltligtlta href""gtMenu 3lt/agtlt/ligt
  • ltligtlta href""gtMenu 4lt/agtlt/ligt
  • lt/ulgt
  • lt/divgt
  • ltdiv id"contenu"gt
  • Contenu de la page !
  • lt/divgt

10
miseenpage.php
miseenpage.css
ltdiv id"page_entete"gt Projet CSWD lt/divgt ltdiv
id"menu"gt ltulgt ltligtlta
href""gtAccueillt/agtlt/ligt ltligtlta
href""gtMenu 1lt/agtlt/ligt ltligtlta
href""gtMenu 2lt/agtlt/ligt ltligtlta
href""gtMenu 3lt/agtlt/ligt ltligtlta
href""gtMenu 4lt/agtlt/ligt lt/ulgt lt/divgt ltdiv
id"contenu"gt Contenu de la page ! lt/divgt ltdiv
id"page_pied"gt (c) CSWD 2007 lt/divgt
page_entete height 90px background
697FBF text-align center clear
both menu width224px
background-color 897FFF float
left contenu width800px float
right page_pied height 30px
background-color 798FCF text-align center
clear both
11
  • Inclure dans vos fichiers HTML/PHP
  • ltlink rel"stylesheet" type"text/css"
    href"miseenpage.css" /gt

12
pied.php
entete.php
  • ltmeta http-equiv"Content-Type"
    content"text/html charsetiso-8859-1" /gt
  • lthtmlgt
  • ltheadgt
  • lt!-- Site Title --gt
  • lttitlegtHome Pagelt/titlegt
  • lt!-- Link to Style External Sheet --gt
  • ltlink href"style.css" type"text/css"
    rel"stylesheet" /gt
  • lt/headgt
  • ltbodygt
  • ltdiv id"page_entete"gt
  • Projet CSWD
  • lt/divgt
  • ltdiv id"menu"gt
  • ltulgt
  • ltligtlta href""gtAccueillt/agtlt/ligt

lt/divgt ltdiv id"page_pied"gt (c)
CSWD 2007 lt/divgt lt/bodygt lt/htmlgt
13
entete.php et pied.php
  • lt?php
  • include "entete.php"
  • ?gt
  • La page est vide !
  • lt?php
  • include "pied.php"
  • ?gt

14
(No Transcript)
15
Terminologie
  • Base de données (database)
  • Table (table)
  • Enregistrement (record)
  • Champ (field)

16
  • Requêtes MySQL
  • INSERT insérer un enregistrement
  • SELECT récupérer un/des enregistrement(s)
  • UPDATE mettre à jour des enregistrements
  • DELETE effacer des enregistrements

17
Types de relations
  • Relation de type 11
  • Relation de type 1n
  • Relation de type nm

18
  • Relation de type 1n

19
Table personnes
20
Table animaux
21
  • Relation de type nm

22
  • Une personne qui aime plusieurs DVDs

23
Table personnes
24
Table DVDs
25
  • Plusieurs personnes qui aiment plusieurs DVDs

26
Table CDs
27
Table DVDs
28
Table personne_dvd (de jointure)
29
Relation de type 11
  • Une entité est partenaire de exactement une autre
    entité
  • Exemples
  • Mariage Une personne est marié avec exactement
    une autre personne
  • ? Personne 11 Personne
  • Immatriculation Une véhicule à exactement une
    immatriculation
  • ? Véhicule 11 Immatriculation
  • Stade Dans notre exemple, un club a exactement
    un stade
  • ? Club 11 Stade

30
Relation de type 1n
  • Une entité d'un côté est en relation avec un ou
    plusieurs entités de l'autre côté.
  • Exemples
  • Art Un tableau se trouve (à un moment donné)
    dans un musée. Par contre, dans un musée il y a
    plusieurs tableaux.
  • ? Musée 1n Tableaux
  • Famille Un enfant à exactement une mère
    biologique. Mais une mère peut avoir plusieurs
    enfants.
  • ? Mère 1n Enfants

31
Relation nm
  • Dans les deux côtés de la relation il y a un
    nombre arbitraire d'entités.
  • Attention Ne pas écrire nn ! (n ? m)
  • Exemples
  • Etudiant ? Professeur Un professeur enseigne
    plusieurs étudiants. Un étudiant va en cours de
    plusieurs professeurs.
  • ? Professeur mn Etudiant
  • Immobilier Un immobilier peut appartenir à
    plusieurs propriétaires. Un propriétaire peut
    posséder plusieurs immobiliers.
  • ? Propriétaire nm Immobilier
  • joueurs ? clubs anciens Un joueur peut avoir
    plusieurs clubs anciens. Un club a plusieurs
    joueurs.

32
PHP et MySQL
33
(No Transcript)
34
PHP et MySQL
35
Fichier connect_db.php
  • lt?php
  • dbhost"localhost"
  • dbuser"root"
  • dbpassword""
  • dbname"base_cswd"
  • dblinkmysql_connect(dbhost,dbuser,dbpassword)
  • db_cswdmysql_select_db(dbname,dblink)
  • function qdb(sql)
  • resultat mysql_query(sql)
  • if (mysql_errno())
  • echo "MySQL error ".mysql_errno()."
    ".mysql_error()."\nltbrgt"
  • echo "Requête MySQL ".sql."\nltbrgt"
  • die
  • return resultat

36
Tous les fichiers PHP
  • lt?php
  • require_once("connect_db.php")
  • ?gt

37
Insérer un enregistrement
  • INSERT INTO livreor
  • ( id , texte , nom , date )
  • VALUES
  • ('', 'Très bon site', 'Cédric', NOW())

38
Insérer un enregistrement
  • sql "INSERT INTO livreor
  • ( id , texte , nom , date )
  • VALUES
  • ('', 'Très bon site', 'Cédric', NOW()) "
  • resultat qdb(sql)
  • revient à
  • resultat mysql_query("INSERT INTO ")

39
  • echo "j'utilise php" // ou bien
  • echo "j\'utilise php" //

40
Concatenation 1
  • lt?    echo   "Salut"." Martin" 
  • ?gt 

41
Variables
  • lt?php
  • a 0
  • nom 'Horst'
  • echo a
  • ?gt
  • lt?php a 0 ?gt
  • lt?php nom 'Horst' ?gt
  • lt?php echo a ?gt

42
Concatenation 2
  • lt? 
  • nom  "Martin" 
  • ?gt
  • Salut lt? echo nom  ?gt

43
Insérer un enregistrement première (mauvaise)
version
  • sql "INSERT INTO livreor ( id , texte , nom ,
    date ) VALUES ('', '". _GET'nom'."',
    '"._GET'texte'."', NOW()) "
  • resultat qdb(sql)
  • resultat mysql_query("INSERT INTO ")

44
Attention à l'injection SQL
  • sql "l'arbre"
  • sql mysql_escape_string(sql)

45
Attention à l'injection SQL
  • sql "INSERT INTO livreor
  • ( id , texte , nom , date )
  • VALUES
  • ('', 'L'arbre pousse.', 'Cédric' DELETE FROM
    livreor ' Roussel', NOW()) "
  • resultat qdb(sql)
  • revient à
  • resultat mysql_query("INSERT INTO ")

46
Attention à l'injection SQL
  • sql "INSERT INTO livreor
  • ( id , texte , nom , date )
  • VALUES
  • ('', 'L\'arbre pousse.', 'Cédric', NOW()) "
  • resultat qdb(sql)
  • revient à
  • resultat mysql_query("INSERT INTO ")

47
Insérer un enregistrement deuxième (bonne)
version
  • sql "INSERT INTO livreor ( id , texte , nom ,
    date ) VALUES ('', '". mysql_escape_string(_GET'
    nom')."', '". mysql_escape_string(_GET'texte')
    ."', NOW()) "
  • resultat qdb(sql)
  • resultat mysql_query("INSERT INTO ")

48
Parcourir les enregistrenents
  • lt?php
  • sql "SELECT FROM livreor"
  • resultat qdb(sql)
  • // connaitre le nombre d'enregistrements
  • nombre_resultats mysql_num_rows(resultat)
  • // parcourir le tableau des enregistrements
  • i1
  • while (i lt nombre_resultats)
  • enregistrements mysql_fetch_array(resultat
    )
  • echo enregistrements'nom'
  • echo enregistrements'texte'
  • i i 1
  • ?gt

49
Parcourir les enregistrenents
  • lt?php
  • sql "SELECT FROM livreor"
  • resultat qdb(sql)
  • // connaitre le nombre d'enregistrements
  • nombre_resultats mysql_num_rows(resultat)
  • // parcourir le tableau des enregistrements
  • while (enregistrements mysql_fetch_array(resul
    tat))
  • echo enregistrements'nom'
  • echo enregistrements'texte'
  • ?gt

50
  • mysql_escape_string
  • Fonction "inverse"
  • stripslashes

51
Parcourir les enregistrenents
  • lt?php
  • sql "SELECT FROM livreor"
  • resultat qdb(sql)
  • // connaitre le nombre d'enregistrements
  • nombre_resultats mysql_num_rows(resultat)
  • // parcourir le tableau des enregistrements
  • while (enregistrements mysql_fetch_array(resul
    tat))
  • echo stripslashes(enregistrements'nom')
  • echo stripslashes(enregistrements'texte')
  • ?gt

52
Les variables de session
53
Les variables de session
  • verifer_login.php (si le pseudo existe
    et le mdp est correcte)
  • _SESSION'pseudo'_GET'pseudo'
  • les autres pages pour lesquelles il faut être
    loggé
  • if (_SESSION'pseudo' ! "")
  • else
  • echo "il faut s'inscrire "

54
Les variables de session
  • deconnexion.php
  • ...
  • _SESSION'pseudo'""
  • ...

55
(No Transcript)
Write a Comment
User Comments (0)
About PowerShow.com