2016-12-22 5 views
1

画像をアップロードしようとしています。ユーザーはそれらに返信することができます。私はこれをphp、mysql、ajaxを使って作ろうとしています。私は実際にチュートリアルに従っており、自分のウェブサイトに合うようにコードを修正しました。しかし、私が提出をクリックするたびに、私は自分のウェブサイトのトップにリダイレクトされているので、ページがリフレッシュされているように見えます。新しいコメントは古いコメントの上には載せられません。また、私のデータベースのcommentstableの新しいコメント。ここで私はphp、mysql、ajaxを使って画像をアップロードしようとしていますが、何も出力されません。

はコードです:

これは私が画像を表示して、コメントを印刷し、ユーザが入力新しいコメントにテキストエリアを設定したPHPファイルです。このファイルでは、ajaxの部分を実行するpostcomment()という関数を含むjavascriptファイルをインポートします。コメントテーブルには、特定のコメントが投稿された画像のIDを格納するcommentForImageIdという列があります。

<?php 
//image is displayed above this set of code with all the required data 

date_default_timezone_set('Asia/Kolkata');//to set my country's timezone 
?> 

<form method="post" action="" onsubmit="return postcomment();"> 
    <input type="hidden" id="imageId" value="<?php echo $imageId; ?>"> 
    <input type="hidden" id="datetime" value="<?php echo date('Y-m-d H:i:s'); ?>"> 
    <textarea id="comment" placeholder="Write comment"></textarea><br> 
    <button type="submit">post comment</button> 
</form> 

<div id="allcomments"> 
    <?php 

    $sql= "SELECT * FROM commentstable ORDER BY datetime DESC"; 
    $result=mysqli_query($conn,$sql); 
    while($row=mysqli_fetch_assoc($result)) 
    { 
     $commentForImageId=$row['commentForImageId']; 

     if($commentForImageId==$imageId){ 
      $username=$row['commentByUserName']; 
      $comment=$row['comment']; 
      $datetime=$row['datetime']; 
    ?> 
    <hr> 
    <div class="comment_div"> 
    <p class="comment"><?php echo $comment; ?></p> 
    <p class="username">Posted By:<?php echo $username; ?></p> 
    <p class="datetime"><?php echo $datetime; ?></p> 
    </div> 
    <hr> 

    <?php 
}}?> 
</div> 

ここにajax部分を実行する関数があります。 "commentsystem.php"は、データをデータベースに保存する部分を実行します。

function postcomment(){ 
var comment = document.getElementById("comment").value; 
var datetime = document.getElementById("datetime").value; 
if(comment && datetime) 
{ 
    $.ajax 
    ({ 
     type: 'POST', 
     url: 'commentsystem.php', 
     data: 
     { 
      comment:comment, 
      datetime:datetime 
     }, 
     success: function (response) 
     { 
      document.getElementById("allcomments").innerHTML=response+document.getElementById("allcomments").innerHTML; 
      document.getElementById("comment").value=""; 
     } 
    }); 
} 

return false; 
} 

ここにcommentsystem.phpがあります。ここで、「dbh.phpは、」データベースへの接続が確立されているデータベースファイル処理です:

<?php 
session_start(); 

include 'dbh.php'; 

if(isset($_SESSION['id'])){//if user has logged in 
    if(isset($_POST['comment']) && isset($_POST['datetime']) && isset($_POST['imageId'])) 
    { 
    //if user has submitted the comment 
    $comment=$_POST['comment']; 
    $datetime=$_POST['datetime']; 
    $imageId=$_POST['imageId']; 
    $username=$_SESSION['username']; 
    $userId=$_SESSION['id']; 

    $sql="INSERT INTO commentstable (commentForImageId, commentByUserId, commentByUserName, likes, numberOfReplies, comment, datetime) VALUES ('$imageId', '$userId', '$username', 0, 0, '$comment', '$datetime')"; 
    $result=mysqli_query($conn,$sql); 

    ?> 

    <div class="comment_div"> 
     <p class="comment"><?php echo $comment; ?></p> 
     <p class="username">Posted By:<?php echo $username; ?></p> 
     <p class="datetime"><?php echo $datetime; ?></p> 
    </div> 

    <?php 
    exit; 
} 
} 
else{ 
    header("LOCATION: signup.php"); 
} 
?> 

はあなたの助けのためにありがとうございました!私はこれについて非常に新しく、間違っていることについて完全に混乱しています!

ありがとうございました!

+0

外観を設定することを必要とするあなたは$ IMAGEIDを設定してくださいPHPのエラー報告とクエリ/クエリを使用してエラーをチェックしてください。無関係な注記の –

+1

では、あなたのコードは、SQLインジェクション攻撃やハッカーからのjavascriptインジェクション攻撃に対して非常に脆弱です。あなたはハックする前にそれらを修正する必要があります – hanshenrik

+0

私は間違っている何も起こっていないので、何も起こらない何も起こらないので、私は間違っていることを理解することができません – meagler

答えて

1

私はボタンを例postcommentのためのクラスを与えるだろうと呼び出しこの$('.postcomment').click(function(){ $.ajax.... return false;})

はまた、commentsystem.phpにあなたのコンソールで

+0

ありがとうございます!出来た!それは私が前に使っていた方法で働いていなかった理由:) – meagler

+0

あなたは説明できますか? – meagler

+0

あなたはどういう意味ですか、私たちはすべての間違いなしに行きましたか? –

関連する問題