Fermer la fenêtre et évité le commentaire vide

Résolu
Bonjour,

J'ai un problème pour le moment je n'arrive pas a fermer la fenêtre et envoyer le commentaire.

La j'ai code qui envoie le commentaire avec le pseudo ('login') mais il poste aussi un commentaire vide cela ne devrai pas arrivé :/
Et j'arrive pas a fermer cette fenêtre automatiquement ou que au moins l'utilisateur arrive sur une page style votre commentaire a bien été publié.

voici mon code:
<?php session_start(); ?>
<body>
<head>
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design" />
</body>
<?php
//--------------------------------------------------//
// fichier : formulaire.php 
//--------------------------------------------------//
// connexion à la BDD:
require_once "connexionBDD.php";

// Le temps des tests.. pour voir ce qui est reçu dans la variable
// $_POST :


//------------------------------------
//traitement du submit :
//------------------------------------

//récupération des variables :
$post = isset($_POST['post']) ? $_POST['post'] : NULL;
$commentaire= isset($_POST['commentaire']) ? $_POST['commentaire'] : '';
if(!empty($_POST['commentaire'])) {
echo 'Ok';
}
try{
 $sql = "INSERT INTO coms(post, login) VALUES (:commentaire, :login)";
 $params = array(":commentaire"=>$commentaire, ":login"=>$_SESSION['login']);
 $prepare = $db->prepare($sql);
 $prepare->execute($params);

}catch(PDOException $e) {
    
 }


?>


<!-- formulaire html -->
<form action="" method="post">
<p>Votre commentaire:</p>
<h2><?php echo ''.$_SESSION['login'].''; ?></h2>
<textarea name="commentaire" style="width:500px;height:200px;"><?php echo $commentaire ;?></textarea><br/>
<input type="submit" value="Envoyer" >
</form>
</head>


3 réponses

  1. Modérateur
    Bonjour,

    Il te suffit de rajouter une redirection vers une page confirm.php (par exemple) après ta requête
      //redirection vers ta page de confirmation...
       header("location : confirm.php");
      exit();
    


    Code corrigé :
    <?php 
    
    //--------------------------------------------------//
    // fichier : formulaire.php 
    //--------------------------------------------------//
    
    // démarrage SESSION
    if(session_id() == '') {
     session_start();
    }
    // connexion à la BDD:
    require_once "connexionBDD.php";
    
    //------------------------------------
    //récupération des variables :
    //------------------------------------
    $post = isset($_POST['post']) ? $_POST['post'] : NULL;
    $commentaire= !empty($_POST['commentaire']) ? $_POST['commentaire'] : NULL;
    
    //------------------------------------
    //traitement du submit :
    //------------------------------------
    
    if($commentaire && $post) {
     echo 'Ok';
    
     try{
       $sql = "INSERT INTO coms(post, login) 
                  VALUES (:commentaire, :login)";
       $params = array(":commentaire"=>$commentaire
                      , ":login"=>$_SESSION['login']
              );
       $prepare = $db->prepare($sql);
       $prepare->execute($params);
      
      //redirection vers ta page de confirmation...
       header("location : confirm.php");
      exit();
      
     } catch(Exception $e) {
        echo $e->getMessage();
     }
    }
    ?>
    
    <head>
    <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design" />
    </head>
    <body>
    <!-- formulaire html -->
    <form action="" method="post">
    <p>Votre commentaire:</p>
    <h2><?php echo $_SESSION['login']; ?></h2>
    <textarea name="commentaire" style="width:500px;height:200px;"><?php echo $commentaire ;?></textarea><br/>
    <input type="submit" value="Envoyer" >
    </form>
    </body>
    


    Cordialement,
    Jordane
    0
    1. Bonjour merci a vous de vous penchez sur mon problème.
      Mais il ne ce passe rien comme si la condition bloquer le processus.

      Je ne peu pu poster de commentaire mais le commentaire vide ne ce poste pas.

      PS: le echo OK ne s'affiche pas
      0
      1. Modérateur
        Tu peux essayer ça et nous dire ce que ça donne ?

        <?php 
        // Rapporte toutes les erreurs PHP
        error_reporting(E_ALL);
        //--------------------------------------------------//
        // fichier : formulaire.php 
        //--------------------------------------------------//
        
        // démarrage SESSION
        if(session_id() == '') {
         session_start();
        }
        // connexion à la BDD:
        require_once "connexionBDD.php";
        
        
        //le temps des tests
        echo "<pre>Variables POST :<br>";
        print_r($_POST);
        echo "</pre>";
        //------------------------------------
        //récupération des variables :
        //------------------------------------
        $login = isset($_SESSION['login'])?$_SESSION['login']:'';
        $post = isset($_POST['post']) ? true : false;
        $commentaire= !empty($_POST['commentaire']) ? $_POST['commentaire'] : NULL;
        
        //------------------------------------
        //traitement du submit :
        //------------------------------------
        
        if($post){
         if($commentaire ) {
          echo 'Ok';
        
          try{
            $sql = "INSERT INTO coms(post, login) 
                       VALUES (:commentaire, :login)";
            $params = array(":commentaire"=>$commentaire
                          , ":login"=>$login
                   );
            $prepare = $db->prepare($sql);
            $prepare->execute($params);
          
           // *** Redirection vers ta page de confirmation...***
           // Le temps des tests.. on désactive la redirection
           //	 header("location : confirm.php");
           exit();
          
          } catch(Exception $e) {
             echo $e->getMessage();
          }
         }else{
          echo "<br> Il n'y a aucun commentaire à ajouter";
         }
        }
        ?>
        
        <head>
        <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design" />
        </head>
        <body>
        <!-- formulaire html -->
        <form action="" method="post">
         <p>Votre commentaire:</p>
         <h2><?php echo $login; ?></h2>
         <textarea name="commentaire" style="width:500px;height:200px;"><?php echo $commentaire ;?></textarea><br/>
         <input type="submit" value="Envoyer" name="post">
        </form>
        </body>
        

        0
        1. Donc quand je suis sur la page du commentaire j'ai cela d'afficher:

          Variables POST :
          Array
          (
          )


          Puis après avoir mis un commentaire et envoyer, j'ai cela:
          Variables POST :
          Array
          (
          [commentaire] => bonjour
          [post] => Envoyer
          )
          Ok


          Vraiment la tous marche bien :) Mon commentaire sais poster sans faire un autre commentaire vide.
          0
        2. Donc j'ai remis la redirection:
          header("location : confirm.php");

          Et la tous marche bien sais super :) merci beaucoup résolu
          0
        3. Modérateur
          Si la question est résolue..
          Merci de ne pas oublier de clôturer le sujet
          (en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

          Cordialement,
          Jordane
          0