IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Système de commentaires


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut Système de commentaires
    Bonjour,

    j'ai un site avec plusieurs articles.
    Pour chaque article, on peut laisser un commentaire.

    En bas de chaque article, on a ce lien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo '<a href="ajout_comm.php?mess='.$donnees_messages['id_message'].'">Laisser un commentaire ?</a>';
    Ce lien redirige donc vers la page d'ajout de commentaire, avec en paramètre l'id de l'article (id_message) sur lequel on veut ajouter le commentaire.

    Sur la page ajout_comm.php, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form method="get" action="ajout_comm.php">
     
    if(isset($_GET['mess']))
    {
    	$id = $_GET['mess'];
    Et là je récupère correctement l'id de l'article.

    Sur cette page ajout_comm, j'aimerai également réafficher l'article en entier, mais aussi :
    - le formulaire d'ajout du commentaire
    - la liste des commentaires déjà écrits.

    Pour afficher ça, aucun problème.

    Maintenant, si je veux soumettre mon formulaire pour ajouter le commentaire, que dois-je faire ?

    Car un autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(isset($_GET['valider']))
    {
    sur la même page, ne fonctionne pas.

    J'ai tenté avec les $_POST, mais à ce moment là je ne sais pas comment récupérer l'id de l'article d'une page à l'autre (avec les sessions je n'ai pas réussi non plus).

    Je ne pense pas que le problème soit compliqué, mais là je bloque !

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    Montres nous le code de ton formulaire et la façon dont tu récupères les variables.

    A+.

  3. #3
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Bonjour,

    tout d'abord la page où j'affiche mes articles/messages :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $retour_messages=mysql_query('SELECT * FROM message ORDER BY id_message DESC');
     
    while($donnees_messages=mysql_fetch_assoc($retour_messages)) 
    {
    	$reqcomm = mysql_query("SELECT COUNT(id_commentaire) AS nbcomm FROM commentaire WHERE id_message= '".$donnees_messages['id_message']."';");
    	$nbcomm = mysql_result($reqcomm,0);
     
         echo '<h1>'.$donnees_messages['titre'].'</h1>';
    	 echo '<span class="dateenvoi">Posté par auteur, le '.$donnees_messages['date'].'</span><br /><br />';
    	 echo $donnees_messages['image'].'<br /><br />'; 
         echo $donnees_messages['texte'].'<br /><br />';
    	 echo '<a href="ajout_comm.php?mess='.$donnees_messages['id_message'].'">Laisser un comm ?</a> - <a href="ajout_comm.php">'.$nbcomm.' comm</a>';
    }
    Donc, cette page affiche mes messages avec le texte, la photo, l'auteur et le titre.
    En bas de chaque message, on a le lien "ajouter un comm" et "nb de comm existants déjà".

    On clique sur l'un des deux liens, on arrive sur la page ajout_comm.php :
    - Récupération de l'id du message choisi
    - Réaffichage du message (+titre et date)
    - Affichage du formulaire de soumission d'un commentaire
    - Affichage des autres commentaires postés
    - Soumission du formulaire <- ce $_GET ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    <form method="get" action="ajout_comm.php">
    <?php
    if(isset($_GET['mess']))
    {
    	$id = $_GET['mess'];
    	// La requête sql pour récupérer les messages de la page actuelle.
    	$retour_messages=mysql_query('SELECT * FROM message WHERE id_message="'.$id.'" ORDER BY id_message');
     
    	while($donnees_messages=mysql_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce à une boucle
    	{
    		echo '<h1>'.$donnees_messages['titre'].'</h1>';
    		echo '<span class="dateenvoi">Post&eacute; par Eki, le '.$donnees_messages['date'].'</span><br /><br />';
    		echo $donnees_messages['image'].'<br /><br />'; 
    		echo $donnees_messages['texte'].'<br /><br />';
    	}
     
    	// Formulaire de soumission d'un commentaire
     
    	echo '<table class="tabcomm"><tr><td align="right">Pseudo</td><td><input type="text" name="pseudo" /></td></tr>';
    	echo '<tr><td align="right">Site</td><td><input type="text" name="site" /></td></tr>';
    	echo '<tr><td align="right">Commentaire</td><td><textarea name="commentaire"></textarea>';
    	echo '<tr><td></td><td><input type="submit" name="valider" value="Ajouter" /></td></tr>';
    	echo '<tr><td>&nbsp;</td></tr></table>';
     
    	// Affichage des autres commentaires
    	$reqcomm = mysql_query("SELECT * FROM commentaire WHERE id_message = '".$id."';");
    	$i = 0;
    	echo '<table class="comment" cellpadding="0" cellspacing="0">';
    	while ($ligne = mysql_fetch_array($reqcomm))
    	{
    		if ($i%2 == 0) $classe = 'orange';
    		else $classe = 'rouge';
     
    		$auteur = $ligne['auteur'];
    		$date = $ligne['date'];
    		$comm = $ligne['comm'];
    		if ($ligne['site_auteur'] != '')
    			$site = 'Par <a href="'.$ligne['site_auteur'].'">'.$auteur.'</a>';
    		else $site = 'Par <strong>'.$auteur.'</strong>';
    		echo '<tr class="'.$classe.'"><td>'.$site.', le '.$date.'</td></tr>';
    		echo '<tr><td>'.$comm.'</td></tr>';
    		echo '<tr><td>&nbsp</td></tr>';
    		$i++;
    	}
     
    	if(isset($_GET['valider']))
    	{
    		$pauteur = $_GET['pseudo'];
    		$datepost = date('d/m/y');
    		$pcomm = $_GET['commentaire'];
    		$psite = $_GET['site'];
    		if ($pauteur != '' && $pcomm != '')
    		{
    			$datepost = date('d/m/y');
    			$reqins = mysql_query('INSERT INTO commentaire(auteur,date,comm,site_auteur,id_message)
    									VALUES ("'.$pauteur.'","'.$datepost.'","'.$pcomm.'","'.$psite.'","'.$id.'");') or die(mysql_error());
    		}
    		else echo '<p class="error">Vous devez remplir les champs Pseudo et Commentaire :)</p>';
     
    		if(!$reqins) echo '<p class="error">Probl&egrave;me d\'enregistrement !</p>';
    		else echo '<p class="valide">Commentaire ajout&eacute; ! :)</p>';
    	}		
    	echo '</table>';
    }
     
    ?>
    </form>
    Je pense que c'est simple à faire fonctionner mais je vois pas comment x)

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    $retour_messages=mysql_query('SELECT * FROM message WHERE id_message="'.$id.'" ORDER BY id_message');
    Tu ne dois pas mettre une valeur dans des doubles quotes dans un sql, ce sont des simples quote que tu dois utiliser.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour_messages=mysql_query("SELECT * FROM message WHERE id_message='".$id."' ORDER BY id_message");
    Les simples quotes ne sont pas obligatoire pour les types entier.

  5. #5
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Tu ne dois pas mettre une valeur dans des doubles quotes dans un sql, ce sont des simples quote que tu dois utiliser.
    Même si ma requête est entourée de simples quotes ?

    Ce n'est pas ça qui va résoudre mon problème par contre, si ? (je ne peux pas tester de suite, j'ai un bug)

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par baggie Voir le message
    Même si ma requête est entourée de simples quotes ?
    OUI

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    C'est valable pour toutes les requêtes INSERT, SELECT, DELETE,....
    $reqins = mysql_query('INSERT INTO commentaire(auteur,date,comm,site_auteur,id_message)
    VALUES ("'.$pauteur.'","'.$datepost.'","'.$pcomm.'","'.$psite.'","'.$id.'");') or die(mysql_error());
    Remplaces tous ces double quotes.

  8. #8
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    En effet, j'ai toujours fait ça, même si ça fonctionnait sans problème ça ne sert à rien.

    Par contre, ça ne résout pas mon problème de base

  9. #9
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Essaies de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(isset($_GET['mess']))
    {
    	echo "GET mess = " $_GET['mess'];
    .....
    Pour vérifier.

  10. #10
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Aucun problème pour ça, ça m'affiche bien le bon id de message !

    Serait-ce mon second $_GET qui est mal placé ?

  11. #11
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Mets aussi un echo pour le vérifier, ou regardes s'il est bien dans l'url car tu utilises la methode GET.
    Sinon ajoutes un input hidden avec le name="valider" dans ton formulaire car chez certain navigateur, le valeur du bouton submit n'est pas envoyer pendant la soumission.

  12. #12
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Quand je fais le echo, rien ne s'affiche mais dans l'url j'ai bien tous mes champs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://127.0.0.1/maquette/ajout_comm.php?pseudo=aa&site=&commentaire=aa&valider=Ajouter&valider=
    (le second valider correspond au hidden). Et rien ne s'affiche, aucun de mes echo.

    Merci pour l'aide ! =)

  13. #13
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Vires alors le hidden,
    Le if(isset($_GET['valider'])) est imbriqué dans le if(isset($_GET['mess'])) or que le $_GET['mess'] n'existe pas dans le lien donc il ne rentres pas dans le teste.

  14. #14
    Membre actif Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Points : 262
    Points
    262
    Par défaut
    Ah merci ! Ca fonctionne nickel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Système de commentaire en AJAX
    Par romann76 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/02/2009, 10h22
  2. Réponses: 7
    Dernier message: 09/08/2007, 11h55
  3. [MySQL] Comment mettre en place un système de commentaires
    Par mickdu90 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 19/04/2006, 10h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo