8797 sujets

Développement web côté serveur, CMS

Bonsoir à tous,

Je suis entrain de faire un système de commentaire sur mon site, pour le moment je test sur mes news. J'affiche les commentaires et le formulaire d'ajout sur ma page news-view, qui elle charge les différentes news de ma bdd suivant leurs id (news-view.php?id=1 etc.).

Mes commentaires s'enregistre dans une table que j'ai nommée "commentaire" et qui contient 4 champs (j'en rajouterais d'autres par la suite), voici les différents champs :
ID, PSEUDO, MESSAGE, IDNEWS

Voici le code php pour les commentaires et le formulaire :
<?php
mysql_connect("chut", "login", "mdp"); // Connexion à MySQL
mysql_select_db("maase"); // Sélection de la base

$infos = mysql_query("SELECT * FROM commentaires WHERE id='" . $_GET['idnews'] . "'")or die (mysql_error()); // Ici on liste les commentaires dans l'ordre décroissant où le champ idnews est le même que celui de la variable contenue dans l'adresse de la page

while ($donnees = mysql_fetch_array($infos)) // Une boucle pour écrire les données
{
$pseudo = stripslashes($donnees['pseudo']);
$message = stripslashes($donnees['message']);
?>

<div class="content-commentaires"><span class="auteur-commentaire">Par <strong><?php echo $pseudo; ?></strong></span>
<?php echo $message; ?>
</div>


<?php
} // On n'oublie surtout pas de fermer la boucle !
if (isset($_POST['message']) AND isset($_POST['pseudo']))
{
if($_POST['message'] != '' AND $_POST['pseudo'] != '')
{
$auteur = addslashes(htmlentities($_POST['pseudo'], ENT_QUOTES));
$message = addslashes(htmlentities($_POST['message'], ENT_QUOTES));
$idcomment = $_POST['idcomment']; // Vérification : on fait attention à ce que l'auteur ait rempli tous les champs. Quels champs ? Ceux du formulaire que l'on va créer un peu plus bas

mysql_query ("INSERT INTO commentaires VALUES('', '" . $auteur . "', '" . $message . "', '" . $idcomment . "')")or die (mysql_error()); // Là, on entre juste les données dans une nouvelle entrée de la table SQL...

echo "Votre commentaire a bien été enregistré !";
}
}
?>

<br /><br />

<!--formulaire commentaire -->
<div id="ajouter-commentaire">
<span class="titre-ajout-commentaires" id="ajoutercommentaire">Ajouter un commentaire</span>
<form method="post">
<label>Votre pseudo :<br /> <input type="text" name="pseudo" />
<br />
</label>
<label><br />
Votre message :<br />
<textarea name="message" rows="5" cols="25"></textarea></label>
<br />
<br />
<input type="hidden" name="idcomment" value="<?php echo $_GET['id']; ?>" />
<input type="submit" value="Envoyer !" />
</form>
</div>
<!--end formulaire commentaire -->

<?php mysql_close(); ?>


Enfaite, le problème c'est lors de l'affichage, les commentaires ne s'affiches pas sur ma page! Pourtant lorsque je consulte ma table "commentaire" les commentaires sont bien enregistrés.

Voilà si quelqu'un pouvait m'aider ce serait sympatique Smiley biggrin

Merci beaucoup!
Modifié par Artefact (12 Jul 2008 - 18:21)
Salut Artefact Smiley cligne ,

tu appelles bien ta page avec une URL sous la forme : mapage.php?idnews=1 ?

Si oui il faudrait vérifier ta requête en remplaçant
$infos = mysql_query("SELECT * FROM commentaires WHERE id='" . $_GET['idnews'] . "'") or die (mysql_error());
par
$sql = "SELECT * FROM commentaires WHERE id='" . $_GET['idnews'] . "'";
echo $sql.'<br />';
$infos = mysql_query($sql) or die (mysql_error());

A+
Artefact a écrit :
Alors enfaite non, j'appel mes pages comme sa : news-view.php?id=1 etc.
Alors c'est normal que l'affichage ne fonctionne pas puisque le script utilise $_GET['idnews'] Smiley murf !

Une petite révision : les variables superglobales.
Pour résumer on récupère les variables de l'url (comme dans news-view.php?id=1) grâce au tableau superglobal $_GET ce qui donnerait avec cet exemple $_GET['id']

Cela dit Alsacréations n'est pas le bon forum pour débuter en PHP. Tu pourrais regarder du côté du site du Zéro pour les tutos et de php.net pour la doc.

Bonne continuation Smiley smile !
Voilà merci j'ai réussi à les affichers !

J'ai encore deux questions :

1/ Mes accents et caractères spéciaux ne s'affichent pas, j'ai essayé de rajouter cette ligne :

mysql_query("SET NAMES UTF8");


Mais sa n'a pas fonctionné.

2/ Comment utiliser le timestamp pour affiche l'heure et la date du commentaire posté ?

Merci ^^
Artefact a écrit :
1/ Mes accents et caractères spéciaux ne s'affichent pas, j'ai essayé de rajouter cette ligne :

mysql_query("SET NAMES UTF8");


Mais sa n'a pas fonctionné.
Pour un problème d'encodage, il faut poser ta question dans le Salon qui va bien. Sans oublier de lire d'abord [Pré-requis] Notions de base sur l'encodage des caractères Smiley cligne !



Artefact a écrit :
2/ Comment utiliser le timestamp pour affiche l'heure et la date du commentaire posté ?
Heu... pas compris Smiley rolleyes !
Heyoan a écrit :
Pour un problème d'encodage, il faut poser ta question dans le Salon qui va bien. Sans oublier de lire d'abord [Pré-requis] Notions de base sur l'encodage des caractères Smiley cligne !


Ok merci je vais allez poster cette question là-bas alors Smiley cligne

Heyoan a écrit :
Heu... pas compris Smiley rolleyes !


lol alors enfaite, je voudrais rajouter la date et l'heure du commentaire posté. Pour ça j'ai rajouté un champs Timestamp dans ma table que j'ai nommé date, mais je sais pas trop comment l'utiliser ensuite Smiley ohwell
Artefact a écrit :
lol alors enfaite, je voudrais rajouter la date et l'heure du commentaire posté. Pour ça j'ai rajouté un champs Timestamp dans ma table que j'ai nommé date, mais je sais pas trop comment l'utiliser ensuite Smiley ohwell
Tu peux regarder ce sujet qui en parle.

Mais au risque de me répéter et comme indiqué dans le topic : A lire avant de poster dans ce salon ! Alsacréations n'est pas le bon forum pour débuter en PHP. Tu pourrais regarder du côté du site du Zéro pour les tutos et de php.net pour la doc. Smiley smile !