2017-05-27 16 views
-1

私はデータベースにコメントを挿入しようとしていますが、動作しません。既存のコメントを表示する選択は、データベースに値を手動で入力すると機能します。私は間違って何をしていますか?テーブル 'comments'の列は、ユーザー名、レビューのファイルパスに基づいて別のテーブルから取得したfilm_id、および投稿された日付です。私のデータベースにコメントが挿入されていません

<?php 
session_start(); 
?> 
<!DOCTYPE html> 
<html> 
<head> 
<title>Page Title</title> 
</head> 
<body> 
<div class="commentdiv"> 
<form method="post" action=""> 
Comment:<br> 
<textarea name='message' id='message'></textarea><br/> 
<br> 
<input type="submit" name="comment" value="Comment"> 
<br> 
</form> 
</div> 
<?php 
    date_default_timezone_set('America/Curacao'); 
    $db = new PDO('mysql:host=localhost;dbname=dbase', 'username', 'password'); 
    if(isset($_POST['comment'])){ 
     if(empty($_POST['message'])){ 
      echo "There's no message"; 
     } else { 
     if(isset($_SESSION['loggeduser'])){ 
     $message = $_POST['message']; 
     $datum = date('YmdHis'); 
     $username = $_SESSION['loggeduser'][0]; 
     $path = $_SERVER['REQUEST_URI'][0]; 
      try { 
      $zoekfilm = $db->prepare("SELECT film_id FROM Reviews WHERE path = :path"); 
      $zoekfilm->bindParam("path", $path); 
      $zoekfilm->execute(); 
      $film = $zoekfilm->fetch(); 
      } catch(PDOException $b){ 
      die("Error!: " . $b->getMessage()); 
      } 
    try{ 
      $addcomment = $db->prepare("INSERT INTO comments(Usernames, film_id, comments, date) VALUES (:username, :id , :comment, :datum)"); 
      $addcomment->bindParam("username", $username); 
      $addcomment->bindParam("id", $film_id); 
      $addcomment->bindParam("comment", $message); 
      $addcomment->bindParam("datum", $datum); 
       $addcomment->execute(); 
      } catch(PDOException $c){ 
      die("Error!: " . $c->getMessage()); 
      } 
     } else { 
     header("Location: signin.php"); 
    } 
    } 
    } 
    try { 
    $showcomments = $db->prepare("SELECT * FROM comments ORDER BY date"); 
    $showcomments->execute(); 
     while($result = $showcomments->fetch(PDO::FETCH_ASSOC)){ 
    echo '<div class="comment" style="border: 2px solid black;">'; 
    echo '<p>'.$result['Usernames'].' </p>'; 
    echo '<p> '.$result['comments'].'</p>'; 
    echo '<p> Posted:'. $result['date'] .'</p>'; 
    echo '</div>'; 
} 
} catch(PDOException $a){ 
      die("Error!: " . $a->getMessage()); 
    } 
    ?> 
</body> 
</html> 
+0

エラーメッセージはありますか?どのように/ $ film_idは設定されていますか? –

+0

'$ film_id'は' $ film'として宣言されています – fyrye

+0

これは2つの異なる変数です。ですから、$ film_idはnull(そうでなければ設定されていない可能性があります)であり、挿入が失敗する可能性がありますか?あなたはおそらく、$ filmと$ film_idを使用することを意味しませんでした。 –

答えて

0

私は、選択は、それがある、ファイルIDを取得するために使用されている、しかし、あなたは、インサートの値を使用するときに、IDにフェッチから結果を入れていると仮定しています。結果は、結果からのすべてのフィールド(この場合は1つ)の配列であるため、使用するにはそのフィールドを選択する必要があります。

$addcomment->bindParam("id", $film['film_id']); 
関連する問題