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.