Mettre des commentaires à ses news, probleme de code

Signaler
Messages postés
144
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
3 novembre 2010
-
Messages postés
292
Date d'inscription
mercredi 7 novembre 2007
Statut
Membre
Dernière intervention
15 janvier 2013
-
Bonsoir,

J'essaye d'afficher les commentaires de mes news.
J'ai deux tables: news et commentaires_news.
Elle peuvent etre relié par id(news) et id_news(commentaires_news)
.
Mon code ne marche pas,[b]il renvoie qu'une news et qu'un seul commentaire.
Alors que dans ma table il existe 2 news comportant 1 commentaire par news./b, j'ai du mal a faire la jointure, voila mon code:
Code :
<?php
//VARIABLES GENERALES
include("espace_membres/data.php");
global $dbserver;
global $dbdb;
global $dbuser;
global $dbpass;
//CONNEXION A LA BASE DE DONNEES
$base =  @MYSQL_CONNECT ("$dbserver","$dbuser","$dbpass") or die ("Erreur: impossible de communiquer avec la base de données.
Vérifiez les donnés du fichier  data.php .

");
mysql_select_db("dbdb",$base);
 
// lancement de la requête. on sélectionne les news que l'on va ordonner suivant l'ordre "inverse" des dates (de la plus récente à la plus vieille : DESC) tout en ne sélectionnant que le nombre voulu de news à afficher (LIMIT)  
$sql  'SELECT * FROM commentaires_news, news where commentaires_news.id_news news.id ;';  
 
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)  
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());  
 
 // on compte le nombre de news stockées dans la base de données  
$nb_news = mysql_num_rows($req);  
  
if ($nb_news == 0) { 
    echo 'Aucune news enregistrée.';  
 }  
 else { 
    // si on a au moins une news, on l'affiche 
    while ($data = mysql_fetch_array($req)) { 
  
       // on décompose la date 
       sscanf($data['date'], "%4s-%2s-%2s %2s:%2s:%2s", $an, $mois, $jour, $heure, $min, $sec); 
   
 // on compte le nombre de news stockées dans la base de données  
$nb_commentaires_news = mysql_num_rows($req);  
  
if ($nb_commentaires_news == 0) { 
    echo 'Aucun commentaire enregistré.';  
 }  
 else { 
    // si on a au moins un commentaire, on l'affiche 
    while ($data = mysql_fetch_array($req)) { 

       // on affiche les résultats 
       echo''.htmlentities(trim($data['titre'])).':'.'
'.'';
    echo''.htmlentities(trim($data['contenu'])).'
'.''; 
?>Commentaires
<?php
echo''.htmlentities(trim($data['auteur'])).'
'.''; 
echo''.htmlentities(trim($data['date_commentaire'])).'
'.''; 
echo''.htmlentities(trim($data['commentaire'])).'
'.''; 
         }  
 }  
  }  
 }  
 ?>

Merci

Bonne soirée

Seb
Ps: soyez indulgent je suis tres novice, et je sais que mon code est bourré de fautes.

3 réponses

Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
43
Bjr,

[quote=Tu]Mon code ne marche pas,il renvoie qu'une news et qu'un seul commentaire.
Alors que dans ma table il existe 2 news comportant 1 commentaire par news./quote

Ben, ton code marche alors !

Tu demande de lier le commentaire à la news, donc si il y a un commentaire pour chaque news cela te renvoie un commentaire pour la news sélectionner.
Ajoute un deuxième commentaire pour une de tes news et tu aura les deux commentaires pour cette news !
Si tu n'a pas les deux commentaires lier à cette news alors oui sûrement qu'il y a erreur !

______________________________________________________________________
Messages postés
144
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
3 novembre 2010

Bonjour,

Non mon code ne fonctionne pas, car il me renvoie qu'une news sur les deux existantes.
Il devrait me renvoyer 2 news avec un commentaires pour chaque news.
Et j'ai qu'une news et un commentaire.
Je cherche et je vous tiens au courant.

Seb
Messages postés
292
Date d'inscription
mercredi 7 novembre 2007
Statut
Membre
Dernière intervention
15 janvier 2013
2
Salut;
Comme ça à vue de nez, j'ai l'impression que tu boucle sur un array ($data) à l'intérieur d'une boucle sur un array s'appellant également "$data", il te faudrait modifier le nom du deuxième tableau :
// si on a au moins un commentaire, on l'affiche 
    while ($data2 = mysql_fetch_array($req)) { 

en espérant que ce soit ça, bon dev.