IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Surlignage d'une variable suite à un filtre


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 402
    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 : 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.

  2. #2
    Membre émérite Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    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 : 573
    Par défaut
    je sais pas si j'ai bien saisi ton code mais ici ca devrait le faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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>';
    	
    	     }

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 402
    Par défaut
    Merci beaucoup car tu m'a mis sur la voie. Le code suivant remplit l'objectif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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>';
     
    				 }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PPT-2007] Incrémenter la valeur d'une variable suite au clic sur une forme.
    Par BrItneY dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 07/09/2010, 14h48
  2. Actualisation d'une variable suite à son changement?
    Par Dev@lone dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/05/2008, 09h56
  3. Réponses: 4
    Dernier message: 26/02/2008, 09h55
  4. Supprimer une ligne suite à un filtre
    Par andreditdd dans le forum Bases de données
    Réponses: 5
    Dernier message: 24/05/2007, 18h01
  5. Réponses: 1
    Dernier message: 06/04/2007, 19h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo