Probleme d'affichage de commentaire
Posté : 05 mars 2012, 12:16
Bonjour !
J'ai commencé le php il y a 1 mois et je m'entraine pour m'améliorer mais depuis 4 jour (oui 4 jours
) je suis bloqué.
Mon but est de faire un forum mais j'ai un problème niveau commentaire, tout marche : la liste des topics, création d'un topic sauf l'affichage des commentaires en effet quand on clique sur un topic on doit avoir la possibilité de voir le topic et en dessous les commentaires, et un bouton pour faire un commentaire, le formulaire marche il n’y a pas de problème mais comme je l'ai dis, on ne voit pas les commentaires par la suite
Ils sont pourtant présent dans ma table commentaires !
Un ami a essayé de m'aider mais il n'a pas réussis donc j'en appel à vous
Bref voici mes codes concernant les commentaires :
Liste des topics : listetopic.php
topic.php
fairecommentaire.php
fairecommentairepost.php

Merci de votre aide !
J'ai commencé le php il y a 1 mois et je m'entraine pour m'améliorer mais depuis 4 jour (oui 4 jours
Mon but est de faire un forum mais j'ai un problème niveau commentaire, tout marche : la liste des topics, création d'un topic sauf l'affichage des commentaires en effet quand on clique sur un topic on doit avoir la possibilité de voir le topic et en dessous les commentaires, et un bouton pour faire un commentaire, le formulaire marche il n’y a pas de problème mais comme je l'ai dis, on ne voit pas les commentaires par la suite
Ils sont pourtant présent dans ma table commentaires !
Un ami a essayé de m'aider mais il n'a pas réussis donc j'en appel à vous
Bref voici mes codes concernant les commentaires :
Liste des topics : listetopic.php
<?php
// Connexion à la base de données
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
// Récupération des 10 derniers messages
$reponse = $bdd->query('SELECT * FROM topic ORDER BY id DESC');
// Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
while ($donnees = $reponse->fetch())
{
echo '<h3><center><font face="arial"><strong><a href="topic.php?id='.$donnees['id'].'">' . htmlspecialchars($donnees['titre']) . '</a></strong></font><br>Par : ' . htmlspecialchars($donnees['pseudo']) . '<br></h3></centre><br>';
echo '<p><FONT COLOR="blue" >' . htmlspecialchars($donnees['message']) . '</font></p><br />';
}
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
Quand on clique sur un topic on va dans la page où il y a une icone pour faire un commentaire, la liste des commentaires et le topic sélectionnertopic.php
<a href="fairecommentaire.php"><img src="répondre.gif" /></a>
<?php
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
// Récupération des commentaires
$reponse = $bdd->prepare('SELECT * FROM commentaires ORDER BY id LIMIT 0, 10 WHERE id_topic=\''.mysql_real_escape_string($_GET['id']));
while ($donnees = $reponse->fetch())
{
?>
<?php echo '<h4>' . htmlspecialchars($donnees['pseudo']) . '</h4>'; ?>
<?php echo '<p><FONT COLOR="red" >' . htmlspecialchars($donnees['commentaire']) . '</font></p>'; ?>
<?php
} // Fin de la boucle des commentaires
$reponse->closeCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
Donc quand on clique sur l'icone on va au formulaire :fairecommentaire.php
<form action="fairecommentairepost.php" method="post">
<h3>Pseudo:
<input type="text" name="pseudo" maxlength="13" id="pseudo"/></h3>
<h3>Contenu:
<textarea name="commentaire" rows="8" cols="53" id="commentaire"></textarea></h3>
<center><input type="submit" value="Valider" /></center>
<input type="hidden" name="id_topic" value="'.mysql_real_escape_string($_GET['id']).'" />
</form>
L'enregistrement des commentaires :fairecommentairepost.php
<?php
// Connexion à la base de données
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
// Insertion du message à l'aide d'une requête préparée
$req = $bdd->prepare('INSERT INTO commentaires (id_topic, pseudo, commentaire) VALUES(?, ?, ?)');
$req->execute(array(mysql_real_escape_string($_POST['id_topic']), $_POST['pseudo'], $_POST['commentaire']));
// Redirection du visiteur vers la page du minichat, vers le topic ou le message a ete poster, donc redirection sur topic id=$_POST['id_topic']
header('Location: topic.php?id='.$_POST['id_topic'].'');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
Et pour finir mes tables :TABLE topic :
id - int Auto Increment - PRIMARY
titre - varchar (255)
pseudo - varchar (255)
message - text
TABLE commentaires :
id - int Auto Increment - PRIMARY
id_topic - int
pseudo - varchar (255)
commentaire - text
Voila voila, et aussi je n'arrive pas à afficher le topic sélectionné dans topic.php Merci de votre aide !