diff --git a/README.md b/README.md
index 41d92b2e3de6daed1b02f43a7e6e6ecf35ef04c1..9a7dd8526e7c29d402b24f88857c37cb6a7c6423 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,8 @@
 # Documentation
 **Note :** Non mise à jour depuis le TP7 (ou TP6). La gestion des erreurs et des retours de résultat a changé depuis. Les définitions des fonctions restent cependant pour la plupart encore valables.
 
+Il est recommandé de visualiser le site sur cette adresse pour éviter tout problème avec la base de donnée: https://iut-dev.sl-projects.com/
+
 ## Objet
 Les fonctions publiques statiques retournent des arrays se basant sur ce format :
 ````php
diff --git a/controller/ControleurAuteur.php b/controller/ControleurAuteur.php
index db27686e1ff907a87b764d1ec5b99f910fac04fa..2dec0caf6fa90c4a64fd613579f4f05a015e67aa 100644
--- a/controller/ControleurAuteur.php
+++ b/controller/ControleurAuteur.php
@@ -1,6 +1,7 @@
 <?php
 require_once "ControleurObjet.php";
 require_once("models/Auteur.php");
+require_once("models/Nationalite.php");
 
 class ControleurAuteur extends ControleurObjet
 {
@@ -51,7 +52,89 @@ class ControleurAuteur extends ControleurObjet
 
     public static function definirNationalites(): string
     {
-        $auteurs = Auteur::getAuteursByNumLivre(15);
-        return print_r($auteurs);
+        if (!empty($_GET["numAuteur"])){
+            $nationalities = Nationalite::getAllNationalite();
+            $autorNationalities = Nationalite::getNationalitesByNumAuteur($_GET["numAuteur"]);
+            $autor = Auteur::getAuteurByNum($_GET["numAuteur"]);
+
+            $nationalityList = [];
+            foreach ($nationalities as $nationality){
+                $isHisNationality = false;
+                foreach ($autorNationalities as $autorNationality){
+                    if($nationality->numNationalite == $autorNationality->numNationalite){
+                        $isHisNationality = true;
+                        break;
+                    }
+                }
+                $nationalityList[] = [
+                    "numNationalite" => $nationality->numNationalite,
+                    "pays" => $nationality->pays,
+                    "abrege" => $nationality->abrege,
+                    "isHisNationality" => $isHisNationality
+                ];
+            }
+
+            return view('auteur.definir-nationalite', [
+                "nationalityList" => $nationalityList,
+                "autor" => $autor
+            ]);
+        }else{
+            return view('return-message', [
+                'pageTitle' => "Définir les nationalités d'un auteur",
+                'returnMessage' => [
+                    "status" => "danger",
+                    "title" => "Erreur",
+                    "message" => "Il manque des paramètres dans l'url"
+                ]
+            ]);
+        }
+    }
+
+    public static function supprimerNationaliteAuteur(): string
+    {
+        if (!empty($_GET["numNationalite"]) && !empty($_GET["numAuteur"])){
+            Auteur::deleteNationaliteForAuteur($_GET["numAuteur"], $_GET["numNationalite"]);
+            return view('return-message', [
+                'pageTitle' => "Supprimer la nationalité d'un auteur",
+                'returnMessage' => [
+                    "status" => "success",
+                    "title" => "Supprimer la nationalité d'un auteur",
+                    "message" => "Suppression de la nationalité réussie."
+                ]
+            ]);
+        }
+
+        return view('return-message', [
+            'pageTitle' => "Supprimer la nationalité d'un auteur",
+            'returnMessage' => [
+                "status" => "danger",
+                "title" => "Erreur",
+                "message" => "Il manque des paramètres dans l'url"
+            ]
+        ]);
+    }
+
+    public static function ajouterNationaliteAuteur(): string
+    {
+        if (!empty($_GET["numNationalite"]) && !empty($_GET["numAuteur"])){
+            Auteur::addNationaliteForAuteur($_GET["numAuteur"], $_GET["numNationalite"]);
+            return view('return-message', [
+                'pageTitle' => "Supprimer la nationalité d'un auteur",
+                'returnMessage' => [
+                    "status" => "success",
+                    "title" => "Supprimer la nationalité d'un auteur",
+                    "message" => "Suppression de la nationalité réussie."
+                ]
+            ]);
+        }
+
+        return view('return-message', [
+            'pageTitle' => "Supprimer la nationalité d'un auteur",
+            'returnMessage' => [
+                "status" => "danger",
+                "title" => "Erreur",
+                "message" => "Il manque des paramètres dans l'url"
+            ]
+        ]);
     }
 }
diff --git a/controller/ControleurLivre.php b/controller/ControleurLivre.php
index 1cbfc5a223771af9c86c397a330f79ea465991b3..bbf8346317692a429c91bdb982469e7057718b87 100644
--- a/controller/ControleurLivre.php
+++ b/controller/ControleurLivre.php
@@ -62,8 +62,8 @@ class ControleurLivre extends ControleurObjet
             $autorsList = [];
             foreach ($autors as $auteur){
                 $isBookAutor = false;
-                foreach ($bookAutors as $livreAuteur){
-                    if($auteur->numAuteur == $livreAuteur->numAuteur){
+                foreach ($bookAutors as $bookAutor){
+                    if($auteur->numAuteur == $bookAutor->numAuteur){
                         $isBookAutor = true;
                         break;
                     }
diff --git a/index.php b/index.php
index 482514483442f6f6260c1f7624564015df14d6c7..c1e688fee86bfaeaed1514d261e8a68ca8bddc52 100644
--- a/index.php
+++ b/index.php
@@ -35,6 +35,8 @@ if (empty($_REQUEST["action"])) {
             "definirNationalites" => ControleurAuteur::definirNationalites(),
             "supprimerAuteurDuLivre" => ControleurLivre::supprimerAuteurDuLivre(),
             "ajouterAuteurDuLivre" => ControleurLivre::ajouterAuteurDuLivre(),
+            "supprimerNationaliteAuteur" => ControleurAuteur::supprimerNationaliteAuteur(),
+            "ajouterNationaliteAuteur" => ControleurAuteur::ajouterNationaliteAuteur(),
             default          => ControleurAuteur::lireAuteur(),
         };
     } catch (Exception $e) {
diff --git a/models/Auteur.php b/models/Auteur.php
index e00595053748615a712207a36bf8bcd64339a43d..5fb9abace8a9527325d3eb80df246cdc57644304 100644
--- a/models/Auteur.php
+++ b/models/Auteur.php
@@ -57,7 +57,7 @@ class Auteur extends Objet
     }
 
     /**
-     * Récupère les auteurs d'un livre.
+     * Récupère les auteurs d'un livre
      * @param int $i
      * @return array
      * @throws ErrorException
@@ -75,6 +75,48 @@ class Auteur extends Objet
         return $query->fetchAll(PDO::FETCH_CLASS, 'Auteur');
     }
 
+    /**
+     * Supprime une nationalité à un auteur
+     * @param int $numAuteur
+     * @param int $numNationalite
+     * @return void
+     */
+    public static function deleteNationaliteForAuteur(int $numAuteur, int $numNationalite): void
+    {
+        // On prépare la requête
+        $queryString = ("DELETE FROM estDeNationalite WHERE numAuteur = :numAuteur AND numNationalite = :numNationalite");
+        $query = Database::pdo()->prepare($queryString);
+        try{
+            $query->execute([
+                "numNationalite" => $numNationalite,
+                "numAuteur" => $numAuteur
+            ]);
+        } catch (PDOException $e) {
+            throw new ErrorException($e->getMessage());
+        }
+    }
+
+    /**
+     * Ajoute une nationalité à un auteur
+     * @param int $numAuteur
+     * @param int $numNationalite
+     * @return void
+     */
+    public static function addNationaliteForAuteur(int $numAuteur, int $numNationalite): void
+    {
+        // On prépare la requête
+        $queryString = ("INSERT INTO estDeNationalite (numAuteur, numNationalite) VALUES (:numAuteur, :numNationalite)");
+        $query = Database::pdo()->prepare($queryString);
+        try{
+            $query->execute([
+                "numAuteur" => $numAuteur,
+                "numNationalite" => $numNationalite
+            ]);
+        } catch (PDOException $e) {
+            throw new ErrorException($e->getMessage());
+        }
+    }
+
     // méthode static qui retourne un auteur identifié par son numAuteur
 
     public function afficher()
diff --git a/models/Nationalite.php b/models/Nationalite.php
index aee6ad6413dab3ca78624c8d508dab4189f71951..8b1eea383848dc9611462ef4e812836d055d8ac7 100644
--- a/models/Nationalite.php
+++ b/models/Nationalite.php
@@ -1,36 +1,58 @@
 <?php
+require_once "Objet.php";
 
-class Nationalite
+class Nationalite extends Objet
 {
-    private int $numNationalite;
-    private string $pays;
-    private string $abrege;
+    protected ?int $numNationalite;
+    protected ?string $pays;
+    protected ?string $abrege;
 
     /**
      * @param int $numNationalite
      * @param string $pays
      * @param string $abrege
      */
-    public function __construct(int $numNationalite, string $pays, string $abrege)
+    public function __construct(int $numNationalite=NULL, string $pays=NULL, string $abrege=NULL)
     {
-        $this->numNationalite = $numNationalite;
-        $this->pays = $pays;
-        $this->abrege = $abrege;
+        if(!is_null($numNationalite)){
+            $this->numNationalite = $numNationalite;
+            $this->pays = $pays;
+            $this->abrege = $abrege;
+        }
     }
 
     /**
-     * @return int
+     * Récupète toutes les nationalités
+     * @return array
      */
-    public function getNumNationalite(): int
+    public static function getAllNationalite(): array
     {
-        return $this->numNationalite;
+        // écriture de la requête
+        $requete = "SELECT * FROM Nationalite;";
+        // envoi de la requête et stockage de la réponse
+        $resultat = Database::pdo()->query($requete);
+        // traitement de la réponse
+        $resultat->setFetchmode(PDO::FETCH_CLASS, 'Nationalite');
+        $tableau = $resultat->fetchAll();
+        return $tableau;
     }
 
     /**
-     * @param int $numNationalite
+     * Récupère les nationalités d'un auteur
+     * @param int $i
+     * @return array
+     * @throws ErrorException
      */
-    public function setNumNationalite(int $numNationalite): void
+    public static function getNationalitesByNumAuteur(int $i): array
     {
-        $this->numNationalite = $numNationalite;
+        // On prépare la requête
+        $queryString = ("SELECT * FROM Nationalite NATURAL JOIN estDeNationalite WHERE numAuteur = ?");
+        $query = Database::pdo()->prepare($queryString);
+        try{
+            $query->execute([$i]);
+        } catch (PDOException $e) {
+            throw new ErrorException($e->getMessage());
+        }
+        return $query->fetchAll(PDO::FETCH_CLASS, 'Nationalite');
     }
 }
\ No newline at end of file
diff --git a/models/Objet.php b/models/Objet.php
index 149b8670a86ebf94bae0330f77a284977f90b3a2..b1f21ecc85beea12682d4960de331f7043900efe 100644
--- a/models/Objet.php
+++ b/models/Objet.php
@@ -1,5 +1,4 @@
 <?php
-require_once "Objet.php";
 
 /**
  * Implémente les magic methods.
diff --git a/resources/views/auteur/definir-nationalite.php b/resources/views/auteur/definir-nationalite.php
new file mode 100644
index 0000000000000000000000000000000000000000..7c5c1649fd925b972abd47a80fb818ffa5d9ed8a
--- /dev/null
+++ b/resources/views/auteur/definir-nationalite.php
@@ -0,0 +1,37 @@
+@extends('layouts.page-layout')
+
+@section('title', 'Définir les nationalités d'un auteur')
+
+@section('content')
+<div class="container mt-3">
+    <h1>Définir les nationalités d'un auteur</h1>
+    <p>Voici la liste des nationalités. Vous pouvez choisir de les associer ou de les dissocier de l'auteur.</p>
+
+    <table class="table">
+        <thead>
+        <tr class="table-dark">
+            <th scope="col">n°</th>
+            <th scope="col">Pays</th>
+            <th scope="col">Abrégé</th>
+            <th scope="col">Action</th>
+        </tr>
+        </thead>
+        <tbody>
+        @foreach($nationalityList as $nationality)
+        <tr>
+            <th scope="row">{{ $nationality['numNationalite'] }}</th>
+            <td>{{ $nationality['pays'] }}</td>
+            <td>{{ $nationality['abrege'] }}</td>
+            @if($nationality['isHisNationality'])
+            <td><a href="index.php?action=supprimerNationaliteAuteur&numNationalite={{ $nationality['numNationalite'] }}&numAuteur={{ $autor->numAuteur }}"
+                   class="btn btn-sm btn-danger">Dissocier</a> </td>
+            @else
+            <td><a href="index.php?action=ajouterNationaliteAuteur&numNationalite={{ $nationality['numNationalite'] }}&numAuteur={{ $autor->numAuteur }}"
+                   class="btn btn-sm btn-success">Associer</a> </td>
+            @endif
+        </tr>
+        @endforeach
+        </tbody>
+    </table>
+</div>
+@endsection
\ No newline at end of file
diff --git a/resources/views/livre/definir-auteur.php b/resources/views/livre/definir-auteur.php
index 91e9af5488dee1502bc37ee663f5582dd899f879..987aa0dbf51b73e65aafd06dad9608567bc57736 100644
--- a/resources/views/livre/definir-auteur.php
+++ b/resources/views/livre/definir-auteur.php
@@ -5,7 +5,7 @@
 @section('content')
 <div class="container mt-3">
     <h1>Définir les auteurs d'un livre</h1>
-    <p>Voici la liste des auteurs. Vous pouvez choisir de les associers ou de les dissociers du livre.</p>
+    <p>Voici la liste des auteurs. Vous pouvez choisir de les associer ou de les dissocier du livre.</p>
 
     <table class="table">
         <thead>