Page 1 sur 1

Récupération du nom du dernier post

Posté : 28 sept. 2014, 11:06
par cris84
Bonjour à tous,
j'essaie de récupérer le nom de l'auteur du dernier message sur un forum ("auteur" dans la table forum_reponse).
Il y a 4 tables pour se faire. Mais je n'y arrive pas.
Voici ma requête (mais qui ne marche pas bien sûr) :
<?php

$sql_r = ('SELECT fr.auteur, fs.id, m.pseudo,  fr.correspondance_sujet, forum_cat.id, fs.id_cat, fs.id FROM membres as m, forum_sujets as fs, forum_cat, forum_reponses as fr WHERE fr.auteur=m.id and fs.id=fr.correspondance_sujet and fs.id_cat=forum_cat.id ');

?>
Si quelqu'un pourrait m'aider.
Je vous laisse les 4 tables

Merci de vos réponses
CREATE TABLE IF NOT EXISTS `forum_reponses` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `auteur` int(11) NOT NULL,
  `message` text COLLATE latin1_general_ci NOT NULL,
  `date_reponse` bigint(25) NOT NULL,
  `correspondance_sujet` int(6) NOT NULL,
  `cat` int(6) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=347 ;
CREATE TABLE IF NOT EXISTS `forum_cat` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `nom_cat` varchar(30) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=33 ;
CREATE TABLE IF NOT EXISTS `forum_sujets` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `id_cat` int(6) NOT NULL,
  `auteur` varchar(30) COLLATE latin1_general_ci NOT NULL,
  `titre` text COLLATE latin1_general_ci NOT NULL,
  `date_derniere_reponse` bigint(25) NOT NULL,
  `date_creation` bigint(25) NOT NULL,
  `compteur` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=30 ;
et la dernière
CREATE TABLE IF NOT EXISTS `membres` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pseudo` varchar(40) NOT NULL,
  `mot_passe` varchar(255) NOT NULL,
  `acces` tinyint(1) NOT NULL DEFAULT '0',
  `date_inscription` int(11) NOT NULL,
  `email` varchar(255) NOT NULL,
  `avatar` varchar(255) NOT NULL,
  `avatar_actif` smallint(1) NOT NULL,
  `admin` tinyint(1) NOT NULL,
  `email_visible` smallint(1) NOT NULL,
  `design` varchar(255) NOT NULL,
  `langue` varchar(255) NOT NULL DEFAULT 'francais',
  `sexe` smallint(1) NOT NULL,
  `date_naissance` date NOT NULL,
  `mail_forum` int(1) NOT NULL DEFAULT '1',
  `message_prive` smallint(1) NOT NULL,
  `valide` int(1) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=106 ;

Re: Récupération du nom du dernier post

Posté : 29 sept. 2014, 12:44
par yann18
bonjour,

je suppose que la dernière réponse est représentée par la colonne date_reponse de la table forum_reponses.La ladite colonne stocke-t-elle une date de type timestamp unix?si c'est pas le cas autant changer le type date_reponse en datetime.
dans tous les cas t'auras une requête qui ressemble à:
$sql_r = "SELECT membres.pseudo FROM membres
    JOIN  forum_reponses ON membres.id = forum_reponses.auteur
   WHERE forum_reponses.date_reponse = (SELECT MAX(date_reponse) FROM forum_reponses)
";

Re: Récupération du nom du dernier post

Posté : 03 oct. 2014, 09:59
par cris84
Bonjour et merci de cette réponse.
La requête est bonne mais elle m'affiche 1 seul résultat alors que j'utilise une boucle pour afficher chaque nom dans un tableau
Merci
 <?php
  while ($data = mysql_fetch_array($req)) { 
  $data_cat = mysql_fetch_array($req_cat)
 
  ?>
<tr class="tr1">
	  <td colspan="2" align="center" valign="top"><div align="left">
	    <?php
	 $nb = mysql_fetch_array($nb_message);   	
	
	echo'<img src="include/forum_read.gif" title="Sujet : '.$data['titre'].'"  alt="Forum de bricolage" align="absmiddle" />&nbsp;
	<a href="forum-sujet-'.$data['id'].'.html">'.$data['titre'].'</a>&nbsp; (Catégorie : <a href="forum-categorie-'.$data_cat['id_cat'].'.html">'.$data_cat['nom_cat'].'</a>)<br />
';?>
	&nbsp;Par : <a href="profil-<?php echo $data['auteur']; ?>.html"><?php echo htmlentities(trim($data['pseudo'])); ?></a> : le <?php echo date('d/m/Y à H:i:s', $data['date_creation']); ?> </div>
	  <br /></td>
	  <td><div align="center"><?php echo $data['compteur']; ?></div></td>
	  <td><div align="center"><?php echo ($nb['nb_message']-1); 
if ($_SESSION['admin'] == 1)
			{
				echo ' | <a href="forum.php?action=supprimer&id='.$data['id'].'">Supprimer</a>';

			} 
			
			 $data_r = mysql_fetch_assoc($req_r);
			 echo'<br />';
			echo $data_r['pseudo'];
			 	?>