requete sur deux table affichage ?

requete sur deux table affichage ? - PHP - Programmation

Marsh Posté le 30-11-2005 à 15:19:15    

Bonjour,
voila un petite probleme simple  
je fait une requete sur deux tables :
SELECT `table_lettre`.`date` , `table_lettre`.`categorie` , `table_lettre`.`titre` , table_newsletter.nom, table_newsletter.id_newsletter
FROM table_lettre, table_newsletter
WHERE `table_lettre`.`categorie` = 'cat1'
ORDER BY `table_lettre`.`date` ASC
LIMIT 0 , 30
 
et je voudrais afficher les résultats, mais le pb c'est qu'il me retourne plusieurs fois le meme resultat alors que je voudrais qu'il ne m'affiche qu'une seul fois par id_msg!!
en fait je voudrais qu'il m'affiche qu'un seul resultat de message :
 voila les tables
 
 
 

Code :
  1. CREATE TABLE `table_lettre` (
  2.   `id_msg` int(11) NOT NULL default '0',
  3.   `id_blog` bigint(20) NOT NULL default '0',
  4.   `id_news` int(10) NOT NULL default '0',
  5.   `date` int(11) NOT NULL default '0',
  6.   `categorie` varchar(10) NOT NULL default '',
  7.   `titre` varchar(50) NOT NULL default '',
  8.   `lettre` varchar(200) NOT NULL default ''
  9. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  10. CREATE TABLE `table_newsletter` (
  11.   `id_blog` bigint(20) NOT NULL default '0',
  12.   `id_newsletter` bigint(20) NOT NULL auto_increment,
  13.   `nom` varchar(50) NOT NULL default '',
  14.   PRIMARY KEY  (`id_newsletter`)
  15. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ;


 
 
et le code de recherche et d'affichage
 

Code :
  1. mysql_select_db($base_newsletter, $db2);
  2. $req="SELECT `$t_lettre`.`$c_lettre[1]`,`$t_lettre`.`$c_lettre[2]`,`$t_lettre`.`$c_lettre[3]`, $t_nl.$c_nl[2],$t_nl.$c_nl[1]
  3. FROM $t_lettre,$t_nl
  4. WHERE $sql_add ORDER BY `$t_lettre`.`$c_lettre[1]` ASC";
  5. $res=mysql_query($req);
  6. echo mysql_error();
  7. $nb=mysql_num_rows($res);
  8. echo "le nombre de resultat est $nb<br>
  9. $req";
  10. echo "<br>Liste des dernières newsletter dans la categorie souhaitée : <br> <table width='95%' border='0' cellspacing='0' cellpadding='0'>
  11.   <tr>
  12.     <td>Titre de la news </td>
  13.     <td>date cr&eacute;ation </td>
  14.     <td>&nbsp;Cat&eacute;gorie</td>
  15.     <td>&nbsp;</td>
  16.     <td>&nbsp;</td>
  17.     <td>&nbsp;</td>
  18.   </tr>";
  19. while ($nb!=$i){
  20. $nom=mysql_result($res,$i,"nom" );
  21. $date=mysql_result($res,$i,"date" );
  22. $id_news=mysql_result($res,$i,"id_newsletter" );
  23. $titre_news=mysql_result($res,$i,"titre" );
  24. $categorie=mysql_result($res,$i,"categorie" );
  25. $date_creation=strftime("%d-%m-%Y &agrave; %H:%M",$date);
  26. echo "
  27.   <tr>
  28.     <td>&nbsp;<a href='?etape_nl=3&date=$id_news'>$titre_news</a></td>
  29.     <td>&nbsp;$date_creation</td>
  30.           <td>&nbsp;$categorie</td>
  31.             <td><a href='?id=$id_news'><img src='images/viewmag.png' width='16' height='16' border='0' alt='".$bouton[11]."'></a></td>
  32.             <td><a href='?id=$id_news'><img src='images/edit.png' width='16' height='16' border='0' alt='".$bouton[5]."'></a></td>
  33.             <td><a href='?id=$id_news'><img src='images/del.png' width='16' height='16' border='0' alt='$bouton[7]'></a></td>
  34.   </tr>";
  35.   $i++;

Reply

Marsh Posté le 30-11-2005 à 15:19:15   

Reply

Marsh Posté le 30-11-2005 à 15:30:19    

c'est normal tu fais un produit cartésien entre tes deux tables!
 
Tu dois mettre une condition qui lie tes deux tables, quelque chose dans le genre:

Code :
  1. ...
  2.   table_lettre.id_blog = table_newsletter.id_blog
  3. ...


Je suppose que c'est sur ce champs parce qu'il n'y a que lui de commun au deux tables.

Reply

Marsh Posté le 30-11-2005 à 15:58:17    

anapajari a écrit :

c'est normal tu fais un produit cartésien entre tes deux tables!
 
Tu dois mettre une condition qui lie tes deux tables, quelque chose dans le genre:

Code :
  1. ...
  2.   table_lettre.id_blog = table_newsletter.id_blog
  3. ...


Je suppose que c'est sur ce champs parce qu'il n'y a que lui de commun au deux tables.


 
 
Merci c'etait juste ca ! ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed