Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/06/2011, 22h25   #1
Membre du Club
 
Inscription : janvier 2010
Messages : 210
Détails du profil
Informations personnelles :
Âge : 37

Informations forums :
Inscription : janvier 2010
Messages : 210
Points : 53
Points : 53
Par défaut Surlignage d'une variable suite à un filtre

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 :
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 :
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.
almoha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2011, 22h45   #2
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 587
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 587
Points : 861
Points : 861
je sais pas si j'ai bien saisi ton code mais ici ca devrait le faire :
Code :
1
2
3
4
5
6
7
8
9
	if ($ID_CONTRIBUTEUR != null && $ID_CONTRIBUTEUR == $_GET[id_contributeur']) {// 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>';
	
	     }
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/06/2011, 23h04   #3
Membre du Club
 
Inscription : janvier 2010
Messages : 210
Détails du profil
Informations personnelles :
Âge : 37

Informations forums :
Inscription : janvier 2010
Messages : 210
Points : 53
Points : 53
Merci beaucoup car tu m'a mis sur la voie. Le code suivant remplit l'objectif :
Code :
1
2
3
4
5
6
7
8
9
10
 
if ($ID_CONTRIBUTEUR != null && $ID_CONTRIBUTEUR == $contributeur_id ) {
 
	   $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>';
 
				 }
almoha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h48.


 
 
 
 
Partenaires

Hébergement Web