[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. 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');
    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. $reponse = mysql_query('SELECT * FROM minichat WHERE image_id = '.$_GET['var'].' ORDER BY ID DESC LIMIT 0,10'); 
        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. Essaye avec ça :
            mysql_query('INSERT INTO minichat VALUES("", "'.$pseudo.'", "'.$message.'", "'.$_GET['var'].'")');
            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. 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. 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. 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. 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. 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. 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. image_id ne doit être du même type que 'id' dans la table des images mais pas en AI
                            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. 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. 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. 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.