GROUP BY / AFFICHER LES PLUS RECENTES
Hors ligneCouligno Le 19/02/2014 à 15:55 Profil de Couligno Configuration de Couligno

Bonsoir à tous

je voudrais afficher les plus récents données groupées car les données affichées sont les plus anciens . voila mon code

$req = $bdd->prepare('

SELECT m.pseudonyme AS pseudonyme,m.nom_de_famille AS nom ,m.prenom AS prenom, m.avatar_membre AS avatar_membre, msg.id_message AS id_message,msg.id_envoyeur AS id_envoyeur,msg.id_recepteur AS id_recepteur, msg.message AS message,msg.lu_ou_pas AS lu_ou_pas, DATE_FORMAT(MAX(msg.date_message) , \'%d/%m/%Y à %H:%i:%ss\') AS date_message_fr

FROM membres m

RIGHT JOIN message msg

ON m.id_membre = msg.id_envoyeur

WHERE msg.id_recepteur = :recept

GROUP BY msg.id_envoyeur

ORDER BY date_message_fr DESC

LIMIT 0, 100

') or die(print_r($bdd->errorInfo()));

$req->execute(array( 'recept' => $_SESSION['id_membre']));

J'obtiens la date attendu mais j'ai pas le contenu de la table.

Hors ligneAnthony Le 19/02/2014 à 16:06 Profil de Anthony Configuration de Anthony

Admin

Salut

Pourrais-tu poster les structures de tes deux tables stp ?

--

Hors ligneCouligno Le 19/02/2014 à 16:13 Profil de Couligno Configuration de Couligno

Merci pour votre réponse voila la structure du message 

--

-- Structure de la table `message`

--

CREATE TABLE IF NOT EXISTS `message` (

`id_message` int(11) NOT NULL AUTO_INCREMENT,

`id_envoyeur` int(11) NOT NULL,

`id_recepteur` int(11) NOT NULL,

`message` text NOT NULL,

`lu_ou_pas` varchar(255) NOT NULL,

`date_message` datetime NOT NULL,

PRIMARY KEY (`id_message`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ;


/// structure des membres


--

-- Structure de la table `membres`

--

CREATE TABLE IF NOT EXISTS `membres` (

`id_membre` int(11) NOT NULL AUTO_INCREMENT,

`nom_de_famille` varchar(255) NOT NULL,

`prenom` varchar(255) NOT NULL,

`pseudonyme` varchar(255) NOT NULL,

`email` varchar(255) NOT NULL,

`mot_de_passe` varchar(255) NOT NULL,

`pays` varchar(255) NOT NULL,

`ville` varchar(255) NOT NULL,

`jour` varchar(11) NOT NULL,

`mois` varchar(11) NOT NULL,

`annee` varchar(11) NOT NULL,

`sexe` varchar(11) NOT NULL,

`avatar_membre` varchar(255) NOT NULL,

`avis_pour_show2babi` text NOT NULL,

`date_inscription` datetime NOT NULL,

PRIMARY KEY (`id_membre`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

Hors ligneAnthony Le 19/02/2014 à 16:23 Profil de Anthony Configuration de Anthony

Admin

Dans le ORDER BY, tu dois non pas ordonner par la date formatée, mais par le champ date : ORDER BY date_message DESC ;)

--

Hors ligneCouligno Le 19/02/2014 à 16:32 Profil de Couligno Configuration de Couligno

Merci pour votre 

réponse j'ai apporté cette modification mais je n'ai toujours pas les récentes données groupées .

Hors ligneAnthony Le 19/02/2014 à 17:07 Profil de Anthony Configuration de Anthony

Admin

  Remplace ceci :

ON m.id_membre = msg.id_envoyeur

  

Par cela :

 
ON m.id_membre = msg.id_envoyeur
AND msg.id=(SELECT MAX(id) FROM messages WHERE id_envoyeur=m.id_membre)
 

--

Hors ligneCouligno Le 19/02/2014 à 17:11 Profil de Couligno Configuration de Couligno

Merci pour votre réponse.

J'ai ce message d'erreur 

 Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'msg.id' in 'on clause'' in C:\wamp\www\show2babi-24-10-2013\file-php\les_includes\includes.interne\messages.interne.includes.php on line 20

Hors ligneAnthony Le 19/02/2014 à 19:18 Profil de Anthony Configuration de Anthony

Admin

Autant pour moi : ON m.id_membre = msg.id_envoyeur AND msg.id_message=(SELECT MAX(id_message) FROM messages WHERE id_envoyeur=m.id_membre)

--

Hors ligneCouligno Le 19/02/2014 à 20:23 Profil de Couligno Configuration de Couligno

Merci

Mais ça ne fonctionne toujours pas et l'auteur du message n'est plus associé au message .C'est a dire  que la jointure ne fonvtionne plus .

Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels