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
|
![]() 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. |
![]() 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> |
Groupe : Membres Messages : 13 |
Merci lb sa marche maintenant
|
Groupe : Membres Messages : 103 |
WHERE idnews=' . $_GET['idnews'] . ' OR -> http://www.php.net/manual/fr/function.mysql-real-escape-string.phpUtilise htmlspecialchars à la place de htmlentities. |
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']));
|
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. |
![]() Groupe : Membres Messages : 39 |
J'préfère
Code PHP:
Commentez la news : <q><?php echo htmlspecialchars($_GET['titrenews'],ENT_QUOTES); ?></q> |
![]() 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. |
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); ?> |
![]() 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. |
![]() Groupe : Membres Messages : 39 |
Corrigé. Quand t'affiches les variables, penses à faire stripslashes aussi. |