Mettre des commentaires à ses news, probleme de code

sebing Messages postés 144 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 3 novembre 2010 - 17 oct. 2010 à 00:27
ChasseurDeChimeres Messages postés 292 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 15 janvier 2013 - 17 oct. 2010 à 21:38
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

phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
17 oct. 2010 à 04:17
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 !

______________________________________________________________________
0
sebing Messages postés 144 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 3 novembre 2010
17 oct. 2010 à 07:22
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
0
ChasseurDeChimeres Messages postés 292 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 15 janvier 2013 3
17 oct. 2010 à 21:38
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.
0
Rejoignez-nous