Blog avec commentaires
Fermé
Nike7414
Messages postés
23
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
19 avril 2012
-
16 nov. 2010 à 12:51
Nike7414 Messages postés 23 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 19 avril 2012 - 17 nov. 2010 à 22:21
Nike7414 Messages postés 23 Date d'inscription vendredi 14 novembre 2008 Statut Membre Dernière intervention 19 avril 2012 - 17 nov. 2010 à 22:21
A voir également:
- Blog avec commentaires
- Clément a partagé le fichier mme bovary. il a écrit des commentaires dans le document. quel est le 2e commentaire ? - Guide
- Blog - Guide
- Anonymiser commentaires word - Forum Word
- Problème de commentaire - Forum Facebook
- Comment voir les commentaires sur twitter - Forum Twitter
19 réponses
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
16 nov. 2010 à 17:06
16 nov. 2010 à 17:06
Salut.
Dans ton formulaire, ajoute un champ caché (type="hidden"), avec par exemple "id_billet" comme name, et qui aura pour valeur (value) l'id de l'article.
Ainsi, dans commentaires_post.php, tu pourras utiliser $_POST['id_billet'].
Dans ton formulaire, ajoute un champ caché (type="hidden"), avec par exemple "id_billet" comme name, et qui aura pour valeur (value) l'id de l'article.
Ainsi, dans commentaires_post.php, tu pourras utiliser $_POST['id_billet'].
Nike7414
Messages postés
23
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
19 avril 2012
16 nov. 2010 à 17:12
16 nov. 2010 à 17:12
Oui, mais l'id de l'article je ne le connais pas, donc je met "id_billet=?" ?
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
16 nov. 2010 à 17:28
16 nov. 2010 à 17:28
Où que tu ne le connais pas ?
- Sur la page d'ajout de commentaire : $_GET['billet']
Donc tu ajoutes ce champs de le formulaire d'ajout :
- Sur la page de traitement (commentaires_post.php), tu pourras utiliser $_POST['id_billet']
- Sur la page d'ajout de commentaire : $_GET['billet']
Donc tu ajoutes ce champs de le formulaire d'ajout :
<input type="hidden" name="id_billet" value="<?php echo $_GET['billet']; ?>" />
- Sur la page de traitement (commentaires_post.php), tu pourras utiliser $_POST['id_billet']
Nike7414
Messages postés
23
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
19 avril 2012
Modifié par Nike7414 le 16/11/2010 à 17:42
Modifié par Nike7414 le 16/11/2010 à 17:42
ah oki merci! mais ca ne marche toujours pas... peut etre parce que ca cherche une date de création et que ca ne trouve pas de date et heure de création... Comment je rajoute une date de création?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
16 nov. 2010 à 18:08
16 nov. 2010 à 18:08
Tu peux utiliser la fonction SQL NOW() pour la date.
INSERT INTO commentaires (auteur, commentaire, date) VALUES(?, ?, NOW())
Nike7414
Messages postés
23
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
19 avril 2012
16 nov. 2010 à 18:33
16 nov. 2010 à 18:33
Ca ne marche toujours pas... J'ai fais quelque chose de faux la dedant?
commentaires.php:
commentaires_post.php:
commentaires.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Mon blog</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <body> <h1>Mon super blog !</h1> <p><a href="index.php">Retour à la liste des billets</a></p> <?php // Connexion à la base de données try { $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', ''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } // Récupération du billet $req = $bdd->prepare('SELECT id, titre, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM billets WHERE id = ?'); $req->execute(array($_GET['billet'])); $donnees = $req->fetch(); ?> <div class="news"> <h3> <?php echo htmlspecialchars($donnees['titre']); ?> <em>le <?php echo $donnees['date_creation_fr']; ?></em> </h3> <p> <?php echo nl2br(htmlspecialchars($donnees['contenu'])); ?> </p> </div> <h2>Commentaires</h2> <?php $req->closeCursor(); // Important : on libère le curseur pour la prochaine requête // Récupération des commentaires $req = $bdd->prepare('SELECT auteur, commentaire, DATE_FORMAT(date_commentaire, \'%d/%m/%Y à %Hh%imin%ss\') AS date_commentaire_fr FROM commentaires WHERE id_billet = ? ORDER BY date_commentaire'); $req->execute(array($_GET['billet'])); while ($donnees = $req->fetch()) { ?> <p><strong><?php echo htmlspecialchars($donnees['auteur']); ?></strong> le <?php echo $donnees['date_commentaire_fr']; ?></p> <p><?php echo nl2br(htmlspecialchars($donnees['commentaire'])); ?></p> <?php } // Fin de la boucle des commentaires $req->closeCursor(); ?> <!-- Ajouter un commentaire --> <form action="commentaires_post.php" method="post"> <p> <label for="auteur">Auteur</label> : <input type="text" name="auteur" id="auteur" /><br /> <label for="commentaire">Commentaire</label> : <input type="text" name="commentaire" id="commentaire" /><br /> <input type="hidden" name="id_billet" value="<?php echo $_GET['billet']; ?>" /> <input type="submit" value="Envoyer" /> </p> </form> </body> </html>
commentaires_post.php:
<?php // Connexion à la base de données try { $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', ''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } // Insertion du commentaire à l'aide d'une requête préparée $req = $bdd->prepare('INSERT INTO commentaires (auteur, commentaire, date) VALUES(?, ?, NOW())'); $req->execute(array($_POST['auteur'], $_POST['commentaire'], $_POST['id_billet'], )); // Redirection du visiteur vers la page de commentaires.php header('Location: commentaires.php'); ?>
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
16 nov. 2010 à 18:38
16 nov. 2010 à 18:38
Dans le commentaires_post.php, il faut indiquer l'id de l'article auquel le commentaire est attaché (grâce à la variable provenant du formulaire).
Nike7414
Messages postés
23
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
19 avril 2012
16 nov. 2010 à 18:45
16 nov. 2010 à 18:45
Je suis vraiment désolé, mais je m'y connais pas du tout en PHP, les scripts là c'est des scripts que j'ai pris d'internet de deux TP sur le siteduzero que j'essai de mixer pour créer un blog avec commentaire, mais à part ca je n'ai rien appris en PHP... Je rajoute quoi exactement? :(
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
16 nov. 2010 à 20:18
16 nov. 2010 à 20:18
Au lieu de copier bêtement les scripts, pourquoi ne pas tout simplement apprendre le PHP ?
Tu as déjà le site ...
Tu as déjà le site ...
Nike7414
Messages postés
23
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
19 avril 2012
16 nov. 2010 à 20:21
16 nov. 2010 à 20:21
Car je dois faire ce blog pour lundi (pour quelqu'un) et je n'ai pas le temps d'apprendre le PHP juste pour faire ce blog pour lundi, donc es ce que tu pourrais m'aider stp? (Comme tu es le seul qui à répondu et je n'aimerais pas abandonner ici :( )
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
16 nov. 2010 à 20:35
16 nov. 2010 à 20:35
Tu peux utiliser un CMS comme Wordpress ou Dotclear.
Dans la requête d'insertion, dans la première parenthèse, ajoute le nom de la colonne contenant l'id de l'article, et dans la seconde, ajoute cette valeur ($_POST['id_billet']).
Dans la requête d'insertion, dans la première parenthèse, ajoute le nom de la colonne contenant l'id de l'article, et dans la seconde, ajoute cette valeur ($_POST['id_billet']).
Nike7414
Messages postés
23
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
19 avril 2012
16 nov. 2010 à 21:00
16 nov. 2010 à 21:00
Ca ne marche toujours pas...
J'ai ca dans mon tableau "commentaires" de phpmyadmin
Field:
id
id_billet
auteur
commentaire
date_commentaire
J'ai rajouté dans ma requête d'insertion de commentaires_post.php, dans la premiere parenthèse la colonne contenant l'id de l'article, donc "id_billet" et dans la seconde j'avais déjà ($_POST['id_billet']).
Et ca me donne:
"Notice: Undefined index: billet in C:\wamp\www\tests\commentaires.php on line 26
le
Commentaires
Notice: Undefined index: billet in C:\wamp\www\tests\commentaires.php on line 50"
Merci pour ton conseil pour un CMS, j'essairai ca.
J'ai ca dans mon tableau "commentaires" de phpmyadmin
Field:
id
id_billet
auteur
commentaire
date_commentaire
J'ai rajouté dans ma requête d'insertion de commentaires_post.php, dans la premiere parenthèse la colonne contenant l'id de l'article, donc "id_billet" et dans la seconde j'avais déjà ($_POST['id_billet']).
$req = $bdd->prepare('INSERT INTO commentaires (auteur, commentaire, date_commentaire, id_billet) VALUES(?, ?, NOW())'); $req->execute(array($_POST['auteur'], $_POST['commentaire'], $_POST['id_billet'] ));
Et ca me donne:
"Notice: Undefined index: billet in C:\wamp\www\tests\commentaires.php on line 26
le
Commentaires
Notice: Undefined index: billet in C:\wamp\www\tests\commentaires.php on line 50"
Merci pour ton conseil pour un CMS, j'essairai ca.
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
16 nov. 2010 à 21:36
16 nov. 2010 à 21:36
$req = $bdd->prepare('INSERT INTO commentaires (auteur, commentaire, date_commentaire, id_billet) VALUES(?, ?, NOW(), ?)'); $req->execute(array($_POST['auteur'], $_POST['commentaire'], $_POST['id_billet'] ));Il ne faut pas oublier de donner une valeur dans la seconde parenthèse de la requête SQL (je l'ai ajouté, c'est le "?" après NOW())
Nike7414
Messages postés
23
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
19 avril 2012
17 nov. 2010 à 10:34
17 nov. 2010 à 10:34
J'ai essayé ca aussi mais ca ne marchais pas. Il n'y a vraiment rien à ajouter dans commentaires.php? dans les input?
Mahaxs
Messages postés
40
Date d'inscription
mercredi 30 juin 2010
Statut
Membre
Dernière intervention
10 novembre 2011
18
17 nov. 2010 à 11:02
17 nov. 2010 à 11:02
Tu peux utiliser le timestamp aussi :
<input type="hidden" name="date" value="<?php echo '' . time();?>" />
pour enregistrer l'heure au moment du commentaire.
Puis pour l'afficher :
<?php $timestamp =($donnees['date']); ?>
Commentaire posté le <?php echo date('d/m/Y', $timestamp); ?> à <?php echo date('H\:i', $timestamp); ?>
Voila qui devrait regler ton problème d'affichage de l'heure..
Le time() affiche l'heure de ton serveur, il se peux que tu ai un décalage par rapport à notre fuseau horaire.
Si c'est le cas, tu compense de décalage à la récupération du timestamp en ajoutant + et le nombre de secondes par exemple pour un décalage d'une heure :
<input type="hidden" name="date" value="<?php echo '' . time()+60*60;?>" />
J'espère t'avoir aidé..
<input type="hidden" name="date" value="<?php echo '' . time();?>" />
pour enregistrer l'heure au moment du commentaire.
Puis pour l'afficher :
<?php $timestamp =($donnees['date']); ?>
Commentaire posté le <?php echo date('d/m/Y', $timestamp); ?> à <?php echo date('H\:i', $timestamp); ?>
Voila qui devrait regler ton problème d'affichage de l'heure..
Le time() affiche l'heure de ton serveur, il se peux que tu ai un décalage par rapport à notre fuseau horaire.
Si c'est le cas, tu compense de décalage à la récupération du timestamp en ajoutant + et le nombre de secondes par exemple pour un décalage d'une heure :
<input type="hidden" name="date" value="<?php echo '' . time()+60*60;?>" />
J'espère t'avoir aidé..
Nike7414
Messages postés
23
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
19 avril 2012
17 nov. 2010 à 12:23
17 nov. 2010 à 12:23
Enfaite le problème ce n'est pas la date, mais l'id_billet. Quand je rajoute un commentaire dans le 2eme billet ca me met "1" au lieu de "2" en id_billet. dans mon tableau "commentaires" dans phpmyadmin ca me met bien la bonne date...
Nike7414
Messages postés
23
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
19 avril 2012
Modifié par Nike7414 le 17/11/2010 à 15:11
Modifié par Nike7414 le 17/11/2010 à 15:11
ca c'est mon index.php. On voit les 5 derniers billets. Quand on clique sur "Commentaires" ca affiche le billet avec ses commentaires.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Mon blog</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <body> <h1>Mon super blog !</h1> <p>Derniers billets du blog :</p> <?php // Connexion à la base de données try { $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', ''); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } // On récupère les 5 derniers billets $req = $bdd->query('SELECT id, titre, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr FROM billets ORDER BY date_creation DESC LIMIT 0, 5'); while ($donnees = $req->fetch()) { ?> <div class="news"> <h3> <?php echo htmlspecialchars($donnees['titre']); ?> <em>le <?php echo $donnees['date_creation_fr']; ?></em> </h3> <p> <?php // On affiche le contenu du billet echo nl2br(htmlspecialchars($donnees['contenu'])); ?> <br /> <em><a href="commentaires.php?billet=<?php echo $donnees['id']; ?>">Commentaires</a></em> </p> </div> <?php } // Fin de la boucle des billets $req->closeCursor(); ?> </body> </html>
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 505
17 nov. 2010 à 17:30
17 nov. 2010 à 17:30
@Mahaxs: il peut récupérer le timestamp directement sur le fichier de traitement, inutile de le placer dans un champ caché. Pour les problèmes de fuseaux, la solution la plus propre est d'indiquer le timezone :
https://www.php.net/manual/fr/timezones.php
En regardant le code source, est-ce que tu vois le bon ID dans le champ caché ? (celui indiqué dans l'URL).
https://www.php.net/manual/fr/timezones.php
En regardant le code source, est-ce que tu vois le bon ID dans le champ caché ? (celui indiqué dans l'URL).
Nike7414
Messages postés
23
Date d'inscription
vendredi 14 novembre 2008
Statut
Membre
Dernière intervention
19 avril 2012
17 nov. 2010 à 22:21
17 nov. 2010 à 22:21
Non, il n'y a pas de ID dans le champs caché:
Plus haut j'ai posté les 3 pages de mon code source.
Vous avez pas msn par hazard? ca serai plus facile pour régler le problème.
<input type="hidden" name="id_billet" value="<?php echo $_GET['billet']; ?>" />
Plus haut j'ai posté les 3 pages de mon code source.
Vous avez pas msn par hazard? ca serai plus facile pour régler le problème.