Mettre des commentaires à ses news, probleme de code
sebing
Messages postés144Date d'inscriptionmercredi 3 février 2010StatutMembreDernière intervention 3 novembre 2010
-
17 oct. 2010 à 00:27
ChasseurDeChimeres
Messages postés292Date d'inscriptionmercredi 7 novembre 2007StatutMembreDernière intervention15 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.
A voir également:
Mettre des commentaires à ses news, probleme de code
phpAnonyme
Messages postés392Date d'inscriptionmercredi 28 octobre 2009StatutMembreDernière intervention23 mars 201255 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 !
sebing
Messages postés144Date d'inscriptionmercredi 3 février 2010StatutMembreDerniè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.
ChasseurDeChimeres
Messages postés292Date d'inscriptionmercredi 7 novembre 2007StatutMembreDernière intervention15 janvier 20133 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)) {