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

Requêtes MySQL Discussion :

Afficher différement certains résultats ?


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 12
    Par défaut Afficher différement certains résultats ?
    Bonjour,
    J'ai un problème que je n'arrive malheureusement pas a résoudre tout seul, ca serait vraiment sympa de m'aider.

    je m'explique, j'ai un agenda sur mon site avec bcp d'entrées, il faudrait que mes visiteurs puissent voir en survolant la page quelles ont été les dernières dates ajoutées. Par exemples en les mettant en gras ou en leur attribuant une couleur différente...

    J’aimerais dire à MYSQL de différencier les 5 dernières entrées en se basant sur l'id, en fait pour faire simple je recherche le code capable de dire :
    Sélectionner les 5 plus grandes valeurs dans le champ ID, mettre en gras ou mettre une couleur et ceci seulement pendant une durée de 3 jours...

    j'espère que j'ai bien réussi à me faire comprendre et que quelqu'un pourra m'aider, je ne sais pas si c'est possible de faire ça mais d'avance un grand merci !!!

    voici le code qui marche très bien et que j'utilise pour afficher mes résultats :

    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
    <?
    $now = date('Y-m-d');
    $result = mysql_query("SELECT * FROM agenda WHERE ag_date>='$now' AND status='1' ORDER BY ag_date");
     
    function dateConv($date) {
    list($y,$m,$d) = explode('-', $date);
    return "$d.$m.$y"; }
     
    echo "<table class='agenda'>";
    echo "<tr>";
    echo "<th>Date</th>";
    echo "<th>Groupe</th>";
    echo "<th>Salle</th>";
    echo "<th>Lieu</th>";
    echo "</tr>";
    while($rec = mysql_fetch_assoc($result)) {
    echo "<tr>";
    echo "<td>".dateConv($rec['ag_date'])."</td>";
    echo "<td>".$rec['ag_groupe']."</td>";
    echo "<td>".$rec['ag_salle']."</td>";
    echo "<td>".$rec['ag_ville']."</td>";
    echo "</tr>";
    }
    echo "</table>"; ?>

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    C'est possible, mais relativement compliqué, en raison des restrictions sur l'utilisation de LIMIT dans les sous-requêtes. S'il ne s'agit que de 5 lignes, je te suggères de passer une seconde requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ID
    FROM agenda 
    -- pas compris ton histoire de 3 jours
    ORDER BY ID DESC
    LIMIT 5
    Ensuite, à chaque RV, tu testes si son ID est dans la liste ramenée par cette seconde requête. Si c'est le cas, tu donnes ta présentation spéciale au RV.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 12
    Par défaut
    merci pour ta réponse, je ne suis cependant pas sur que tu as bien compris ce que je recherche...

    Le code que j'ai posté dans le premier message me trie un ensemble de dates qui sont insérée dans ma base de donnée, le classement s’effectue de la date la plus proche à la plus éloignée... je ne veux en aucun cas changer cet ordre d’affichage.
    Je dois très souvent ajouter de nouvelles dates dans cette base et il faut juste que les 3 dernières dates qui ont été ajoutées (pour savoir lesquelles ont été ajoutées en dernier on se rapporte sur le champ ID voir exemple : ID6,ID5,ID4) soit différenciées des autres (ça peut être une date ajoutée et qui a pour valeur l’année 2009 ou 2010 qui sera classée tout en bas ou au milieu de ma liste)

    Voici donc un exemple de la liste qu’affiche mon code, classée de la date la plus récente a la plus éloignée :

    16.01.2008 ag_groupe ag_salle ag_ville Id->2
    17.06.2008 ag_groupe ag_salle ag_ville Id->1
    19.08.2009 ag_groupe ag_salle ag_ville Id->6 *afficher en gras ou en couleur
    21.01.2009 ag_groupe ag_salle ag_ville Id->3
    13.05.2009 ag_groupe ag_salle ag_ville Id->5 *afficher en gras ou en couleur
    15.03.2010 ag_groupe ag_salle ag_ville Id->4 *afficher en gras ou en couleur

    ID-> 1 est la date que j’ai ajouté dans ma base de donnée en premier
    ID-> 6 est la date que j’ai ajouté dans ma base de donnée en dernier

    Il faudrait donc le code pour demander de sélectionner les 3 dernières dates ajoutées (ça sera automatiquement les plus grandes valeurs du champ ID… selon l’exemple dans ce cas ID 6,5 et4) et on demande de les afficher en gras ou d’une autre couleur pendant une durée de 3 jours et qu'après ce délai les dates s’affichent de la même manière que les autres...

    Comme expliqué plus haut, je cherche à faire cela car la liste est super longue, il y a beaucoup d’entrées et je dois rajouter souvent de nouvelles entrées, c’est tout simplement pour permettre a mes visiteurs lors d’un rapide survol de la page de voir quelles sont les nouvelles dates qui ont été insérée …

    j'espère avoir été assez clair, c'est vraiment pas facile de s’expliquer par écrit sur un forum, et j'imagine que ça doit être encore plus difficile de comprendre...
    bref un grand merci d'avance pour votre aide !

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Citation Envoyé par lulu122312
    J’aimerais dire à MYSQL de différencier les 5 dernières entrées en se basant sur l'id, en fait pour faire simple je recherche le code capable de dire :
    Sélectionner les 5 plus grandes valeurs dans le champ ID, mettre en gras ou mettre une couleur et ceci seulement pendant une durée de 3 jours...
    Je crois que le gros de l'incompréhension vient de ce que tu parles d'abord de 5 entrées et ensuite de 3 jours, puis de 3 dates...
    Citation Envoyé par lulu122312
    Le code que j'ai posté dans le premier message me trie un ensemble de dates qui sont insérée dans ma base de donnée, le classement s’effectue de la date la plus proche à la plus éloignée... je ne veux en aucun cas changer cet ordre d’affichage.
    C'est pour cela que je ne voulais même pas modifier ta requête d'origine, mais que je te suggérais d'en fairer une autre... En gros l'utilisation serait la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $tabdatesspeciales = array() ;
    $reqdatesspeciales = mysql_query(mon SQL) ;
    while ($tablo = mysql_fetch_array($reqdatesspeciales)) {
      $tabdatesspeciales[] = $tablo[0] ;
    }
     
    $result = mysql_query(ton SQL);
    ...
    while($rec = mysql_fetch_assoc($result)) {
      ... 
      if (in_array($rec['ID'], $tabdatesspeciales)) ...
    }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 12
    Par défaut
    Ok, excuse moi je me suis effectivement un peu mélangé, peux-tu donc m'aider à afficher les 5 dernières entrées par exemple en rouge pendant 3 jours ?

    J’ai essayé avec le code que tu m'as donné, je ne le comprends pas bien et malheureusement ça ne marche pas, je suis assez novice encore ça serait vraiment sympa de me le rendre opérationnel
    Merci d'avance


    (le champ ID s'appelle ag_id dans ma base....)


    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
    <?
    	$now = date('Y-m-d');
     
    	$tabdatesspeciales = array() ;
    	$reqdatesspeciales = mysql_query("SELECT ag_id FROM agenda WHERE status='1' LIMIT 3") ;
    	while ($tablo = mysql_fetch_array($reqdatesspeciales)) {
      	$tabdatesspeciales[] = $tablo[0] ;
    	}
     
     
    	$result = mysql_query("SELECT * FROM agenda WHERE ag_date>='$now' AND status='1' ORDER BY ag_date");
     
    	function dateConv($date) {
    		list($y,$m,$d) = explode('-', $date);
    		return "$d.$m.$y"; }
     
    	echo "<table class='agenda'>";
    	echo "<tr>";
    	echo "<th class='blue'>Date</th>";
    	echo "<th class='blue'>Groupe</th>";
    	echo "<th class='blue'>Salle</th>";
    	echo "<th class='blue'>Lieu</th>";
    	echo "</tr>";
    	while($rec = mysql_fetch_assoc($result)) {
    	if (in_array($rec['ag_id'], $tabdatesspeciales))
    		echo "<tr>";
    		echo "<td class='datebold'>".dateConv($rec['ag_date'])."</td>";
    		echo "<td class='topalign'>".$rec['ag_groupe']."</td>";
    		echo "<td class='cen'>".$rec['ag_salle']."</td>";
    		echo "<td class='cen'>".$rec['ag_ville']."</td>";
    		echo "</tr>";
     
    	} 
    	echo "</table>"; ?>

  6. #6
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Code lulu122312 : Sélectionner tout - Visualiser dans une fenêtre à part
    peux-tu donc m'aider à afficher les 5 dernières entrées par exemple en rouge pendant 3 jours ?

    Je ne comprends pas ce que veut dire ton "pendant trois jours". Les cinq dernières entrée, mais seulement si elles ne sont pas plus vieilles que trois jours ?

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

Discussions similaires

  1. Pseudo frames : n'affiche pas certaines pages
    Par mxsmaximus dans le forum Langage
    Réponses: 4
    Dernier message: 01/08/2007, 21h48
  2. [AJAX] IE n'affiche pas certains caractères
    Par BoZ-FlYos dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 16/05/2007, 08h52
  3. l'état ignore certains résultats de la requête
    Par larpe dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 17/01/2007, 09h51
  4. Réponses: 1
    Dernier message: 01/05/2006, 11h17
  5. N'afficher que certains fichiers
    Par azorol dans le forum Langage
    Réponses: 5
    Dernier message: 03/04/2006, 15h22

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