conception de site webs interactifs cours 10 patrick reuter [email protected]
TRANSCRIPT
Mini-projets
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)
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• -----------------
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;
}?>
PHP et MySQL
$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 …");
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;
}?>
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'];}
?>
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;}?>
Terminologie
• Base de données (database)
• Table (table)
• Enregistrement (record)
• Champ (field)
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)
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)
Table personnes
id nom
1 Pascal
2 Marie
Table animauxid nom … id_personne
1 Zeus … 1
2 Sisko … 1
3 Peggy … 1
4 Oscar … 2
5 Felix … 2
Types de relations
• Relation de type 1:1
• Relation de type 1:n
• Relation de type n:m
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
Table sondages
id question
1 Aimez voue le foot ?
2 Constitution européenne ?
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
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
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
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]];
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
Instructions MySQL
Effacer un enregistrement
DELETE FROM nom_table WHERE nom_du_champs = valeur
• Relation 1 : n
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
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
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.
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.