retour page Patrick TRAU logo

Patrick TRAU

Programmation et Bases de données

Unistra - Faculté de Physique et Ingénierie


  1. Informations générales
  2. détails et documents du cours
  3. Contrôle des connaissances
  4. les TP
  5. autres documents (plus anciens) pouvant servir

1) Informations générales

Le cours de Programmation et Bases de données a été proposé en Licence 3 Physique et Applications parcours Ingénierie (ULP IPST), devenue licence 3 Sciences Pour l'Ingénieur (Unistra).

Ce cours permet à l'étudiant d'acquérir des connaissances informatiques dans le domaine de la programmation et des bases de données :

Le HTML a été vu en L1, la programmation (en C ou en python, suivant les années) est vue en L2. Bien que je reprenne à zéro, ceux qui n'ont pas ces prérequis devront travailler plus que les autres (et ceux qui les ont peuvent réviser un peu). Le choix de programmer en PHP a été fait pour que tous ceux qui ont déjà étudié un langage plus classique se retrouvent au même niveau.

Etude de cas : nous mettrons en œuvre une base de données partagée, programmerons des interfaces. Nous utiliserons les langages HTML, PHP, SQL, et quelques fois javascript (suivant les années). Les logiciels utilisés sont les classiques des LAMP (Linux Apache Mysql Php)

Organisation : 12h cours (6 séances de 2h) et 4 TP de 4h

Evaluation : une épreuve écrite (1h), de même poids que la moyenne des TP (rapport + participation). En session de rattrapage (ou substitution), une seule épreuve écrite (2h) fournit la note de toute l'UE (la note de TP n'est donc pas prise en compte dans cette session, mais le sujet peut aborder des points vus uniquement en TP). En cas d'absence à un contrôle ou TP, ceux qui aimeraient que j'étudie leur situation auront au minimum la décence de me contacter.

Pour comparer, j'ai gardé le programme des année 2010

2) détails et documents du cours

documents pdf :

quelques fichiers créés "en live" pendant les cours :

  1. page de base en php : j'ai montré comment on accédait à notre serveur web, comment on y place une page, et un peu de php (boucle)
  2. fonctions en php : un peu plus de php : test, fonctions (au départ sans argument, puis nous passons un nombre à la fonction, puis elle nous retourne un texte). Nous avons aussi vu comment récupérer une valeur dans l'URL (test.php?nombre=3)
  3. récupération d'une valeur via un formulaire : Si la page précédente s'appelle "test.php", celle ci permet de demander une valeur, sans devoir obligatoirement la rajouter dans l'URL
  4. les tableaux (array) en php : différentes fonctions pour les gérer (mt_rand est un générateur de nombres)
  5. récupération d'une valeur depuis une BD SQL : différentes fonctions pour simplifier le travail. Il faut bien sûr que la base "voitures" vue en cours existe, et possède au moins une Renault

3) consignes pour le contrôle final

Le contrôle se fait sur papier, et de manière individuelle. Il a le même poids que les TP.

Les documents personnels (notes prises en cours, en TP, et les documents que J'AI écrits (sujets de TP, documents mis sur moodle) seront autorisés en première session (en tout cas cette année), et interdits en seconde session. L'ensemble du programme traité en cours et en TP peut être abordé (architecture client-serveur, HTML, PHP, SQL...) Il comporte évidemment de la programmation ET des bases de données. Souvent, en seconde session je mets plus de poids sur la programmation (en PHP).

A propos des TP, je considère que vous avez compris tout ce que vous avez écrit dans vos rapports, et pourra donc être traité en contrôle. Par contre, vous pouvez préciser dans vos rapports de TP ce que vous n'avez pas compris ou pas réussi à faire.

Ci dessous, un exemple de sujet (certes long pour être traité en 1h) :

4) les TP

Les TP se passent bien sur en salle informatique. Je me débrouille en général pour qu'un maximum de TP aient lieu dans une grande salle, pour que vous travailliez seul. Les autres fois, vous pouvez travailler en binôme (et ne rendre qu'un rapport de TP pour vous deux).

En fin de TP, vous DEVEZ me rendre vos fichiers sources, dans l'état, obligatoirement sur moodle. Puis vous avez une semaine (7*24*60*60 s après la fin du TP) pour faire votre rapport, et éventuellement améliorer votre source, mais pas besoin d'aller jusqu'au bout du sujet.

Au dernier TP (4ème) par contre, vous rendrez votre rapport obligatoirement à la fin du TP

En fait, nous utilisons un serveur Web et un SGBD (mysql) localisés à l'université. Vous pourrez donc y accéder depuis n'importe quel poste à la fac. Mais pas de l'extérieur. En période de confinement, il faudra soit utiliser le VPN de l'unistra, soit travailler à distance sur nos postes virtuels. En cas de problèmes (ça nous arrive au moins une fois par an, mais pas nécessairement pendant un TP PBD), j'ai également tout préparé sur mon Raspbery PI personnel (c'est un peu plus lent, mais bien moins que je ne pensais).

[lien] TP 1 : HTML + découverte JavaScript

Suivant le navigateur, on peut remplacer «document.clear() ;» par «document.body.innerHTML= "" ;» si ça pose problème (Q3.3).

Suite à la correction des rapports, j'ai quelques remarques. Certains regrettent qu'il n'y ait pas de variables "permanentes" dans Javascript. C'est très dangereux de pouvoir stocker quelque chose, que ce soit côté serveur ou côté client (on pourrait par exemple y placer un virus ou autre espion). Ce n'est acceptable que si c'est stocké dans une zone bien isolée, suivant un protocole cadré. Dans ce cas, c'est côté client client : je propose un cookie.

[lien] TP 2 : programmation en PHP, boucles et tests

[lien] TP 3 : découverte PhpMyAdmin, création d'une base, accès via PHP

Je vous rappelle que le but de mes TP n'est pas que vous réussissiez à faire fonctionner le système, mais à comprendre comment et pourquoi ça fonctionne.
Il est donc inutile de chercher sur internet un programme qui effectue la fonctionnalité demandée, mais qui utilise un langage ou des fonctions non vues en cours. Au contraire, ça baissera la note.

Au contraire, partez du document disponible ici, essayez de comprendre (en ajoutant ou supprimant des instructions, en affichant l'état de certaines variables...)

Utilisez-le pour créer les tables pour l'emploi du temps (et commencer sur une base sûre). Seules les tables avec les noms de MA BASE "emploi du temps" (t_edt, t_prf...) sont à recréer, celles sur les outils peuvent rester ainsi que d'autres tables que vous aimeriez garder. Attention, j'y ai également mis les relations, donc on ne peut pas, par exemple, supprimer un prof dans t_prf s'il est encore présent dans l'emploi du temps (id_pr).

[lien] TP 4 : création d'une BD «emploi du temps», création du client PHP

code SQL pour recréer les tables : ce fichier vous permet de créer les tables dans votre base. Si jamais les tables existent, il faut soit les supprimer soit les renommer.

instructions pour accéder à la BD en PHP (vu en cours)

  1. se connecter à la base :
    $db=mysqli_connect("nomduserveurBD.unistra.fr","nomuser","motdepasseBD","nomuser");
  2. lancer une requête : supposons qu'existe la table « infos »
    $result=mysqli_query($db,"SELECT * FROM infos;");
  3. traitement du résultat : récup nombre de lignes et colonnes de la réponse
    $nblig=mysqli_num_rows($result);
    $nbcol=mysqli_num_fields($result);
  4. il ne reste plus qu'à afficher ;
    echo "<P>il y a $nblig lignes pour $nbcol colonnes</P>";
    echo "<table border align=\"center\" width=\"90%\">";
    for ($j=0;$j<$nbcol;$j++)
     {
      $recup=mysqli_fetch_field_direct($result,$j);
      $nom=$recup->name;
      echo "<th>$nom</th>";
     }
    for ($i=0;$i<$nblig;$i++)
     {
      $tab=mysqli_fetch_row($result);
      echo "<tr>";
      for ($j=0;$j<$nbcol;$j++) echo "<td align=\"center\">$tab[$j]</td>";
      echo "</tr>";
     }
    echo "</table>";
  5. fermer la connexion (automatique en fin de fichier, si oublié)
    mysqli_close($db);

4) autres documents (plus anciens) pouvant servir


P. TRAU, juin 2020