Script de commentaire / page

Résolu/Fermé
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 - 14 oct. 2008 à 16:57
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 - 16 oct. 2008 à 17:10
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 voir également:

24 réponses

-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
16 oct. 2008 à 10:44
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
1
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
16 oct. 2008 à 12:02
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
1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
16 oct. 2008 à 12:12
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é ;)
1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
16 oct. 2008 à 14:35
et au fait merci pour la requete je vais essayer de suite...
1

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

Posez votre question
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
16 oct. 2008 à 17:10
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+
1
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
14 oct. 2008 à 17:40
Tu fais pareil que pour afficher tes voitures :

Tu dois avoir une requête pour récupérer les infos de tes voitures.

Tu crées une table pour stocker tes messages avec une clé étrangère correspondant à la clé primaire de ta voiture.

Et sur ta page, tu fais une requête qui récupère les messages correspondant à cette voiture.

mysql_query("SELECT * FROM COMMENTAIRE WHERE id_voiture=". $GET["id_voiture"] ."
ORDER by date)

ou si la clé primaire est composé des 2
mysql_query("SELECT * FROM COMMENTAIRE WHERE marque='". $GET["marque"] ."'
AND voiture='". $GET["voiture"] ."' ORDER by date)
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
15 oct. 2008 à 10:19
salut mickey, merci , pour tes post.
Mais en faite je ne veux pas simplement afficher des commentaire.

Je voudrais savoir si il existe un script ou les champs pour afficher les commentaires seraient prédefinit, ou la partie d'administration (qui permetterais de visualiser et valider -supprimer - les commentaires avant leur publication) est existante.

un outils complet quoi ...

Je saurais le programmé , (enregistrement des commentaires dans la même table des "voitures" avec un champs spécifique "commentaires" par exemple ... affichage de chaque commentaires dans un tableau)

mais ayant déjà fait un gros interface d'administration, j'imagine le temps que sa risquerais de me prendre ... vous ne connaissez pas de script pratique SVP ?
-1
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
15 oct. 2008 à 10:31
Tout d'abord, je n'utilise jamais de script tout fait ( que quelques librairies ) donc non je ne connais pas.

Tu dis : "Je saurais le programmé , (enregistrement des commentaires dans la même table des "voitures" avec un champs spécifique "commentaires" par exemple ... affichage de chaque commentaires dans un tableau) ".

Si tu réfléchis bien, en mettant tes commentaires dans ta table voiture, il faut que tu rajoutes n champs dans ta table ou n sera le nombre maxi de commentaire possible pour une voiture. Ce qui à mon avis n'est pas la bonne solution. J'irais même jusqu'à dire que c'est très mal.

"j'imagine le temps que sa risquerais de me prendre" =>
- Script de création de la table : environ 5 minutes en comptant un temps de réflexion.
- Partie administration : 20 minutes.
- Partie utilisateur : 10 minutes.
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
15 oct. 2008 à 10:53
Si tu réfléchis bien, en mettant tes commentaires dans ta table voiture, il faut que tu rajoutes n champs dans ta table ou n sera le nombre maxi de commentaire possible pour une voiture. Ce qui à mon avis n'est pas la bonne solution. J'irais même jusqu'à dire que c'est très mal. 


Non je pensait en faite mettre un "gros champs" bridé a disons 1000 caractères pour n'afficher que les derniers commentaires.

Ce champs contiendrais la totalité des commentaires séparés par des balises <p>

"nom: XXXXXXX    date:XXXXXXXX
<p>
Commentaire 1 : xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<p>
<p>
"nom: XXXXXXX    date:XXXXXXXX
<p>
Commentaire 2 : xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
<p>
<p>
"nom: XXXXXXX    date:XXXXXXXX
<p>
Commentaire 3 : xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"


Les balises seraient envoyé des le post d'un message via le submit... Mais c'est assez barbar comme solution, le dernier commentaires serais tronqué et un champs de 1 000char c'est pas enorme mais si on, le multiplie par le nombre de "voiture" sa deviens vite tres gros !!

- Script de création de la table : environ 5 minutes en comptant un temps de réflexion.
- Partie administration : 20 minutes.
- Partie utilisateur : 10 minutes.

C'est encourageant !! on part pour cette solution ?? :)
-1
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
15 oct. 2008 à 11:20
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
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
15 oct. 2008 à 11:30
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 !! ) ...
-1
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
15 oct. 2008 à 11:42
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
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
15 oct. 2008 à 11:54
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 ...
-1
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
15 oct. 2008 à 15:25
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à.
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
15 oct. 2008 à 16:24
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>&nbsp;par&nbsp;:&nbsp;<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...
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
15 oct. 2008 à 17:22
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 ????
-1
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
15 oct. 2008 à 17:50
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.
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
15 oct. 2008 à 17:59
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 ??
-1
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
15 oct. 2008 à 18:05
Si il suffit de mettre maBase.maTable

Bizarre de stocker ça dans 2 tables différentes.
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
15 oct. 2008 à 18:08
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 ??
-1