Login dans le post commentaire

Résolu
Bonjour,
J'ai crée un espace utilisateur et la les personnes connecter peuvent poster des commentaires. Le seule problème sais pour stocker le 'login' dans la table 'coms' dans la colonne 'login'.

Voici le code pour poster un commentaire mais je n'arrive pas a enregistrer le login je l'est juste afficher visuellement.

<?php session_start(); ?>

<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'] : '';
try{
 $sql = "INSERT INTO coms(post) VALUES (:commentaire)";
 $params = array(":commentaire"=>$commentaire);
 $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>



2 réponses

  1. Salut,

    Ya comme une impression de déjà vu.. lol
    Je comprends un peu mieux ton soucis, as tu une colonne login dans ta table coms de ta base de données?
    1. J'ai une table 'membre' avec 'id', 'login' , 'pass_md5' et 'email' et dans l'autre table 'coms' il y a : 'post_id', 'post' et le 'login'.

      J'arrive a afficher le login grace a:
      <?php echo ''.$_SESSION['login'].''; ?>
    2. Sais bon mais j'ai du enlevé le if pour évité le commentaire vide mais donc ça me poste le commentaire vide et le commentaire que j'ai écris.
    3. Comment évité que le commentaire vide sois posté ?
  2. Ok ben c'est parfait dans ce cas, remplace les lignes
     $sql = "INSERT INTO coms(post) VALUES (:commentaire)";
     $params = array(":commentaire"=>$commentaire);

    par
     $sql = "INSERT INTO coms(post, login) VALUES (:commentaire, :login)";
     $params = array(":commentaire"=>$commentaire, ":login"=>$_SESSION['login']);
    


    EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
    Explications disponibles ici :
    https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

    Merci d'y penser dans tes prochains messages.
    .
    1. Toujours là pour corriger ;)
    2. Je comprend pas trop la donc ça marche mais j'ai du enlever le
      $post = isset($_POST['post']) ? $_POST['post'] : NULL;
      $commentaire= isset($_POST['commentaire']) ? $_POST['commentaire'] : NULL;
      if($post && $commentaire){ // ce if j'ai du l'enlevé pour que cela marche
      
       try{
        $sql = "INSERT INTO coms(post) VALUES (:commentaire)";
        $params = array(":commentaire"=>$commentaire);
        $prepare = $db->prepare($sql);
        $prepare->execute($params);
      
       }catch(PDOException $e) {
           echo 'Erreur : '.$e->getMessage();
           echo 'N° : '.$e->getCode();
       }
      }
      
    3. Car la j'ai un commentaire vide dès l'ouverture de ma page commentaire et le commentaire que j'écris qui au passage on ne sais pas si cela a était publié ou pas... :/
    4. Sinon il s'affiche mais faut fermer la page puis il faut recharger la page source, pour voir la publication des commentaires (celui vide et celui que j'ai écrit ).