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 :

Tri après passage en php 5.4 [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Par défaut Tri après passage en php 5.4
    Bonjour,
    Je viens de migrer mon serveur et je suis donc passé en PHP 5.4 et 5.5.41 pour le serveur Mysql
    j'avais une requête imbriqué qui marchait très bien au niveau d'une messagerie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select3 = "SELECT id_message,sid_group,date_lu,heure_lu,expediteur,texte_message FROM (SELECT * FROM messagerie WHERE destinataire= '".$_SESSION['refID']."' AND status NOT LIKE '2' ORDER BY date_envoi DESC, heure_envoi DESC) AS messagerie GROUP BY messagerie.expediteur ORDER BY messagerie.date_envoi DESC";
    cela me permettais d'avoir une liste de messages avec les plus récent en haut de liste, suivant la date et l'heure, je ne m'explique pas pourquoi cela ne marche plus au niveau de l'ordre.

    Quelqu'un a t'il une explication, est ce a cause de la migration?

    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pourquoi pas simplement comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select3 = "SELECT id_message,sid_group,date_lu,heure_lu,expediteur,texte_message FROM messagerie WHERE destinataire= '".$_SESSION['refID']."' AND status <> 2 ORDER BY date_envoi DESC, heure_envoi DESC";
    Au passage il n'y a pas d'interet a séparer la date et l'heure.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Par défaut Tri après passage en php 5.4
    Bonjour sabotage,

    Simplement parce la constitution de la base ne le permet pas, voila je m'explique...
    C'est une messagerie, les messages sont enregistrés de ma manière suivante dans la base.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Pour exemple:
    ID, id_expediteur, id_destinataire, date_expedition, heure_expedition, texte, message_lu
    c'est la page liste des messages par nom d’expéditeur, après on clique sur le nom et une autre page fait apparaître les messages.

    Donc je suis obligé d'utiliser un GROUP BY pour n'afficher qu'une fois l’expéditeur. ensuite je voudrais que suivant le dernier message reçu, l'affichage de l'expediteur soit en haut c'est pour cela que j'ai besoin de la date et l'heure.

    Ce qui est curieux c'est que cela marchait très bien avant ma migration serveur.

    Merci Sabotage,

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu veux dire que tu veux le dernier message de chaque expéditeur ?

    Ta requête fait un groupement par expediteur mais quelle ligne doit-elle retourner ? Ce n'est pas indiqué dans la requête donc mysql te fournit un résultat comme ça lui chante.
    GROUP BY s'utilise avec des fonctions d'aggrégation (SUM, COUNT, MAX etc.).
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Par défaut
    Oui tout a fait c'est ce que je désire, je veux qu'il m'affiche le dernier message de l'expediteur qui correspond a un ID "id_message" qui est trier par date et heure.
    Si le GROUP BY n'est pas adapté, je dois utiliser quoi SELECT DISTINCT?

    Nom : Sans-titre-1.jpg
Affichages : 144
Taille : 38,3 Ko

    c'est en gros la configuration de ma base... pour être plus explicite...

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Encore une fois, regroupe la date et l'heure, c'est beaucoup plus simple pour faire le tri.
    Ici je fais comme si c'était le cas :
    La technique consiste à récupérer la date MAX pour chaque expediteur dans une sous-requête et joindre pour avoir les autres colonnes :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id_message,sid_group,date_lu,heure_lu,expediteur,texte_message
    FROM messagerie t1 
    JOIN (SELECT MAX(date_expedition) as date_expedition, id_expediteur FROM messagerie GROUP BY id_expediteur) t2
    ON t1.date_expedition = t2.date_expedition AND t1.id_expediteur = t2.id_expediteur
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 19/03/2015, 18h14
  2. Problème après "passage" en xhtml1.0
    Par Becafuel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 16/12/2005, 14h19
  3. Réponses: 19
    Dernier message: 14/11/2005, 08h53
  4. Réponses: 1
    Dernier message: 28/10/2005, 09h37

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