conception de site webs interactifs cours 10 patrick reuter [email protected]

32
Conception de Site Webs Interactifs Cours 10 Patrick Reuter [email protected]

Upload: benezet-garnier

Post on 03-Apr-2015

112 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Conception de Site Webs Interactifs

Cours 10

Patrick Reuter

[email protected]

Page 2: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Mini-projets

Page 3: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Transférer votre site vers votre hebergeur

• Transférerer les fichiers (index.php, …)

• Transférer la base de données

• Fichier de configuration– connect_db.php (version en local)– connect_db.php (version sur le serveur)

Page 4: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Transférer des fichiers vers votre hebergeur

FTP (File transfer protocol)

• Client FTP : Filezilla, FTP Expert, SmartFTP, …

Addresse FTP

• ftp.ifrance.com• ftp.numericable.fr• ftp.membres.lycos.fr• ftp.wanadoo.fr

Nom d'utilisateur

• preuter

Mot de passe• -----------------

Page 5: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Fichier connect_db.php<?php$dbhost="localhost";$dbuser="root";$dbpassword="";$dbname="base_cswd";

$dblink=mysql_connect($dbhost,$dbuser,$dbpassword);

$db_cswd=mysql_select_db($dbname,$dblink);function qdb($sql){

$resultat = mysql_query($sql); if (mysql_errno())

{ echo "MySQL error ".mysql_errno()." : ".mysql_error()."\n<br>";echo "Requête MySQL : ".$sql."\n<br>"; die;

} return $resultat;

}?>

Page 6: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

PHP et MySQL

Page 7: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

$sql = "INSERT INTO livreor ( id , texte , nom , date ) VALUES ('', '".mysql_escape_string($_GET['nom'])."', '".$_GET['texte']."', NOW()); ";

$resultat = qdb($sql);

$resultat = mysql_query("INSERT INTO …");

Page 8: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Fichier connect_db.php<?php$dbhost="localhost";$dbuser="root";$dbpassword="";$dbname="base_cswd";

$dblink=mysql_connect($dbhost,$dbuser,$dbpassword);

$db_cswd=mysql_select_db($dbname,$dblink);function qdb($sql){

$resultat = mysql_query($sql); if (mysql_errno())

{ echo "MySQL error ".mysql_errno()." : ".mysql_error()."\n<br>";echo "Requête MySQL : ".$sql."\n<br>"; die;

} return $resultat;

}?>

Page 9: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr
Page 10: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Parcourir les enregistrenents<?php

$sql = "SELECT * FROM sondages;";$resultat = qdb($sql);

// connaitre le nombre d'enregistrements$nombre_resultats = mysql_num_rows($resultat);

// parcourir le tableau des enregistrementswhile ($enregistrements = mysql_fetch_array($resultat)){ echo $enregistrements['id']; echo $enregistrements['question'];}

?>

Page 11: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Parcourir les enregistrenents<?php

$sql = "SELECT * FROM personnes WHERE id =".$_GET['id'];$resultat = qdb($sql);

// connaitre le nombre d'enregistrements$nombre_resultats = mysql_num_rows($resultat);

// parcourir le tableau des enregistrements$i=1;while ($i <= $nombre_resultats){ $enregistrements = mysql_fetch_array($resultat) echo $enregistrements['id']; echo $enregistrements['nom']; $i = $i + 1;}?>

Page 12: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr
Page 13: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr
Page 14: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Terminologie

• Base de données (database)

• Table (table)

• Enregistrement (record)

• Champ (field)

Page 15: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Table PERSONNE

PERSONNE

PersID nom prénom date_naiss ville_naiss

1 Dupont bob 01-01-1950 1

2 yyyy meurise 29-04-1999 2

3 zzzz codd 26-12-2000 1note : ici ville_naiss est une clé étrangère (Table VILLE)

Page 16: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Table VILLE

VILLE

VilleID nom population superficie region

1 Paris 123456 123456 12

2 Lyon 12345 12345 22

3 Grenoble 1234 1234 22note : ici region est une clé étrangère (table REGION)

Page 17: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Table personnes

id nom

1 Pascal

2 Marie

Page 18: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Table animauxid nom … id_personne

1 Zeus … 1

2 Sisko … 1

3 Peggy … 1

4 Oscar … 2

5 Felix … 2

Page 19: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Types de relations

• Relation de type 1:1

• Relation de type 1:n

• Relation de type n:m

Page 20: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Sondage

id Question Textechoix1 Reponsechoix1 Textechoix2 Reponsechoix2 …

1 Constitution européenne ?

Pour 0 Contre 0

2 Aimez vous le foot ?

J'aime bien J'aime moyen

Page 21: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Table sondages

id question

1 Aimez voue le foot ?

2 Constitution européenne ?

Page 22: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Table réponsesid reponse votes id_sondage

1 J'aime bien 0 1

2 J'aime moyen

0 1

3 J'aime pas 0 1

4 Pour 0 2

5 Contre 0 2

Page 23: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Table réponsesid reponse votes id_sondage

1 J'aime bien 0 1

2 J'aime moyen

0 1

3 J'aime pas 0 1

4 Pour 0 2

5 Contre 0 2

clé étrangère

Page 24: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Instructions MySQL

INSERT INTO `users` ( `id` , `pseudo` , `motdepasse` ) VALUES ('1', 'nathan', '0000‘ );

si le champs id est mis en auto-increment, il suffit de mettre

INSERT INTO `users` (`pseudo` , `motdepasse`) VALUES ('nathan', '0000‘ );

et la valeur de id est mise à jour automatiquement

Page 25: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Instructions MySQL

Sélectionner les champs de tous les enregistrements d’une table

SELECT * FROM `users` [WHERE condition [AND condition] [OR condition]] [ORDER BY champs [DESC][ASC]];

Page 26: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Instructions MySQL

Modifier une donnée dans une table

UPDATE nom_table SET nom_du_champs = nouvelle_valeur WHERE nom_du_champs = valeur

Exemple

UPDATE sondage SET nombrechoix1 = 0 WHERE id = 1

Page 27: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Instructions MySQL

Effacer un enregistrement

DELETE FROM nom_table WHERE nom_du_champs = valeur

Page 28: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

• Relation 1 : n

Page 29: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Relation de type 1:1

Une entité est partenaire de exactement une autre entité

Exemples:• Mariage : Une personne est marié avec exactement une

autre personne ⇒ Personne 1:1 Personne

• Immatriculation : Une véhicule à exactement une immatriculation

⇒ Véhicule 1:1 Immatriculation• Stade : Dans notre exemple, un club a exactement un

stade ⇒ Club 1:1 Stade

Page 30: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Relation de type 1:n

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 1:n Tableaux • Famille: Un enfant à exactement une mère biologique.

Mais une mère peut avoir plusieurs enfants. ⇒ Mère 1:n Enfants

Page 31: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

Relation n:mDans les deux côtés de la relation il y a un nombre arbitraire d'entités.

Attention : Ne pas écrire n:n ! (n ≠ m) Exemples :

• Etudiant ↔ Professeur: Un professeur enseigne plusieurs étudiants. Un étudiant va en cours de plusieurs professeurs.

⇒ Professeur m:n Etudiant• Immobilier : Un immobilier peut appartenir à plusieurs propriétaires.

Un propriétaire peut posséder plusieurs immobiliers. ⇒ Propriétaire n:m Immobilier

• joueurs ↔ clubs anciens : Un joueur peut avoir plusieurs clubs anciens. Un club a plusieurs joueurs.

Page 32: Conception de Site Webs Interactifs Cours 10 Patrick Reuter preuter@labri.fr

RéalisationRelation 1:1• La clé primaire d'une entité est la clé étrangère d'une autre entité

dans un champs supplémentaire.

Relation 1:n• La table de l'entité du côté n aura un champs supplémentaire qui a

comme clé étrangère la clé primaire du côté 1.

Relation n:m

• Création d'une table de jointure qui contient deux clés étrangères qui sont les clés primaires des deux tableaux.

• Les relations n:m seront toujours converties en deux relations, une relation 1:n, et une relation 1:m.