Title: Algorithmes et structures de donnes avances Partie Conception de Sites Web dynamiques
1Algorithmes et structures de données avancées
Partie Conception de Sites Web dynamiques
2Programme
- 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
3Transfé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
4Fichier 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
5Fichier 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
6Mise en page
En tête de la page
Accueil Menu 1 Menu 2 Menu 3 Menu 4
Pied de la page
7Conception 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)
8Mise en page
En tête de la page
Accueil Menu 1 Menu 2 Menu 3 Menu 4
Pied de la page
9miseenpage.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
10miseenpage.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
12pied.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
13entete.php et pied.php
- lt?php
- include "entete.php"
- ?gt
- La page est vide !
- lt?php
- include "pied.php"
- ?gt
14(No Transcript)
15Terminologie
- 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
17Types de relations
- Relation de type 11
- Relation de type 1n
- Relation de type nm
18 19Table personnes
20Table animaux
21 22- Une personne qui aime plusieurs DVDs
23Table personnes
24Table DVDs
25- Plusieurs personnes qui aiment plusieurs DVDs
26Table CDs
27Table DVDs
28Table personne_dvd (de jointure)
29Relation 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
30Relation 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
31Relation 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.
32PHP et MySQL
33(No Transcript)
34PHP et MySQL
35Fichier 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
36Tous les fichiers PHP
- lt?php
- require_once("connect_db.php")
- ?gt
37Insérer un enregistrement
- INSERT INTO livreor
- ( id , texte , nom , date )
- VALUES
- ('', 'Très bon site', 'Cédric', NOW())
38Insé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" //
40Concatenation 1
- lt? echo "Salut"." Martin"
- ?gt
41Variables
- lt?php
- a 0
- nom 'Horst'
- echo a
- ?gt
- lt?php a 0 ?gt
- lt?php nom 'Horst' ?gt
- lt?php echo a ?gt
-
42Concatenation 2
- lt?
- nom "Martin"
- ?gt
- Salut lt? echo nom ?gt
43Insé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 ")
44Attention à l'injection SQL
- sql "l'arbre"
- sql mysql_escape_string(sql)
45Attention à 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 ")
46Attention à 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 ")
47Insé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 ")
48Parcourir 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
49Parcourir 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
51Parcourir 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
52Les variables de session
53Les 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 "
-
54Les variables de session
- deconnexion.php
- ...
- _SESSION'pseudo'""
- ...
55(No Transcript)