[RESOLU] prendre les x plus grande valeur

newbie
Invité n'ayant pas de compte PHPfrance

24 mai 2007, 14:39

Bonjour,

Je souhaiterai savoir si il y a un moyen d'extraire avec une requete les X plus grand nombre par exemple.

Merci d'avance

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 mai 2007, 14:46

Il est possible de trier les valeur avec "ORDER BY".
Il est également possible de ne récupérer que x valeurs d'une requête, mais la syntaxe dépent du SGBD que tu utilises. Sous MySQL, il faut utiliser "LIMIT x", sous Oracle un "WHERE rownum <= x"

Il nous faudrait plus de détails sur le SGBD, sur la valeur que tu veux récupérer, pour pouvoir te donner plus de détail
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

newbie
Invité n'ayant pas de compte PHPfrance

24 mai 2007, 14:49

alors je suis sous mysql, je voudrai retirer les trois dates les plus recente

merci

Invité
Invité n'ayant pas de compte PHPfrance

24 mai 2007, 14:56

non en faite se que je veux faire, c'est afficher en gras les enregistrements ayant les trois dates les plus élever. Donc en faite il faudrai que j'extrais la 3eme date en faisant un order by desc

Mais je ne voi pas comment proceder

merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 mai 2007, 15:51

donc, si tu fait un "ORDER BY DESC tonChampDate", tu vas avoir la liste de tes enregistrements, les dates les plus récentes en 1er.

Ensuite, dans ton code PHP, tu mets un compteur qui s'incrémente à chaque ligne, et tant que ce compteur est inférieur à x, tu affiches les lignes en gras
$str_requete = "...";
$o_result = mysql_query($str_requete);

//Initialisation du compteur
$i = 1;
while ($a_result = mysql_fetch_array())
{
    $date = $a_result['tonChampDate'];
    
    //Ici, les 3 1eres lignes sont en gras
    if ($i <= 3) {
        echo "<b>" . $date . "</b><br />";
    } else {
        echo $date . "<br />";
    }

    //Incrémentation du compteur
    $i++;
}
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

newbie
Invité n'ayant pas de compte PHPfrance

24 mai 2007, 15:58

ok, je suis d'accord, mais le souci c'est que j'ai deja une requete qui fait afficher les enregistrements, et je veux pas qu'il soit afficher en fonction de la date. C'est pour cette raison que je voulai faire une requeste pour extraire la date, et ainsi j'aurai pu comparer chaque ligne et mettre en gras ceux qui etait egale ou superieur a la date.

Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

24 mai 2007, 16:31

dans ce cas là, fait une requête qui retourne les X enregistrements triés par ordre décroissant (avec ORDER BY DESC et LIMIT X)

Stockes ces valeurs dans un tableau et, lors de l'affichage de tes enregistrements, si la date de l'enregistrement est dans le tableau, affiche là en gras ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

24 mai 2007, 17:14

la je rame serieusement, jai jamais fait de tableau en php et je peine. Y aurai t il un moyen d'avoir un exemple.
merci

Mammouth du PHP | 19672 Messages

24 mai 2007, 17:45

...jai jamais fait de tableau en php et je peine...
Un tuto peut-être :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: