diff --git a/R3.01/tp/tp1/README.md b/R3.01/tp/tp1/README.md
new file mode 100644
index 0000000..4beaf6d
--- /dev/null
+++ b/R3.01/tp/tp1/README.md
@@ -0,0 +1,233 @@
+
+# TP1 : bases du langage PHP
+
+**À l'IUT**
+
+Le repertoire `public_html` à la racine de votre compte est accessible par http(s) à l'url suivante :
+
+```
+http[s]://dwarves.iut-fbleau.fr/~login/
+```
+
+**Ailleurs**
+
+Pour monter ce repertoire dans votre aborescence locale, vous pouvez utiliser le programme `sshfs` :
+```
+sshfs login@gatekeeper.iut-fbleau.fr:/export/home/an19/login repertoire/de/montage/local/
+```
+
+Depuis la version 5.4, la commande `php` embarque un serveur web interne :
+
+```bash
+php -S localhost:8080 -t repertoire
+```
+
+Le repertoire passé en paramètre est la racine du serveur web.
+
+
+### Ex1
+Vous allez tester votre premier script php : `hello_world` :
+ ```php
+
+
+
+ hello world";?>
+
+
+ ```
+
+ - Placez le fichier `hello_world.php` dans votre
+ repertoire `public_html`, et testez.
+
+ - En utilisant la fonction `phpinfo`, faites afficher dans le script
+ précédent la configuration php du serveur dwarves.
+
+### Ex2
+Quel est l'entier servant de clé à
+ - chaque élément du tableau
+ suivant :
+ ```php
+ "Paul",
+ 2 =>"Martin",
+ "Arnaud"
+ ];
+ ?>
+ ```
+
+ - à l'élément de valeur `Blouson` dans le tableau `$produits` ?
+ ```php
+ "Chemise",
+ 3 => "Pantalon",
+ 10 => "Jupe",
+ "Veste",
+ "Blouson"
+ ];
+ ?>
+ ```
+ - à chaque élément du tableau `$array` ?
+ ```php
+
+ ```
+### Ex21
+- Créez un tableau de 10 cases dont la clé i contient la somme des entiers jusqu'à i.
+- Créez un tableau de 10 cases dont la clé i2 contient i
+.
+### Ex22
+Écrivez un script php affichant les entiers de 1 à 50.
+- Faites en sorte que les impairs soient en italique, et les pairs en gras.
+- Regroupez chaque dizaine dans un même paragraphe.
+
+### Ex3
+Vous disposez du fichier [data.php](./ex3/include/data.inc.php) qui
+représente, sous forme d'un tableau, un certain nombre
+d'individus, avec pour chacun ses nom, prénom, email, taille et
+poids.
+
+Voici un extrait du fichier :
+```php
+$data = array(
+array("Nom"=>"Garza","Prenom"=>"Forrest","Email"=>"eleifend@ligulaedu","Taille"=>"185","Poids"=>"65"),
+array("Nom"=>"Tanner","Prenom"=>"Orla","Email"=>"adipiscing@vitaecouk","Taille"=>"180","Poids"=>"73"),
+...
+```
+
+1. Ecrire un script qui affichent l'ensemble des données sous
+ forme d'un tableau html.
+2. L'imc (indice de masse corporel) d'une personne est donné par
+ la formule $\frac{poids}{taille^2}$ (poids en kilogramme et taille en mètre).
+ Ajouter une colonne avec la valeur de l'imc (2 chiffres après la virgule).
+3. Une personne est considérée en surpoids lorsque son imc
+ dépasse 25. Colorier les lignes du tableau lorsque la
+ personne correspondante est en surpoids.
+ 
+
+Conseils
+
+
+- Pour utiliser le fichier de données, incluez-le dans votre
+ script.
+- La structure de langage `foreach` fournit une façon simple de
+ parcourir des tableaux. `foreach` ne fonctionne que pour les
+ tableaux et les objets, et émettra une erreur si vous tentez de
+ l'utiliser sur une variable de type différent ou une variable
+ non initialisée. Il existe deux syntaxes :
+
+ ```php
+ foreach (array_expression as $value){
+
+ }
+
+ foreach (array_expression as $key => $value){
+
+ }
+ ```
+
+ Des [exemples]](http://fr2.php.net/manual/fr/control-structures.foreach.php).
+
+- Pour arrondir un réel, vous pouvez utiliser la fonction [round](https://www.php.net/manual/fr/function.round.php).
+
+
+
+### Ex4
+Ecrivez un script qui permet de lancer deux dés, et en affiche la somme. Utilisez la fonction [mt_rand](https://www.php.net/manual/en/function.mt-rand.php) pour la génération aléatoire.
+
+
+ 
+
+### Ex5
+Ecrire un programme PHP qui affiche, sous forme d'une liste
+"cliquable" vos bookmarks (favoris) stockés dans un tableau
+associatif. Vos bookmarks seront classés par répertoire. Chaque
+répertoire aura donc un nom, et contiendra un certain nombre de
+favoris représentés par un nom, une image et une url.
+
+Exemple d'affichage :
+
+- Moteurs de recherche :
+ - [](http://google.fr).
+ - [](http://yahoo.fr).
+- Journaux :
+ - [](http://lemonde.fr).
+ - [](http://www.unixgarden.com/index.php/category/gnu-linux-magazine).
+ - [](http://lequipe.fr).
+- Sports :
+ - [](http://fff.fr).
+ - [](www.ffdf.fr).
+
+### Ex6
+Ecrire (et tester) une fonction
+
+```php
+
+```
+
+qui permet de générer un mot de passe de `n` caractères choisis
+aléatoirement parmi les caractères de `alphabet`.
+
+Conseils
+
+Il suffit de tirer aléatoirement n caractères de la chaîne alphabet et de les concatener.
+
+Les fonctions
+[strlen](https://www.php.net/manual/fr/function.strlen.php)
+et
+[mt_rand](https://www.php.net/manual/fr/function.mt-rand.php) pourront vous être utiles.
+
+
+### Ex61
+On considère les deux tableaux suivants :
+
+```php
+$tabMagazines = [
+ 'le monde' => ['frequence' => 'quotidien', 'type' => 'actualité', 'prix' => 220],
+ 'le point' => ['frequence' => 'hebdo' , 'type' => 'actualité', 'prix' => 80 ],
+ 'causette' => ['frequence' => 'mensuel' , 'type' => 'féminin' , 'prix' => 180],
+ 'politis' => ['frequence' => 'hebdo' , 'type' => 'opinion' , 'prix' => 100],
+ 'le monde diplomatique' => ['frequence' => 'mensuel' , 'type' => 'analyse' , 'prix' => 60 ],
+ 'libération' => ['frequence' => 'quotidien', 'type' => 'actualité', 'prix' => 190],
+];
+
+$tabMagazinesAbonne = ['le monde', 'le monde diplomatique'];
+```
+
+
+1. Afficher sur une ligne le nom de tous les magazines triés par ordre alphabétique et séparés par des virgules, sans faire de boucle.
+ Vous utiliserez des fonctions déjà existantes telles que [implode](https://www.php.net/manual/en/function.implode.php), [sort](https://www.php.net/manual/en/function.sort.php) et [array_keys](https://www.php.net/manual/en/function.array-keys.php) que vous trouverez dans le manuel php.
+2. Afficher séparés par des virgule les noms des quotidiens (et uniquement ceux-ci).
+3. Afficher les magazines exactement de la façon suivante en supposant qu’il peut y avoir beaucoup de magazines et beaucoup de propriétés associées :
+ - le monde (quotidien, actualité, 220)
+ - le point (hebdo, actualité, 80)
+ - causette (mensuel, féministe, 180)
+ - politis (hebdo, opinion, 100)
+ - le monde diplomatique (mensuel, analyse, 60)
+4. En utilisant le tableau `$tabMagazinesAbonne` contenant le nom des magazines d’un abonné, calculer le prix total de son abonnement.
+
+### Ex7
+On reprend l'exercice 3.
+
+1. Ajouter une colonne de clé `Imc` aux personnes du tableau `$data`. On utilisera la fonction
+[array_map](https://www.php.net/manual/fr/function.array-map.php).
+2. Trier `$data` par ordre croissant d'imc. On utilisera la fonction [usort](https://www.php.net/manual/fr/function.usort.php).
+3. Calculer l'imc moyen de l'ensemble des personnes. On utilisera la fonction [array_reduce](https://www.php.net/manual/fr/function.array-reduce.php).
+
+
+### Ex8
+1. Allez voir la page manuel PHP de [scandir](https://www.php.net/manual/en/function.scandir).
+ Quel(s) sont ses arguments ? Que renvoie-t-elle ?
+2. Utilisez scandir pour afficher des liens vers les autres fichiers de votre dossier public_html. On rappelle
+ que la balise html `a` permet de créer des hyperliens.
+3. Utilisez la méthode [str_ends_with](https://www.php.net/manual/en/function.str-ends-with.php) pour n’afficher que les scripts PHP.
+
+Par ailleurs, une liste des fonctions sur les chaînes de caractères est disponible [ici](https://www.php.net/ref.strings).
diff --git a/R3.01/tp/tp1/ex1/hello-world.php b/R3.01/tp/tp1/ex1/hello-world.php
new file mode 100644
index 0000000..11a784f
--- /dev/null
+++ b/R3.01/tp/tp1/ex1/hello-world.php
@@ -0,0 +1,9 @@
+
+
+
+ hello world !!!";
+ //phpinfo();
+ ?>
+
+
diff --git a/R3.01/tp/tp1/ex2/index.php b/R3.01/tp/tp1/ex2/index.php
new file mode 100644
index 0000000..90e8baa
--- /dev/null
+++ b/R3.01/tp/tp1/ex2/index.php
@@ -0,0 +1,26 @@
+ "Paul",
+ 2 =>"Martin",
+ "Arnaud"
+];
+
+$produits = [
+ 20 => "Chemise",
+ 3 => "Pantalon",
+ 10 => "Jupe",
+ "Veste",
+ "Blouson"
+];
+$array = ["a","b","c"];
+$array[] = "d";
+$array[10] = "j";
+unset($array[2]);
+
+echo "