Document HyperText

publicité
NF92 : accès à une base de données et exemples.
Votre BDD est hébergée sur le serveur tuxa.sme.utc et accessible. Nous présentons trois façons de l’administrer : en mode
terminal en langage SQL, puis via le serveur apache à travers une interface PhpMyAdmin et enfin via le serveur apache en
utilisant PHP.
Exercice 1 : Accès en mode terminal à une base de données
Ouvrez un terminal, puis connectez-vous au serveur à l'aide de la commande : ssh –X [email protected]
Ensuite, vous pouvez accéder à votre BDD en tapant la commande :
mysql –u nf92SXXX -p
Votre BDD a déjà été créée pour vous. Elle s’appelle nf92SXXX.
Une fois connecté, testez les commandes : help ; , status ; , use nf92SXXX; , show tables ;.
Exercice 2 : Administration en mode terminal d’une base de données
Pour le moment, votre BDD est vide. Une BDD se compose de tables. Nous allons créer une première table appelée etudiants
(sans accent). Elle comportera les colonnes suivantes : idetu, nom, prenom, semestre, mail. De quel type doivent
être ces colonnes ? Quelles contraintes doivent-elles respecter ?
Pour créer cette table, saisissez directement dans mysql :
USE nf92SXXX;
CREATE TABLE etudiants (idetu INT not null AUTO_INCREMENT, nom VARCHAR (25) not null, prenom
VARCHAR (25) not null , semestre VARCHAR (10) not null , mail VARCHAR (30) not null , PRIMARY
KEY (idetu));
Visualisez la table avec la commande show tables ;
Exercice 3 : Insertion en mode terminal dans une BDD
Toujours dans mysql, avec la commande insert, on peut ajouter des lignes aux tableaux. Essayez les commandes suivantes :
insert into etudiants values (null, "Blanche", "Neige") ;
insert into etudiants values (null, "Blanche", "Neige", "TC3") ;
insert into etudiants values (null, "Blanche", "Neige", "TC3","foret@profonde") ;
Laquelle de ces commandes marche et pourquoi ? Qu'est devenu le champ idetu ? Visualisez le contenu de la table avec la
commande SQL :
SELECT * FROM etudiants;
Exercice 4 : Administration d’une base de données via une interface web
Votre BDD est accessible par le net via le serveur apache. Pour se connecter allez sur http://tuxa.sme.utc/pma avec un navigateur
et tapez votre login et mot de passe. L’interface s’appelle PhpMyAdmin. Elle permet d’administrer votre base de données sans
connaître les commandes sql.
Visualisez la structure et le contenu de la table etudiants.
Ajoutez dans la table les personnes suivantes : Grincheux, Atchoum, Timide. Inventez les données manquantes.
Modifiez la structure de la table pour qu’elle contienne également la date de naissance de chaque étudiant, cette information n'est
pas obligatoire. De quel type doit être cette information ?
Ajoutez une date de naissance pour chacun et visualisez la table dans phpMyAdmin. Visualisez également son contenu en mode
terminal (avec mysql).
Exercice 5 : Accès à une base de données via le serveur apache en utilisant PHP
Vous pouvez également accéder à votre BDD à travers le serveur apache à l’aide d’une page (html+php). Le code suivant vous
permet de vous connecter et de vous déconnecter de votre BDD. N’oubliez pas de mettre votre login et votre mot de passe.
<?php
$dbhost = 'tuxa.sme.utc';
$dbuser = 'nf92XXX'; // remplacer les XXX avec le semestre et le numero de votre compte
// exemples nf92p014 ou nf92a078
$dbpass = 'votremotdepasse'; // remplacer votremotdepasse par votre mot de passe
$dbname = 'nf92XXX'; // remplacer les XXX comme indiqué ci-desus
$connect = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname) or die ('Error connecting to
mysql');
// vos commandes au serveur de BDD sont à ajouter ici
mysqli_close($connect);
?>
Donnez la signification de chaque ligne de ce programme. Créez une page db_ins.php et insérez le code ci-dessus. Ajoutez un
lien vers cette page au menu et visualisez la page. Si cela fonctionne, vous ne verrez rien car vous n'avez encore pas soumis de
commandes sinon vous aurez des erreurs.
Ajouter à db_ins.php après la connection à la BDD et avant mysqli_close le code suivant :
$query = 'SELECT * WHERE 1=1'; // une chaine de caractere nommee $query
echo "<br>".$query."<br>";
// TOUJOURS afficher la commande SQL contruite
// quand vous mettez au point vos codes
$result = mysqli_query($connect, $query); // $query utilise comme parametre de mysqli_query
if (!$result) {
die('Requête invalide : ' . mysqli_error($connect));
}
Testez.
Que se passe-t-il ? Mettez en place un protocole de vérification et corrigez. Que fait la fonction mysqli_query ?
Exercice 6 : Insertion dans une BDD avec un code PHP :
Pour exécuter une commande SQL depuis PHP, il suffit donc de construire une chaîne de caractères correspondant à une requête
SQL valide et de l'utiliser comme paramètre de la fonction mysqli_query(). Donnez le code php du fichier
etu_insertion_BDD.php qui ajoute monsieur Balthazar Simplet TC10 né le 1 avril 1920 dans votre table etudiants. Si
vous exécutez le code plusieurs fois, que ce passe-t-il ? Visualisez le contenu de la table.
Exercice 7 : Visualisation simple du contenu de la BDD avec un code PHP :
Créez la page etu_consult_BDD.php. Ajoutez y le code pour la connexion et la déconnexion de la BDD puis le code suivant
(au bon endroit) qui vous permet de visualiser le contenu de votre table :
$query = "SELECT * from etudiants"; // qu’est $query a ce stade pour php ?
$result = mysqli_query($connect, $query);
if (!$result) {
echo 'Impossible d\'exécuter la requête : ' . mysqli_error($connect);
exit; }
$row = mysqli_fetch_row($result);
echo “<br> cela donne ”.$row[0].” et “.$row[1];
$row = mysqli_fetch_row($result);
echo “<br> et puis ”.$row[0].” et “.$row[1].” ”.$row[3];
Testez-le et visualisez le résultat dans votre navigateur. A quoi correspond les variables $query et $result ? Commentez
chaque ligne de ce code.
Comment modifier le code pour affichez non seulement les colonnes 0 et 1 de la première ligne mais toutes les colonnes et toutes
les lignes, tant qu’il y en a ? Pour cela cherchez de l’aide sur internet.
Exercice 8 : Création d'un formulaire pour l'insertion dans la BDD
Créez le fichier etu_insertion_form.html qui contient le formulaire de saisie d'un nouvel étudiant (avec les champs pour
nom, prénom, semestre, mail). Modifiez le fichier etu_insertion_BD.php pour qu'il lise les valeurs saisies dans le
formulaire, génère ensuite une chaîne de caractères $query qui correspond à une insertion dans la base et l'affiche dans la page
résultat. Vérifiez la syntaxe : un copier/coller de ce qui apparaît dans la page peut être exécuté comme commande SQL. Quand
votre syntaxe est correcte elle insère un nouvel étudiant dans la BDD. Ajoutez le lien vers etu_insertion_form.html au
menu de votre site.
Pour vous aider, vous pouvez former la requête en vous inspirant du code suivant qui est incomplet :
$a=$_POST["a"] ; // identifier clairement à quoi correspond "a" et $a
$b=$_POST["b"] ; // idem
$query="insert into etus values ('".$a."','".$b."' )";
// qu’est $query a ce stade pour php ?
echo "<br>".$query."<br>"; /* pourquoi faire cet echo ? */
// pourquoi avoir mis la commande mysqli_query dans un commentaire ?
// $return=mysqli_query($connect, $query);
Vous pouvez refaire tout cela chez vous. Les outils sont easyphp ou wamp. Gratuit et bien.
Téléchargement