[PHP] Module commentaire different sur chaque

Bonjour,
J'ai reussit a cree un module de commentaire grace au tuto du SDZ. (https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/914663-tp-un-minichat#ss_part_1)

Donc pour l'instant j'ai la meme chose que sur le SDZ mais j'aimerais que le module de commentaire ne soit pas le meme sur toute les pages .

Mon site est une galerie d'image j'ai la page galerie.php lorsque l'on clique sur une des images on est alors redirigé vers une page ou l'image est en grand (image.php)
<?php
$reponse = mysql_query("SELECT * FROM images WHERE id='".$_GET['var']."'"); // Requête SQL
$donnees = mysql_fetch_array($reponse)
 ?>

<?php echo stripslashes($donnees['imageGRAND']); ?>
 <?php   }   ?>


C'est donc sur cette page image.php que j'aimerais que le module de commentaire soit différent pour chaque image (et donc pour chaque id)

Merci de m'aider a trouvé une solution a mon problème.
Configuration: Windows XP
Firefox 3.0.7

20 réponses

  1. Ajoute un champs "image_id".
    Ensuite, lors de la requête, mets : "WHERE image_id = '.$_GET['id'] ;
    Et dans l'INSERT, n'oublie pas d'ajouter l'id de l'image.
    1. salut,
      Tu veut que je rajoute un champs "image_id" dans ma table minichat avec phpmyadmin ? et de quel type doit etre ce champ ( text / INT ... ) ?
      ou alors j'ai pas bien compris ^^ ... pourrai tu développé ,je ne suis pas très doué...

      Merci beaucoup pour ton aide
      1. Oui, ce champs doit être ajouté à la table minichat.
        Le champs doit être du même type que 'id' sur la table de tes images.
        1. bah, j'ai deja un champ id dans ma table minichat ... , et apparemment là, phpmyadmin me dit que je ne peut pas avoir 2 champs en "Auto increment " donc je ne peut pas créé image_id ...

          Qu'es-ce que je doit faire ? Oo
          1. image_id ne doit être du même type que 'id' dans la table des images mais pas en AI
            1. J'ai créé image_id, et j'ai mis dans la requette :

              // On utilise la requête suivante pour récupérer les 10 derniers messages :
              $reponse = mysql_query("SELECT * FROM minichat WHERE image_id = '.$_GET['id'] ORDER BY ID DESC LIMIT 0,10");
              


              donc maintenant je crois qu'il ne me reste plus que ça a faire :

              Et dans l'INSERT, n'oublie pas d'ajouter l'id de l'image. 
              
              mais je voit pas comment faire ...

              j'ai :
              // Ensuite on enregistre le message
                      mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");
               
              
              1. Pour le SELECT, c'est :
                $reponse = mysql_query("SELECT * FROM minichat WHERE image_id = $_GET['id'] ORDER BY ID DESC LIMIT 0,10");

                Si on insert le commentaire en étant sur la page de l'image :
                mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message',$_GET['id'])");
                1. Salut, désolé d'avoir laissé coulé le sujet mais j'était parti en vacances ... bref mon problemme n'est toujour pas resolu :

                  je n'arrive pas a envoyé l'id des images dans "image_id" de la table minichat (je croit que le problemme vient de la :)

                  
                  <?php
                  if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
                  {
                      if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
                      {
                  
                   
                          // On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
                  
                          $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
                          $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
                  
                          // Ensuite on enregistre le message
                  		mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message', $_GET['id']))");
                  
                       }
                   }
                  
                  


                  j'espère que tu sera encore la pour m'aider avion f-16 ;)
                  1. Désolé j'étais en vacances ... à l'hôpital :)
                    Hum ...
                    mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message', $_GET['id']))");
                    (J'ai souligné l'erreur).
                    1. Je croit que j'ai oublier de précisé quelque chose :
                      La variable que je transmet entre la page d'acceuil et la page de l'image est l'id de l'image, la fin de la page de l'image est :

                      image.php?var=362
                      

                      donc es-ce que ça veut dire que a la place de tes $_GET['id'] je doit mettre $_GET['var'] ?

                      ________________

                      sinon j'ai réglé le problème de parenthèse mais sa ne fonctionne toujour pas ,
                      j'ai une Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' a la ligne mysql_query.
                      Il ne faudrait pas mettre quelque chose a la ligne ou j'ai mis des *** ?
                         <?php
                      									  
                      									    // D'abord, on se connecte à MySQL
                      		include("boss/connexion.php"); 
                      		
                      if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
                      {
                          if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
                          {
                      
                       
                              // On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
                              $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
                      	$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
                              *********************************************************
                              // Ensuite on enregistre le message
                      		mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message', $_GET['id'])");
                      
                          }
                      }
                      
                      ?>
                      
                      


                      j'espere qu'on va y arrivé ^^ , Merci pour ton aide

                      .
                      1. ok , j'ai mis $_GET['var'] mais j'ai toujours l'erreur :

                        Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\wamp\www\allo\HTML\film.php on line 222


                        et la ligne 222 c'est celle la :
                        mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message', $_GET['var'])");
                        


                        est-tu sur qu'on peut mettre un $_GET a l'interrieur d'un mysql_query
                        1. Si j'ai bien compris, tu veux avoir une "instance" différente du chat sur chaque page produit ?

                          Dans ce cas, il te suffit de rajouter un champ id_produit dans la table de chat et de créer ton chat en fonction de l'id du produit. Pour le chat "général", tu mets un id 0 qui ne sera pas utilisé par tes produits.

                          Est-ce clair ?

                          edit : Je viens de voir que le sujet date un peu et que la solution a déjà été proposée, sorry ;-p
                          1. Essaye avec ça :
                            mysql_query('INSERT INTO minichat VALUES("", "'.$pseudo.'", "'.$message.'", "'.$_GET['var'].'")');
                            1. ok, ça fonctionne mais maintenant j'ai une erreure a cette ligne :

                              
                              // On utilise la requête suivante pour récupérer les 10 derniers messages :
                              $reponse = mysql_query("SELECT * FROM minichat WHERE image_id = $_GET['var'] ORDER BY ID DESC LIMIT 0,10"); 
                              
                               
                              

                              ça doit encore etre une histoire de guillemet ...
                              1. $reponse = mysql_query('SELECT * FROM minichat WHERE image_id = '.$_GET['var'].' ORDER BY ID DESC LIMIT 0,10'); 
                                1. Ohhh trop bien ça marche nikel merci a toi Avion F-16.

                                  Mais j'ai un autre problème, kan j'ecrit un message il s'enregistre parfaitement mais lorsque je fait rafraichir la page , il me demande si je veut renvoyéencore une fois le message ....

                                  Aurais -tu une solution pour ça :)

                                  en tout cas merci pour toute ton aide :D
                                  1. Tu peux créer une page de traitement en PHP qui ne fait aucun echo (et tu ne mets rien à l'extérieur de <?php et ?>) mais qui enregistre les données. Dans cette page, une fois l'enregistrement fait, tu fais une redirection vers la page qui affiche.

                                    Pour faire une redirection :
                                    header('Location: lapagecible.php');