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

PHP & Base de données Discussion :

Lire résultat requête à l'envers [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 18
    Points : 16
    Points
    16
    Par défaut Lire résultat requête à l'envers
    Bonjour,

    J'ai besoin de lire et d'afficher le résultat d'une requête... mais à l'envers!

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //Requête pour extraction des vingt dernières opérations
    // Tri en DESC pour obtenir les vingt dates les plus récentes
    $sql = "SELECT * ORDER BY Date DESC LIMIT 20";
     
    //Connection à la base de données
    include 'connect.inc.php';
     
    //Affichage des enregistrements
    while ($row = mysql_fetch_assoc($result))
    {
    echo $row['Date'].'-'.$row['Type'];
    echo '<br />';
    &#125;
    Comment modifier ma boucle while pour afficher les enregistrements dans l'ordre inverse de la requête, c'est à dire en commençant par le dernier enregistrement et terminer par le premier? De cette façon j'affiche les vingt dernières dates mais dans le bonne ordre chronologique.

    Merci pour votre aide.

    A+[/quote]

  2. #2
    Membre éclairé Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Points : 846
    Points
    846
    Par défaut
    Il y a une erreur dans ton code sql, essaie ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM tatable ORDER BY Date DESC LIMIT 20";
    où tatable représente la table sur laquelle s'applique la requete
    Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 110
    Points
    110
    Par défaut
    je vois pas ou est le probleme , tu mets bien desc LIMIT 0,20 , ensuite tu appele ainsi : ".$row[date]."

  4. #4
    Membre actif
    Avatar de mathk
    Inscrit en
    Décembre 2003
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 211
    Points : 233
    Points
    233
    Par défaut
    SELECT * FROM [JE SAIS PAS] WHERE Date IN( SELECT *[T a du oublier un from] ORDER BY Date DESC LIMIT 20) ORDER BY Date ASC;

    Enfin j pas trouver mieu mais il doit y avoir surtout si tu utilise MsSQL
    Si grande est la faiblesse d'une âme, dont la raison est partie!
    Ne jamais embrouiller ni abasourdir par une foule d'images le génie intérieur qui réside au fonde de sa poitrine,...
    L'ambition est le rfuge de l'échec. "Oscar Wild"

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Non, il n'y a pas d'erreur dans ma requête, j'ai copié le code un peu vite pour l'exemple et j'ai oublié le FROM matable.

    Mon code marche très bien sur le serveur en production. Seulement, pas moyen de lister le résultat dans l'autre sens...

    Une idée?

  6. #6
    Membre actif
    Avatar de mathk
    Inscrit en
    Décembre 2003
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 211
    Points : 233
    Points
    233
    Par défaut
    Oui cf avant
    Si grande est la faiblesse d'une âme, dont la raison est partie!
    Ne jamais embrouiller ni abasourdir par une foule d'images le génie intérieur qui réside au fonde de sa poitrine,...
    L'ambition est le rfuge de l'échec. "Oscar Wild"

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 110
    Points
    110
    Par défaut
    enleve le desc peut etre?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Si j'enlève le DESC, je n'obtiens plus les vingts derniers enregistrements... mais les vingts premiers!

    Je veux obtenir les vingts derniers enregistrements et les afficher dans l'ordre chronologique.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 188
    Points : 110
    Points
    110
    Par défaut
    Citation Envoyé par mathk
    SELECT * FROM [JE SAIS PAS] WHERE Date IN( SELECT *[T a du oublier un from] ORDER BY Date DESC LIMIT 20) ORDER BY Date ASC;
    je crois que tu as la reponse

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Aïe!

    J'essai d'adapter ton exemple à mes besoins mais c'est pas évident.

    A tout hasard, voici ma requête d'origine...

    SELECT t_activite.NumClient, t_activite.NumOperation, DATE_FORMAT(t_activite.HeureDebut, '%d/%m/%Y') AS Date, t_operation.Type, TIME_FORMAT(t_activite.HeureDebut, '%H:%i') AS 'Heure de début', TIME_FORMAT(t_activite.HeureFin, '%H:%i') AS 'Heure de fin', TIME_FORMAT(TIMEDIFF(t_activite.HeureFin, t_activite.HeureDebut), '%H:%i') AS Durée, t_activite.Description, t_operation.Valeur
    FROM t_operation
    INNER JOIN t_activite ON t_operation.NumOperation = t_activite.NumOperation
    WHERE t_activite.NumClient = 2
    ORDER BY t_activite.HeureDebut DESC
    LIMIT 20

    Je tente d'imbriquer les requêtes pour inverser le tri à la fin mais c'est galère!

    A+

  11. #11
    Membre actif
    Avatar de mathk
    Inscrit en
    Décembre 2003
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 211
    Points : 233
    Points
    233
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT t_activite.NumClient, t_activite.NumOperation, DATE_FORMAT&#40;t_activite.HeureDebut, '%d/%m/%Y'&#41; AS Date, t_operation.Type, TIME_FORMAT&#40;t_activite.HeureDebut, '%H&#58;%i'&#41; AS 'Heure de début', TIME_FORMAT&#40;t_activite.HeureFin, '%H&#58;%i'&#41; AS 'Heure de fin', TIME_FORMAT&#40;TIMEDIFF&#40;t_activite.HeureFin, t_activite.HeureDebut&#41;, '%H&#58;%i'&#41; AS Durée, t_activite.Description, t_operation.Valeur
    FROM t_operation
    INNER JOIN t_activite ON t_operation.NumOperation = t_activite.NumOperation 
    WHERE t_activite.HeureDebut  IN
    &#40;SELECT t_activite.HeureDebut
    FROM t_operation
    INNER JOIN t_activite ON t_operation.NumOperation = t_activite.NumOperation
    WHERE t_activite.NumClient = 2
    ORDER BY t_activite.HeureDebut DESC
    LIMIT 20&#41; ORDER BY t_activite.HeureDebut ASC;
    EDIT :le mieu ce serait su r le numero du client si c'est une cle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT t_activite.NumClient, t_activite.NumOperation, DATE_FORMAT&#40;t_activite.HeureDebut, '%d/%m/%Y'&#41; AS Date, t_operation.Type, TIME_FORMAT&#40;t_activite.HeureDebut, '%H&#58;%i'&#41; AS 'Heure de début', TIME_FORMAT&#40;t_activite.HeureFin, '%H&#58;%i'&#41; AS 'Heure de fin', TIME_FORMAT&#40;TIMEDIFF&#40;t_activite.HeureFin, t_activite.HeureDebut&#41;, '%H&#58;%i'&#41; AS Durée, t_activite.Description, t_operation.Valeur
    FROM t_operation
    INNER JOIN t_activite ON t_operation.NumOperation = t_activite.NumOperation 
    WHERE t_activite.NumClient  IN
    &#40;SELECT t_activite.NumClient
    FROM t_operation
    INNER JOIN t_activite ON t_operation.NumOperation = t_activite.NumOperation
    WHERE t_activite.NumClient = 2
    ORDER BY t_activite.HeureDebut DESC
    LIMIT 20&#41; ORDER BY t_activite.HeureDebut ASC;
    Si grande est la faiblesse d'une âme, dont la raison est partie!
    Ne jamais embrouiller ni abasourdir par une foule d'images le génie intérieur qui réside au fonde de sa poitrine,...
    L'ambition est le rfuge de l'échec. "Oscar Wild"

  12. #12
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839

  13. #13
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    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
    $sql = "SELECT * ORDER BY Date DESC LIMIT 20";
     
    $req = mysql_query&#40;$sql&#41;;
     
    for&#40;$i = mysql_num_rows&#40;$req&#41; - 1 ; $i >= 0 ; --$i&#41; &#123; 
       if &#40;!mysql_data_seek&#40;$result, $i&#41;&#41; &#123;
           echo "Cannot seek to row $i&#58; " . mysql_error&#40;&#41; . "\n";
           continue;
       &#125;
     
       if &#40;!&#40;$row = mysql_fetch_assoc&#40;$result&#41;&#41;&#41; &#123;
           continue;
       &#125;
     
       echo $row&#91;'last_name'&#93; . ' ' . $row&#91;'first_name'&#93; . "<br />\n";
     
    &#125;
    (c) doc officielle

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Merci pour le coup de main.

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

Discussions similaires

  1. [MySQL] Affichage résultat requête SQL dans page HTML comme un tableau
    Par joxbl dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 14/03/2011, 15h26
  2. Formatage résultat requête
    Par Original Prankster dans le forum Langage SQL
    Réponses: 19
    Dernier message: 06/09/2005, 20h02
  3. Résultat requête
    Par mr.t dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/02/2005, 19h58
  4. [IB6] Stocker résultat requête ds fichier txt réseau
    Par Cerberes dans le forum Débuter
    Réponses: 6
    Dernier message: 04/10/2004, 16h13
  5. Table temporaire et résultat requête
    Par Royd938 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/07/2004, 15h24

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