Script de commentaire / page
Résolu
Bonjour,j'ai une page php avec un contenu variable ...
A chaque contenu, je voudrais poster des commentaire et donner la possibilité de poster des commentaires...
Et ainsi si le contenu change la liste des commantaire changerons...
pour exemple ;
j'ai une page nomé voiture.php qui décrit .... une voiture
----------------------------------------------------------------------------------------------------------
www.mondomaine.com/voiture.php?marque=peugeot&voiture=104
description de ma 104
année de ma 104
couleur de ma 104
vos commentaires :
Seb le 10-10-2010
belle voiture
Anne le 04-04-2004
vieille voiture
poster votre commentaire :
nom:.........................................
date:........................................
commentaire: ............................
-------------------------------------------------------------------------------------------------------
Si le contenu change :
----------------------------------------------------------------------------------------------------------
www.mondomaine.com/voiture.php?marque=bmw&voiture=635
description de ma 635
année de ma 635
couleur de ma 635
vos commentaires :
Fred le 10-10-2010
trops cher
Clement le 04-04-2004
trops puissante
poster votre commentaire :
nom:.........................................
date:........................................
commentaire: ............................
-------------------------------------------------------------------------------------------------------
J'ai essayer quelques script de livre d'or mais c'est sur une seul page et c'est "statique", existe il des script permetant de réaliser cet fonction d'affichage de commentaire en fonction du contenu ?
Merci
A chaque contenu, je voudrais poster des commentaire et donner la possibilité de poster des commentaires...
Et ainsi si le contenu change la liste des commantaire changerons...
pour exemple ;
j'ai une page nomé voiture.php qui décrit .... une voiture
----------------------------------------------------------------------------------------------------------
www.mondomaine.com/voiture.php?marque=peugeot&voiture=104
description de ma 104
année de ma 104
couleur de ma 104
vos commentaires :
Seb le 10-10-2010
belle voiture
Anne le 04-04-2004
vieille voiture
poster votre commentaire :
nom:.........................................
date:........................................
commentaire: ............................
-------------------------------------------------------------------------------------------------------
Si le contenu change :
----------------------------------------------------------------------------------------------------------
www.mondomaine.com/voiture.php?marque=bmw&voiture=635
description de ma 635
année de ma 635
couleur de ma 635
vos commentaires :
Fred le 10-10-2010
trops cher
Clement le 04-04-2004
trops puissante
poster votre commentaire :
nom:.........................................
date:........................................
commentaire: ............................
-------------------------------------------------------------------------------------------------------
J'ai essayer quelques script de livre d'or mais c'est sur une seul page et c'est "statique", existe il des script permetant de réaliser cet fonction d'affichage de commentaire en fonction du contenu ?
Merci
Configuration: Windows XP Firefox 3.0.3
24 réponses
-
tout marche a merveille...
C'est beaucoups mieux quand on fait sois même sespropres script ...
Merci pour ton aide ..( et merci de m avoir pousser a faire moi même mon propre script ;) )
a+ -
et au fait merci pour la requete je vais essayer de suite...
-
un utilisateur n'a droit qu'à un seul commentaire ? Bizarre...
un seul commentaire par document... je pense que c'est suffisant ;) si il veux le réédité, il passe par l'admin qui lui supprime l'ancien....
En même temps sa évitera de reposter en rafraichissant la page (c'est pas le but principale mais bon, c'est pas plus mal)
Si tu n'as plus l'id_user, c'est pas possible car 2 utilisateurs avec le même nom prénom ne pourrait pas mettre de message.
si en faite je l'ai remis, j'ai donc, nom et prenom, pour l'affichage et id_user pour le traitement derriere dans mon code..
A voir aussi en fonction de la validation, si tu effaces ou pas les messages que tu ne valides pas
C'est déja fait, j'ai pas perdu de temps ;)
je passe par une page contenant mes liens (mes fonction):<center><a href=\"#\" onClick=\"confirme($id)\" ><font color=red>supprimer</font></a><br></center>\
avec un bout de javascript pour la redirction :function confirme( id ) { var confirmation = confirm( "Voulez vous vraiment supprimer ce commentaire ?" ) ; if( confirmation ) { document.location.href = "suppression_commentaire.php?id="+id ; } } function valider( id ) { document.location.href = "valider_commentaire.php?id="+id ; }
Et hp sur mes deux autres pages des petites requetes :
validation : $id = $_GET["id"] ; $sql_del = "UPDATE $commentaires SET valide='1' WHERE id = ".$id ; supression $id = $_GET["id"] ; $sql_del = "DELETE FROM $commentaires WHERE id = ".$id ;
le tour est joué ;) -
un utilisateur n'a droit qu'à un seul commentaire ? Bizarre....
Si tu n'as plus l'id_user, c'est pas possible car 2 utilisateurs avec le même nom prénom ne pourrait pas mettre de message.
Sinon tu fais une requête$query=SELECT * FROM COMMENTAIRE WHERE id_user = $id_utilisateur AND id_doc =$id_doc $test = mysql_query(query); if ( mysql_num_rows($test)) // Il y a déjà un commentaire de cet utilisateur else // C'est ok
A voir aussi en fonction de la validation, si tu effaces ou pas les messages que tu ne valides pas
Une autre solution serait de faire le test au chargement, si l'utilisateur a déjà un message pas de bouton ajouter un com mais un message vous avez déjà un message -
Comment dire en SQL /php
si $user "a deja un enregistrement dans la table avec champs $document = $champs" , ne rien faire
?
En gros, si cette utilisateur à déja posté un commentaire pour ce document .....ne rien faire.
dans ma table et sur ma page j'ai l'identifiant de l'utilisateur et l'identifiant du document.
Merci -
Te casse pas la tête j'ai modifier ma base de donnée et mas requete d'enregistrement des informations...
Maintenant je ne tappe que dans une seul BDD la ou j'ai enregistré les noms et prenoms des personne qui laissent des commentaire en m'aidant de leur variable de session...
Pour la parti admin, un update fera l'affaire je pense :) -
bein en faite avec :
$query2= "SELECT * FROM bdd1.table1 INNER JOIN database2.table2 AS U ON U.id = id_user WHERE id_doc='$id_url' AND valide=1"; $result2 = mysql_query($query2); // Fonction de recuperation et d'affichage des resultats while($row = mysql_fetch_row($result2)) { // Enregistrement des resultats dans des variables $date = $row[3]; $id_user = $row[2]; $commentaire= $row[1]; //fonction d'affichage ...... .... .. }
j'ai une erreur : Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\Program Files\Easyphp\www\index.php on line 333
avec la ligne 333 celle qui est soulignée. ... -
ben comme avant ou alors je ne comprends pas la question.
-
En faite je voulais dire, avec :
$query2= "SELECT * FROM bdd1.commentaires INNER JOIN bdd2.utilisateur AS U ON U.id = id_user WHERE id_doc='$id_url' AND valide=1";
comment récuperer les valeur de ma bdd2 et bdd1 ?
du type ... while($row = mysql_fetch_row($result2)) ...
Merci -
ouais c'est une table reservé a la gestion des membres (création de comptes .... ) que j'ai préféré séparé de celle de l'affichage de mon intranet ... pour plus de sécurité et pour pouvoir exporter la bdd de l'intranet plus facilement !
que donnerais la requetes exacte stp ?? -
Si il suffit de mettre maBase.maTable
Bizarre de stocker ça dans 2 tables différentes. -
je complique un petit peu ... (sans le vouloir)
ce sont deux bases differentes, l'Union se fait sur deux tables differentes je pense mais pas deux bases differentes.. non ?? -
Moi, je verrais bien :
SELECT * FROM commentaires INNER JOIN utilisateur AS U ON U.id = id_user WHERE id_doc='$id_url' AND valide=1
Je ne pense pas que ce sera le plus rapide. -
j'ai presque fini, la je te solicite pour un petit conseil en performance...
lorsque je post et j'enregistre un message dans ma BDD, je sauvegarde pas le nom mais l'ID de l'utilisateur.
J'ai donc dans ma table l'ID-Utilisateur associé a chaque commentaire.
Maintenant pour l'affichage des commentaire je veux le nom, je doit donc transformer cet id en nom d'utilisateur....
Comment s'y prendre?
$query2 = "SELECT * FROM commentaires WHERE id_doc='$id_url' AND valide=1"; ... .. while($row = mysql_fetch_row($result2)) { // Enregistrement des resultats dans des variables $date = $row[3]; $id_utilisateur = $row[2]; $commentaire = $row[1]; $query3 = "SELECT nom,prenom FROM utilisateur WHERE id='$id_ytilisateur'"; while($row = mysql_fetch_row($result3)) { // Enregistrement des resultats dans des variables $nom = $row[1]; $prenom = $row[2]; } }
l'imbrication de ces deux fonction (et des deux requètes) me paraissent trop gourmandes qu'est ce que tu en pense ???? -
désolé je viens a peine de voir ton message... En faite la partie affichage des commentaire depuis la BDD vers la page est fait... C'est extremement simple 30 lignes de code html compris...
grossomodo :$query2 = "SELECT * FROM $commentaires WHERE id_doc='$id_voiture' AND valide=1"; . . . echo "<table class=table_commentaires> <tr>\n <td class=td_commentaires> <span class=texte> Posté le: <b>$date</b> par : <B>$utilisateur</b>. <p>$commentaire</span> </td> </tr> je ferme ma table apres ma balise php pour afficher tout les enregistrements
Ce que je fait en ce moment c'est les champs pour que l'utilisateur puisse saisir son champs... -
Ah bon ??
il y aura plus de commentaires que d'utilisateurs je pense, et plus de commentaire que de voiture...
=> et ? ? ?
Si un utilisateur A a pour id 2, tous ces commentaires auront pour id_user 2
=> donc tous les id_user de la table COMMENTAIRE seront déjà dans la table USER
C'est en fait le même champ donc si c'est un int d'un côté, il faut que ce soit un int de l'autre.
Et pareil pour les voitures
-sur ma page php ou sera afficher les commentaire, je recupere l'id de ma voiture (pour afficher les informations concernant ce vehicule)
=> tu ne les affiches pas sur la page contenant les infos de la voiture ? ?
- je peut, grace a un champs hidden qui récupere l'id de ma voiture, lors du submit, remplir le champs id_doc de ma table "commentaire".
Ainsi chaque commentaire posté (envoyé),sera posté avec la date (fonction today) et l'id de la voiture (récuperé en hidden) remplit automatiquement...
Oui voilà. -
Tes table sont en MyIsam donc les clés sont à gérer côtés code. Tu entendais quoi par croiser les clés ?
mouais désolé pour ces termes sombres (dûes a la certification croisés sous notes ....bref)
En faite pour que id_doc soit reconnue comme étant la clé primaire de ma table doc.
Mais j'ai une autre solution, dit moi ce que tu en pense .:
-sur ma page php ou sera afficher les commentaire, je recupere l'id de ma voiture (pour afficher les informations concernant ce vehicule)
- je peut, grace a un champs hidden qui récupere l'id de ma voiture, lors du submit, remplir le champs id_doc de ma table "commentaire".
Ainsi chaque commentaire posté (envoyé),sera posté avec la date (fonction today) et l'id de la voiture (récuperé en hidden) remplit automatiquement...
id_doc correspond bien à l'id d'une voiture ? ?
oui mais il s'appel tout simplement "id" et il se trouve dans la table "voiture", l'association id TABLE voiture = id_doc n'est pas encore faite (si tu vois ce que je veux dire )Si id_doc et id_user sont les clés étrangères, elles doivent être de même type que les clés : ( sûrement int(10) comme dans cette table )
Ah bon ??
il y aura plus de commentaires que d'utilisateurs je pense, et plus de commentaire que de voiture...
valide est plutôt un booléen pour moi ( tinyint(2) ).
ouais sa sera plus simple que "NO" & "OK" comme valeur ... -
Tes table sont en MyIsam donc les clés sont à gérer côtés code. Tu entendais quoi par croiser les clés ?
id_doc correspond bien à l'id d'une voiture ? ?
valide est plutôt un booléen pour moi ( tinyint(2) ).
Si id_doc et id_user sont les clés étrangères, elles doivent être de même type que les clés : ( sûrement int(10) comme dans cette table )
Côté administration, 2 ou 3 choix : => ce choix modifiera la requête d'affichage des commentaires :
commentaires non validés : WHERE valide = 0
tous les commentaires : rien
commentaires validés : WHERE valide = 1 -
CREATE TABLE `commentaires` ( `id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `commentaire` VARCHAR( 300 ) NOT NULL , `id_user` VARCHAR( 20 ) NOT NULL , `date` DATE NOT NULL , `valide` VARCHAR( 2 ) NOT NULL , `id_doc` VARCHAR( 5 ) NOT NULL ) ENGINE = MYISAM ;
par contre je n'ai pas repris le nom exacte de mes id pour id_user et id_doc ... leur nom est en effet "id" tout court !
ma base est donc crée, il fait "croisé" les clefs c'est bien sa ? (ahh merise, et dire que je ne voulais plus entendre parler de lui !! ) ... -
Ca c'est toi qui voit.
Moi je ferais une nouvelle table avec :
- id_commentaire
- commentaire
- utilisateur ( id si stockés dans la base ou nom sinon )
- date
- valide
- id_voiture
- 1
- 2
Suivant