2016-08-18 5 views
1

を提出した後、これは私が現在持っているコードの簡易版である:PHPが印刷され続ける/エコー値

<!DOCTYPE html> 
<html> 
    <head> 
    </head> 
    <body> 
     <form name="form" action="" method="post"> 
      <input name="button1" type="submit" value="Submit"> 
     </form> 
     <hr> 
    </body> 
</html> 
<?php 
    if (isset($_POST['button1'])){ 
     echo 'Test'; 
    } 
?> 

と、このコードの出力Test私は一度ボタンをクリックして、私はそれ別の時間をクリックすると、最初のエコーをクリアして再印刷するので、出力はまだ1つのTestになります。最初のエコーを消去しないようにするPHPの方法はありますか?出力はTestTestになりますか?

+0

@apokryfosをsugestionsこれは移動するための方法ですか?私はかなりPHPに新しいと私はこれのための関数があるだろうと思った? – user2988879

+0

リクエスト間の情報を永続させることなく、デフォルトではPHPはリクエストごとに情報を永続的に保持しない限り(セッション、データベース、キャッシュストアなど)、リクエストごとに終了します –

答えて

3

ウェブはステートレスです。送信をクリックするたびに、(サーバーに関する限り)まったく新しいユーザーからの新しい要求が開始されます。 Webサーバーは、以前にリクエストしたことを覚えていない(または気にしません)。送信ボタンをクリックすると、新しいリクエストが作成され、最初からページが読み込まれます。

PHPには、セッションを使用して状態情報を維持する方法があります。セッションは、PHPのやり方です。「ねえ、私はこの人が誰なのか知っています。私は以前見たことがあります。

セッションを使用するには、次のようにします。あなたのセッションが この5月に開始されていない場合は、トラップ潜在的なエラーをするにしてもよい:あなたは、私はこのコードをテストしていませんが、それは

NOTEを動作するはずsession variable

<?php 

session_start(); 

     if (isset($_POST['button1'])){ 
      if(isset($_SESSION['myvar'])){ 
       $_SESSION['myvar'] .= 'Test'; 
      }else { 
       $_SESSION['myvar'] = 'Test'; 
      } 
      echo $_SESSION['myvar']; 
     } 
    ?> 
<!DOCTYPE html> 
<html> 
    <head> 
    </head> 
    <body> 
     <form name="form" action="" method="post"> 
      <input name="button1" type="submit" value="Submit"> 
     </form> 
     <hr> 
    </body> 
</html> 

を設定することができ

<?php 
session_start(); 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
    </head> 
    <body> 
     <form name="form" action="" method="post"> 
      <input name="button1" type="submit" value="Submit"> 
     </form> 
     <hr> 
    </body> 
</html> 
<?php 

    if (isset($_POST['button1'])){ 
     $_SESSION["counter"] = (isset($_SESSION["counter"])?$_SESSION["counter"]:0) + 1; 
     for ($i = 0;$i < $_SESSION["counter"];$i++) 
      echo 'Test'; 
    } 
?> 
+0

あなたは答えを入れたいと思っていました。セッションを使用するようにあなたのコメントを削除したことに気がついたとき、私の "Spidey sense"にはちょっとした笑いがあります* Edit:セッションを破棄するオプションまた、リセットとして。 –

+0

@apokryfosはそれに私を打ち負かした。私はほぼduiplicate答えを投稿しました:) – happymacarts

+1

これは、私よりも良い説明を与えるので、この回答は受け入れる必要があります – happymacarts

2

元の質問に答えてください。ただし、最終目標が何であるかに応じて、より良い解決策があるかもしれません。

HTMLマークアップ EDITED上記上記のPHPコードが含まれていることを確認してください:組み込まフレッドは

+1

オープンphpタグの前に先頭の空白を取り除きたいかもしれません。見出しを送信する可能性があります。 –

+1

あなたはまた、最初のクリックで 'Notice:Undefined index:myvar in ...'を投げるので、あなたの答えを修正する必要があります。 –

関連する問題