Bonjour à tous.

En ce moment j'utilise 3 tables dans ma BD ("auteur","livre","auteur_livre");

Dans une page qui permet de mettre à jour un auteur, je dois afficher tous les livres qui existent dans ma BD (j'en ai 460). Sur cette page je dois afficher un flag ou un message qui informe l'utilisateur des livres déjà associés à l'auteur. Je procède donc comme suit:

code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/* charger seulement les id des livres associés à l'auteur qu'on veux mettre à jour*/  
 
$auteurs_livres=loadTable("auteur_livres")->auteur;
 
$stockage_id=array();
 
 
// parourir la table;
foreach($auteurs_livres as $auteur_livre)
{
  //stoker les livres_id qui se trouvent dans "auteur_livres" et qui sont associès à l'auteur;
  $stockage_id[]=$auteur_livre["livre_id"];
}
 
// charger la table "livre"
 
$livres=loadTable("livre");
 
// verifier si les livres de l'auteur existent dans la table livre_auteur
 
foreach ($livres as $key=>$livre)
    {
        if(in_array($livre["id"],$stockage_id))
       {
          echo "le livre ".$livre["id"] est déjà associé
       }
 
       else {
          echo "le livre ".$livre["id"] n'est pas encore associé
 
      }
 
   }
Mais ce code prends beaucoup de temps pour être traité (entre 5 à 7 sec), donc je veux savoir si il y a un moyen pour mieux optimiser mon code. Si je n'avais pas de message à afficher, il suffit simplement de faire un INNER JOIN et le temps de réponse est plus rapide (moins de 1 sec), mais c'est lors de la vérification que ca prends beaucoup de temps car à chaque ligne trouvé dans le table livre je dois vérfier si elle se trouve dans la table "livre_auteur" et afficher le message adéquat

Merci