Conception de Site Webs Interactifs Cours 10 Patrick Reuter
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 "; echo "Requête MySQL : ".$sql."\n "; 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 "; echo "Requête MySQL : ".$sql."\n "; 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 enregistrements while ($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 PersIDnomprénomdate_naissville_naiss 1Dupontbob yyyymeurise zzzzcodd note : ici ville_naiss est une clé étrangère (Table VILLE)
Table VILLE VILLE VilleIDnompopulationsuperficieregion 1Paris Lyon Grenoble note : ici region est une clé étrangère (table REGION)
Table personnes idnom 1Pascal 2Marie
Table animaux idnom…id_personne 1Zeus…1 2Sisko…1 3Peggy…1 4Oscar…2 5Felix…2
Types de relations Relation de type 1:1 Relation de type 1:n Relation de type n:m
Sondage idQuestionTextechoix1Reponsechoix1Textechoix2Reponsechoix2… 1Constitut ion europée nne ? Pour0Contre0 2Aimez vous le foot ? J'aime bienJ'aime moyen
Table sondages idquestion 1Aimez voue le foot ? 2Constitution européenne ?
Table réponses idreponsevotesid_sondage 1J'aime bien01 2J'aime moyen 01 3J'aime pas01 4Pour02 5Contre02
Table réponses idreponsevotesid_sondage 1J'aime bien01 2J'aime moyen 01 3J'aime pas01 4Pour02 5Contre02 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 dune 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:m Dans 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éalisation Relation 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.