2016-05-17 18 views
-2

何かが私のコードで上がっていますが、私は何がわかりません。私は非常に基本的な音楽ライブラリの入力フォームを作成してmySQLテーブルに保存し、そのデータを画面にも出力します。 何らかの理由で、ブラウザページを更新してデータベースに保存するたびに更新されます。誰かが私がどこに間違っているのか教えていただけますか?おかげで、ティムブラウザを更新するたびにデータベースが更新されるのはなぜですか?

<?php 
    //connect 
    $link = mysqli_connect("localhost", "my_username", "mypassword", "mydb"); 

    //create user feedback if library has been updated 
    if(isset($_POST['submit'])) { 
     $cleanartist = mysqli_real_escape_string($link, $_POST['Artist']); 
     $cleantitle = mysqli_real_escape_string($link, $_POST['Title']); 

     //create query statement 
     $sql = "INSERT INTO albums (Artist, Title) VALUES ('$cleanartist', '$cleantitle')"; 

     //run query 
     mysqli_query($link, $sql); 

     echo "Thanks, added to library"; 
    } 

    mysqli_close($link); 
?> 


<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title>Music Library</title> 
    </head> 
    <body> 
     <form class="" action="music_library.php" method="post"> 
      <p>Add Artist<input type="text" name="Artist"></p> 
      <p>Album Title<input type"text" name="Title"></p> 
      <input type="submit" name="submit" value="submit"> 
     </form> 

     <?php 

      //connect to db 
      $link = mysqli_connect("localhost", "my_username", "mypassword", "mydb"); 

      //create query statement 
      $qry = "SELECT * FROM albums"; 

      //run query and store result in variable 
      $result = mysqli_query($link, $qry); 

      //loop through returned data and output to screen 
      while($row = mysqli_fetch_assoc($result)) { 
       echo '<tr>'; 
       foreach($row as $field) { 
        echo '<td>' . $field . '</td>' . '</br>'; 
       } 
      } 

      mysqli_close($link); 

     ?> 

    </body> 
</html> 
+0

ページを更新する理由は、ブラウザがあなたのような何か尋ねる「データが再送されますが、あなたはよろしいですか?」このウィンドウで何をクリックしますか? –

+0

更新すると、フォームデータを再送信しますか? –

+0

あなたが入力した値を含む変数をデータに入力したら、ブラウザをリフレッシュするたびに以前に入力した値と同じ値がデータベースに挿入されます...私の悪い英語...申し訳ありませんが、 –

答えて

-1

あなたはこれらの2つの答え

PHP Redirect to another page after form submit

PHP header() redirect with POST variables

の1にいくつかのヒントを見つけることができます基本的に、あなたは操作がsuccesfullのときheader("Location: music_library.php");を呼び出す必要があります。

+0

Lashane - データが再送信される可能性があることを示しています。 –

+0

Andy - それは何をしているのでしょうか。 –

+0

Sajjad - フォームを送信する前にif文の外に変数を設定することを意味しますか? –

0

データを送信する前にページを更新すると、再び送信されます。あなたはこの機能を使用してデータベースにデータを格納した後、単に解除変数でき :

unset($_POST['submit']); 
+0

Hossein、ありがとうmate - 私は、コードを追加しようとしましたが、それはまだ前のフォームデータ –

+0

をテスト追加ヘッダー( 'Location:music_library.php')として再送しているようです。データを挿入した後今すぐデータを追加して確認しますか? –

+0

@hosseinbarzegariあなたは冗談を言っていなければなりません。どうすれば問題を解決できますか? –

関連する問題