2017-06-10 12 views
0

私はPHPコーディングで新しいです。コメントセクションを作成していますが、同じコメントをデータベースに挿入するたびにコメントを送信します。 ここは私のPHPコードです。ページを更新するときにSQLが同じデータを挿入するのはなぜですか?

 <?php 
    function setComments($mysqli){ 
    if (isset($_POST['commentSubmit'])) { 
     $uid= $_POST['uid']; 
     $date= $_POST['date']; 
     $message= $_POST['message']; 

     $sql="INSERT INTO comments(uid,date,message) VALUES('$uid','$date','$message')"; 

    $result = $mysqli-> query($sql); 
    } 
} 
function getComments($mysqli){ 
    $sql = "SELECT * FROM comments ORDER BY date DESC "; 
    $result = $mysqli->query($sql); 
    while ($row = $result->fetch_assoc()) { 
     echo "<div class='comment-box' ><p>"; 
     echo $row['uid']."<br><br>"; 
     echo $row['date']."<br><br>"; 
     echo nl2br($row['message']); 
     echo "<p></div>"; 
    } 
} 

、ここで出力のためのコードであり、ここで

<?php 

echo " 
    <div align='center'> 
     <form method='POST' action='".setComments($mysqli)."'> 
     <input type='hidden' name='uid' value='Anwer'> 
     <input type='hidden' name='date' value='".date('Y-m-d H:i:s')."'> 
     <textarea name='message'></textarea> 
     <br> 
     <button type='submit' name='commentSubmit' > Comment</button> 
    </form> 
    </div>" 
    ; 
    getComments($mysqli); 

    ?> 
+0

@ slevy1助けてください –

+0

あなたはHTMLフォームアクションとして機能を使用しています。これは、この機能がトリガーされたことを意味します。フォームポストイベントの後にこの関数を使用する必要があります。 –

+0

@MehmetSoylu brother私は理解できませんでした:(説明してください。 –

答えて

1

を提出する問題です。条件なしで実行時にsave関数を呼び出しています。一例として、

<?php 
function setComments($mysqli, $postArr){ 
    $uid= $postArr['uid']; 
    $date= $postArr['date']; 
    $message= $postArr['message']; 
    $sql="INSERT INTO comments(uid,date,message) 
      VALUES('$uid','$date','$message')"; 
    $result = $mysqli-> query($sql); 
} 

// I'm calling save function only for submit event 

if (!empty($_POST['commentSubmit'])) { 
    setComments($mysqli, $_POST); 
} 

// For your HTML code; 

echo "<div align='center'> 
     <form method='POST' action=''> 
      <input type='hidden' name='uid' value='Anwer'> 
      <input type='hidden' name='date' value='".date('Y-m-d H:i:s')."'> 
      <textarea name='message'></textarea> 
      <br> 
      <button type='submit' name='commentSubmit'> Comment</button> 
     </form> 
    </div>"; 

getComments($mysqli); 
?> 
関連する問題