Bonjour,

Par le biais d'une requête SQL, j'affiche une liste de livres comportant pour chaque livre son ou ses auteurs et, le cas échéant, son ou ses traducteurs (un livre peut avoir été écrit et/ou traduit par plusieurs "contributeurs").
Pour gérer cette éventuelle multiplicité de contributeurs, j'utilise le code suivant (fourni par Sabotage) :
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
<?php
 
$ID_CONTRIBUTEUR= (iSset($_GET['id_contributeur']) ? $_GET['id_contributeur'] : null);
 
 
$selectcontrib = "SELECT L.ID_LIVRE,CB.NOM_CONTRIBUTEUR, CB.PRENOM_CONTRIBUTEUR, F.NOM_FONCTION, CB.ID_CONTRIBUTEUR, F.ID_FONCTION
 
FROM LIVRE L
 
INNER JOIN PARTICIPE P ON P.ID_LIVRE = L.ID_LIVRE
INNER JOIN CONTRIBUTEURS CB ON CB.ID_CONTRIBUTEUR = P.ID_CONTRIBUTEUR      
INNER JOIN FONCTION F ON F.ID_FONCTION = P.ID_FONCTION
ORDER BY NOM_FONCTION,NOM_CONTRIBUTEUR ASC
";
$resultat_contrib = mysql_query($selectcontrib);
 
$livre_contributeurs= array();
 
while ($data = mysql_fetch_assoc($resultat_contrib)){ 
 
    $livre_contributeurs[$data['ID_LIVRE']][$data['ID_FONCTION']][$data['ID_CONTRIBUTEUR']] = $data ['PRENOM_CONTRIBUTEUR'] . " " . $data ['NOM_CONTRIBUTEUR'];
 
if (!isset($tblFonctions[$data['ID_FONCTION']])) {
    $tblFonctions[$data['ID_FONCTION']] = $data['NOM_FONCTION'];
}
 
}
 
foreach ($livre_contributeurs[$data['id_livre']] as $fonction_id => $contributeurs) 
 
	{ 
 
 
  $echo_contrib = "";
 
   foreach($contributeurs as $contributeur_id => $contributeur_nom) {
 
  $echo_contrib .= '<p class="p_inline"><a href="filtre_phase5.php?id_contributeur='.$contributeur_id.'&tri=date_achat">'.$contributeur_nom.'</a>; </p>';
 
 
		  }//fin du 1er foreach
 
	   // on retire le dernier point-virgule
	   echo substr($echo_contrib, 0 , -6);
 
	}//fin du 2eme foreach
?>
Le code est pleinement fonctionnel. Parallèlement, j'ai mis en place une système de filtre qui permet de filtrer la liste de livres par contributeur (via la méthode get en passant par l'url l'ID du contributeur)
Lors du filtre, je souhaiterais surligner le contributeur objet du filtre. J'ai modifié la fin du code précédent :
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
 
<?php
foreach ($livre_contributeurs[$data['id_livre']] as $fonction_id => $contributeurs) 
 
	{ 
 
 
  $echo_contrib = "";
 
   foreach($contributeurs as $contributeur_id => $contributeur_nom) {
 
	if ($ID_CONTRIBUTEUR != null ) {// pour gérer surlignage : <span class="surlign">
 
	 $echo_contrib .= '<p class="p_inline"><a href="filtre_phase5.php?id_contributeur='.$contributeur_id.'&tri=date_achat"><span class="surlign">'.$contributeur_nom.'</span></a>; </p>';
					}
	else {
 
	$echo_contrib .= '<p class="p_inline"><a href="filtre_phase5.php?id_contributeur='.$contributeur_id.'&tri=date_achat">'.$contributeur_nom.'</a>; </p>';
 
	     }
 
 
		  }//fin du 1er foreach
 
	   // on retire le dernier point-virgule
	   echo substr($echo_contrib, 0 , -6);
 
	}//fin du 2eme foreach
?>
Mais le problème est que ce code me surligne tous les contributeurs du livre affiché et pas seulement celui dont l'ID est passé dans l'url. Exemple pour un livre A qui a 2 auteurs : auteur1 et auteur2, et un traducteur1.
Si je filtre sur l'auteur1, tous les contributeurs seront surlignés (auteur1, auteur2 et traducteur1) et pas seulement l'auteur1. Est-il possible de gérer ce surlignage partiel ? Merci.