Système de commentaires
Résolu
John4834
Messages postés
94
Date d'inscription
Statut
Membre
Dernière intervention
-
John4834 Messages postés 94 Date d'inscription Statut Membre Dernière intervention -
John4834 Messages postés 94 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Système de commentaires
- Restauration systeme windows 10 - Guide
- Vous avez besoin d'une autorisation de la part de système pour modifier ce dossier - Guide
- Clément a partagé le fichier mme bovary. il a écrit des commentaires dans le document. quel est le 2e commentaire ? - Guide
- Cloner disque systeme - Guide
- Comment refaire le système d'un ordinateur - Guide
28 réponses
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" :
Ensuite, lorsque tu listes les commentaires, il faut ajouter la clause "WHERE" :
mysql_query('SELECT * FROM table WHERE action="'.$_GET['action'].'"');
Tu voudrais afficher les commentaire sur chaque page ou des commentaire preci pour AXA, d'autre pour FORTIS ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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'].
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'].
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.
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.
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!
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!
<?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
$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
Bien vu, j'ai corrigé mais le problème se situait au niveau de la ligne 12, donc la ligne juste au dessus!
<?php $requete = $bdd->prepare(' INSERT INTO `comment` SET pseudo = :pseudo, comment = :comment, action_id = :action_id, date = :date, ') <= ICI
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.
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.
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());
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());
En passant, ça fait plaisir de voir PDO :)
Les espaces étaient sans doute pour la lisibilité du script.
Les espaces étaient sans doute pour la lisibilité du script.
<?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.
$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.
$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
$q = $conn->prepare($requete);
$q->execute(array(':pseudo'=>$pseudo, ':comment'=>$comment, ':action_id'=>$action_id, ':date'=>$date));
essaie comme ca