Accueil
Forums
Turoriaux
Inscription
Connexion
Fil RSS
Bienvenue invité !
Jeudi 08 Janvier 2009
Vous êtes ici: Crea-paradise.com > Forums > Entraide > PHP > problème commentaire > Lecture du sujet

problème commentaire



1
Auteur Message
> Posté le : 10/09/2007 21h04
Aucun avatar


Groupe : Membres
Messages : 13

Salut tout le monde ! Alors mon problème (encore) dans mon script de commentaires de news j'aimerais qu'une fois le commentaires envoyer la page s'actualise toute seul avec le commentaires inscrit. Voila la page

code:
Code PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
Commentez la news : <q><?php echo $_GET['titrenews']; ?></q>
<?php
mysql_connect("", "", "");
mysql_select_db("commentaires");
  
$infos = mysql_query('SELECT * FROM commentaires WHERE idnews=' . $_GET['idnews'] . ' ORDER BY id DESC')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']);
?>
<p><strong><?php echo $pseudo; ?></strong> a commenté :
<?php echo $message; ?></p>
<?php
} /*On 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']; /* Tout ce charabia est une petite 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 "Merci d'avoir commenté !";
}
}
?>

<form method="post" >
<p>
<label>Votre pseudo : <input type="text" name="pseudo" /><br/></label>
<label>Laissez votre message ! <br/>
<textarea name="message" rows="5" cols="25"></textarea><br/></label>
<br/><br/>
<input type="hidden" name="idcomment" value="<?php echo $_GET['
idnews']; ?>" />
<input type="submit" value="Envoyer !" />
</p>
</form>
<?php mysql_close(); ?>
<body>
</body>
</html>


merci de bien vouloir m'aider 
> Posté le : 10/09/2007 23h54
Avatar de Nephthys


Groupe : Membres
Messages : 129

Tu fais une redirection vers la page des commentaires ? Tu peux utiliser la fonction header() pour ça.

Newser sur le Site du Zéro.
> Posté le : 11/09/2007 07h02
Avatar de lbeetls01


Groupe : Admins
Messages : 2097

Il suffit de mettre le code qui enregistre dans la base de donnée avant celui qui les récupère .
Code PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
Commentez la news : <q><?php echo $_GET['titrenews']; ?></q>
<?php
mysql_connect("", "", "");
mysql_select_db("commentaires");

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']; /* Tout ce charabia est une petite 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 "Merci d'avoir commenté !";
}
}
  
$infos = mysql_query('
SELECT * FROM commentaires WHERE idnews=' . $_GET['idnews'] . ' ORDER BY id DESC')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']);
?>
<p><strong><?php echo $pseudo; ?></strong> a commenté :
<?php echo $message; ?></p>
<?php
} /*On oublie surtout pas de fermer la boucle ! */
?>

<form method="post" >
<p>
<label>Votre pseudo : <input type="text" name="pseudo" /><br/></label>
<label>Laissez votre message ! <br/>
<textarea name="message" rows="5" cols="25"></textarea><br/></label>
<br/><br/>
<input type="hidden" name="idcomment" value="<?php echo $_GET['
idnews']; ?>" />
<input type="submit" value="Envoyer !" />
</p>
</form>
<?php mysql_close(); ?>
<body>
</body>
</html>


> Posté le : 11/09/2007 16h27
Aucun avatar


Groupe : Membres
Messages : 13

Merci lb sa marche maintenant 
> Posté le : 11/09/2007 19h10
Avatar de Vegeta47


Groupe : Membres
Messages : 103

WHERE idnews=' . $_GET['idnews'] . ' OR  -> http://www.php.net/manual/fr/function.mysql-real-escape-string.php
Utilise htmlspecialchars à la place de htmlentities.
> Posté le : 06/10/2007 20h03
Aucun avatar


Groupe : Membres
Messages : 53

Et si tu souhaite avoir des sauts à la ligne pour chaque ENTER tu n'a qu'à remplacer ceci :

Code PHP:
$message = stripslashes($donnees['message']);


par ceci :

Code PHP:
$message = nl2br(stripslashes($donnees['message']));


> Posté le : 05/11/2007 15h20
Aucun avatar


Groupe : Membres
Messages : 8

Il y a deux grosses failles dans ton code :
-
Code PHP:
$infos = mysql_query('SELECT * FROM commentaires WHERE idnews=' . $_GET['idnews'] . ' ORDER BY id DESC')or die (mysql_error());


Rajoute intval(); pour que ça soit bien un chiffre :
Code PHP:
$infos = mysql_query('SELECT * FROM commentaires WHERE idnews='.intval($_GET['idnews']).' ORDER BY id DESC')or die (mysql_error());



-
Code PHP:
Commentez la news : <q><?php echo $_GET['titrenews']; ?></q>

Ça c'est pas très beau d'afficher une variable GET sans la passer dans une fonction pour la proteger.
Code PHP:
Commentez la news : <q><?php echo htmlentities($_GET['titrenews']); ?></q>

Enfin un conseil, plutôt que de passer le titre de la news pas une variable GET, prend la directement avec une requête, puis si tu trouve que la requête sera inutile juste pour un titre, ben tu peux toujours re-afficher la news, elle sera moins inutile.
> Posté le : 06/11/2007 15h34
Avatar de Xireus


Groupe : Membres
Messages : 39

J'préfère
Code PHP:
Commentez la news : <q><?php echo htmlspecialchars($_GET['titrenews'],ENT_QUOTES); ?></q>




Projet : PHP-Algérie avec lalim92.
> Posté le : 06/11/2007 16h38
Avatar de tazee


Groupe : Membres
Messages : 627

Xireus, il me semble qu'il y a une petite erreur dans ton code

Chuck Norris ne porte pas de montre. Il décide de l'heure qu'il est.
Quand Google ne trouve pas quelque chose, il demande à Chuck Norris.
> Posté le : 06/11/2007 22h25
Aucun avatar


Groupe : Membres
Messages : 53

Citation: tazee
Xireus, il me semble qu'il y a une petite erreur dans ton code


Et comme ceci ?

Code PHP:
<?php echo htmlspecialchars($_GET['titrenews'], ENT_QUOTES); ?>
> Posté le : 06/11/2007 23h29
Avatar de tazee


Groupe : Membres
Messages : 627

Je pense que c'est bon

Chuck Norris ne porte pas de montre. Il décide de l'heure qu'il est.
Quand Google ne trouve pas quelque chose, il demande à Chuck Norris.
> Posté le : 07/11/2007 15h02
Avatar de Xireus


Groupe : Membres
Messages : 39

Corrigé. Quand t'affiches les variables, penses à faire stripslashes aussi.


Projet : PHP-Algérie avec lalim92.
1