Système de commentaires

Résolu/Fermé
John4834 Messages postés 94 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 22 juin 2011 - 29 déc. 2009 à 18:48
John4834 Messages postés 94 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 22 juin 2011 - 30 déc. 2009 à 20:32
Bonjour,
voila je voudrais insérer une zone dans laquelle les visiteurs de mon site pourraient laisser leurs commentaires.
je vous explique un peu: sur mon site on peut retrouver les valeurs de 265 actions!

Il s'agit d'un bête système en php:

pour la page de l'action AXA par exemple, l'adresse est la suivante: ?page=action&action=AXA (CS)
pour la page FORTIS: ?page=action&action=FORTIS (FORB)
...

J'aimerais faire en sorte que chaque utilisateur puisse laisser son commentaire et que ceux-ci soient stockés dans une base de donnée, donc l'id du com sera, je pense, lié avec l'id de l'action!

Avez-vous une idée de comment je pourrais faire cela?

Merci,

John

28 réponses

avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
29 déc. 2009 à 19:11
Ajoute un champ TINYTEXT "action" dans la table, et stockes le nom de l'action dans ce champ.
Ensuite, lorsque tu listes les commentaires, il faut ajouter la clause "WHERE" :
mysql_query('SELECT * FROM table WHERE action="'.$_GET['action'].'"');
0
John4834 Messages postés 94 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 22 juin 2011 4
30 déc. 2009 à 13:32
Désolé, mais je ne comprends pas! Il faut que je fasse quoi comme système?
0
Utilisateur anonyme
30 déc. 2009 à 13:35
Tu voudrais afficher les commentaire sur chaque page ou des commentaire preci pour AXA, d'autre pour FORTIS ...
0
John4834 Messages postés 94 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 22 juin 2011 4
30 déc. 2009 à 13:41
Oui exactement!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
30 déc. 2009 à 14:07
Tu sais ce qu'est un champ dans une table ?
Ajoute un champ nommé "action" avec comme type "TINYTEXT" (pour un texte assez court).
Quand tu auras fais ça, il suffit de lui mettre $_GET['action'] comme valeur lorsque tu insères le commentaires dans la table (INSERT INTO).
Lorsque tu veux afficher les commentaires de l'action "FORTIS" (par exemple), il faut ajouter WHERE action = "FORTIS" dans ta requête SQL qui récupères les commentaires. Donc remplaces "FORTIS" par $_GET['action'].
0
Utilisateur anonyme
30 déc. 2009 à 14:07
Il te faudrait selon moi, une table 'Commentaire' à 5 champs:

id: INDEX=PRIMARY et A.I
identite: TYPE=TEXT
commentaire: TYPE=TEXT
emplacement; TYPE=TEXT
date: TYPE=TEXT

FORMULAIRE A CRÉER:

Id: va permettre d'afficher les messages dans l'ordre d'écriture et se remplira tout seul.
identité: si on est visiteur, la valeur est visiteur sinon le pseudo de la personne.
commentaire: on sauvegarde le commentaire, mais attention a transformer les entrer en code et supprimer tout le code.
emplacement: prend general si c'est pour toute les pages, ou le nom de la page (AXA, FORTIS...)
date: prend la date d'écriture pour l'afficher

POUR AFFICHER LES COMMENTAIRES:

$Commentaire = mysql_query('SELECT * FROM Commentaire WHERE emplacement ="'.$_GET['action'].' or 'general'"');
while ($Donnees = mysql_fetch_array($Commentaire)){
echo $Donnees['identite'];
echo $Donnees['date'];
echo $Donnees['commentaire'];
}


!!!!! A VERIFIER !!!!! car je l'ai fait vite fait.
!!!!! A ADAPTER !!!!! car nous ne voyons pas les même chose.
0
John4834 Messages postés 94 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 22 juin 2011 4
30 déc. 2009 à 14:09
Merci beaucoup pour votre aide, je vais essayer çà :)
0
John4834 Messages postés 94 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 22 juin 2011 4
30 déc. 2009 à 16:19
J'ai créé un fichier addcom.php! Mon formulaire envoi ses infos à ce fichier là!

Je voudrais savoir comment je dois faire pour que addcom.php enregistre mes infos dans la base de données!
(Comme vous pouvez le voir, je suis débutant de chez débutant). J'ai créé la table comme on me l'a expliqué plus haut, mais j arrive pas à faire en sorte que addcom.php remplisse ma table!

Merci bien!
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
30 déc. 2009 à 16:20
Va apprendre les bases sur le Siteduzero.com
0
John4834 Messages postés 94 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 22 juin 2011 4
30 déc. 2009 à 17:17
<?php
$requete = $bdd->prepare('
INSERT INTO `comment` SET

pseudo = :pseudo,
comment = :comment,
action_id = :action_id,
date = :date,

')

$requete->bindValue(':pseudo', $_POST['pseudo']);
$requete->bindValue(':comment', $_POST['comment']));
$requete->bindValue(':action_id', $_POST['action_id']);
$requete->bindValue(':date', $_POST['date']);

?>


Voila ce que contient ma page addcom.php
A savoir que les paramètres de connexion sont automatiquement pris en compte grace à une page index.php

Lorsque j'écris mon commentaire et que je clique sur le bouton envoyer, il me met:

Parse error: syntax error, unexpected T_VARIABLE on line 12
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
30 déc. 2009 à 17:20
$requete->bindValue(':comment', $_POST['comment'])); 

Il y a une parenthèse ")" de trop.
0
John4834 Messages postés 94 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 22 juin 2011 4
30 déc. 2009 à 17:25
Bien vu, j'ai corrigé mais le problème se situait au niveau de la ligne 12, donc la ligne juste au dessus!
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
30 déc. 2009 à 17:30
<?php
$requete = $bdd->prepare('
INSERT INTO `comment` SET

pseudo = :pseudo,
comment = :comment,
action_id = :action_id,
date = :date,
') <= ICI
0
John4834 Messages postés 94 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 22 juin 2011 4
30 déc. 2009 à 17:58
Ok, maintenant il ne me met plus d'erreur et me redirige correctement vers la page précédente sauf qu'il n'a pas enregistrer les infos dans la table!

Bon vais essayer d'être un peu plus clair :)

J'ai un formulaire sur ma page A:

<form action="addcom.php" method="post"></p>
<div align="justify">Pseudo:
<input type="text" name="pseudo" value=" <?php echo $_SESSION['pseudo'] ?>" readonly="readonly" />
<br />
<br />
<textarea aligne="center" name="contenu" style="width:97%; height:150px"></textarea>
<input type="submit" value="Envoyer mon commentaire." />
<input type="hidden" name="date" value="on s'en fout pour le moment">
<input type="hidden" name="action_id" value="<?php echo $donnees->action_id; ?>">
</form>

Voici le script de addcom.php:

<?php
$requete = $bdd->prepare('
INSERT INTO `comment` SET

pseudo = :pseudo,
comment = :comment,
action_id = :action_id,
date = :date,
');

$requete->bindValue(':pseudo', $_POST['pseudo']);
$requete->bindValue(':comment', $_POST['comment']);
$requete->bindValue(':action_id', $_POST['action_id']);
$requete->bindValue(':date', $_POST['date']);

$requete->execute();

header('Location: ' . $_SERVER['HTTP_REFERER'] );
?>

Donc il me redirige correctement mais ne m'enregistre rien dans la table.
0
graffx Messages postés 6506 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 24 mars 2019 1 973
30 déc. 2009 à 18:01
C' est normal tout ces ecart de ligne???

T' a plein de petites fautes, pas de virgules apres :date par exemple, enfin tiens.

<?php
$requete = $bdd->prepare('INSERT INTO `comment` SET pseudo = :pseudo, comment = :comment, action_id = :action_id, date = :date')or die(mysql_error());
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
30 déc. 2009 à 18:02
En passant, ça fait plaisir de voir PDO :)
Les espaces étaient sans doute pour la lisibilité du script.
0
John4834 Messages postés 94 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 22 juin 2011 4
30 déc. 2009 à 18:04
<?php

$requete = $bdd->prepare('INSERT INTO `comment` SET pseudo = :pseudo, comment = :comment, action_id = :action_id, date = :date')or die(mysql_error());

header('Location: ' . $_SERVER['HTTP_REFERER'] );

?>

Pareil avec ce script.
je suis désolé de vous embêter avec çà, mais je comprend vraiment pas ce qui cloche.

J'ai également changé le "name" de mon formulaire pour le contenu qui est devenu comment au lieu de contenu.
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
30 déc. 2009 à 18:09
Tu as quelle erreur ?
Quelque-chose du style "The headers are already sent" ?
0
graffx Messages postés 6506 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 24 mars 2019 1 973
30 déc. 2009 à 18:10
$requete = "INSERT INTO 'comment' (pseudo,comment,action_id,date) VALUES (:pseudo,:comment,:action_id,:date)";
$q = $conn->prepare($requete);
$q->execute(array(':pseudo'=>$pseudo, ':comment'=>$comment, ':action_id'=>$action_id, ':date'=>$date));



essaie comme ca
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
30 déc. 2009 à 18:13
Sa technique avec "SET" est correcte.
https://dev.mysql.com/doc/refman/8.0/en/insert.html
0
graffx Messages postés 6506 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 24 mars 2019 1 973
30 déc. 2009 à 18:14
t' es dur avec moi avion, j' essayais de t' impressionner la XD
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
30 déc. 2009 à 18:17
;-)
T'inquiètes, je ne connaisssais pas cette technique, mais j'ai vite demander à mon pote Google et il m'a dit que cette technique existe :)
0