2016-12-17 1 views
0

は、私が作ったコードです:私はフォームで何も入力しないとき、私は、フォームにテキストを入力し、検証、ページ表示sum=1をクリックするとPHP:送信後に変数が再ロードされないのはなぜですか?ここ

<form method="post" action="test.php"> 
<input type="text" name="name" placeholder="name"/><br /> 
<input type="submit" value="Validate" /> 
</form> 
<?php 
$sum=0; 
if(isset($_POST['name'])){ 
    $sum+=1; 
} 
echo "sum = $sum"; 
?> 

が、この後、および[Validate]をクリックすると、ページにはsum=1と表示されます。

2つの検証の間に変数$ sumがリロードされないのはなぜですか?それを脱出する方法はありますか?

おかげ

+1

これは、数行前に0にするのが難しいためです。スクリプトは常に実行され、if文で始まっていません – frlan

答えて

0

もう一つの方法は、あなたのクライアントはあなたのページの上に作られた要求をチェックするだろうしなければなりません。したがって、単純なリフレッシュ(フォームのリフレッシュではない)の場合は、GETリクエストであるため、変数をインクリメントしないでください。フォームが送信されている場合は、データをインクリメントする。

クライアントが入力テキストを埋め込んだフォームを送信している場合は、値を増やすことができます。 すべての場合、値はゼロのままでなければなりません。

<form method="post" action="test.php"> 

    <input type="text" name="name" placeholder="name"/><br /> 
    <input type="submit" value="Validate" /> 

</form> 

<?php 

    $sum=0; 

    if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['name']) && !empty($_POST['name'])) 
    { 
     $sum++; /* strictly equivalent to: $sum += 1; */ 
    } 

?> 

<samp>sum = <?php echo $sum; ?></samp> 
1

これはこれは、$ _POST変数の存在のためisset()ので、チェックしている。この

<form method="post" action="test.php"> 
<input type="text" name="name" placeholder="name"/><br /> 
<input type="submit" name="submit" value="Validate" /> 
</form> 
<?php 
$sum=0; 
if(isset($_POST['submit'])){ 
    $sum+=1; 
} 
echo "sum = $sum"; 
?> 
+0

私はそうは思わないでしょう。 – frlan

+0

投票の理由を知ることはできますか? – Akshay

+0

私は自分自身を元に戻す必要があります。間違った質問を理解した – frlan

0

を解決します。あなたのケースでは、$ _POST変数が存在し、空の文字列値を持っています。

isset()!empty()に変更すると、コードは正常に機能します。 empty()機能hereについて

<form method="post" action="test.php"> 

<input type="text" name="name" placeholder="name"/><br /> 


<input type="submit" value="Validate" /> 
</form> 


<?php 

$sum=0; 

if(!empty($_POST['name'])){ 
    $sum+=1; 
} 

echo "sum = $sum"; 

?> 

より。

1

を試してみて、問題

<?php 
$sum=0; 
if(isset($_POST['name']) && $_POST['name'] != ''){ 
    $sum+=1; 
} 
echo "sum = $sum"; 
?> 
0

あなたは以下試すことができます。

if(isset($_POST['name']) && strlen($_POST['name'])>0){ 
$sum+=1; 
0

あなたは、変数$和 に1を追加し、コードを持っていますが、文が名前フィールドに基づいている場合、あなたの渡されます。 名前フィールドにデータが含まれていない場合。 ...テキスト入力があるかどうかに関係なく、名前フィールドが渡されている限り、コードには が追加されました。

また、変数を再割り当てしてリセットする必要があります。 は+ =ちょうど=

 <form method="post" action="test.php"> 


    //----------------------------- add empty value to input ------------ 
    <input type="text" name="name" value="" placeholder="name"/><br /> 


    <input type="submit" value="Validate" /> 
    </form> 


    <?php 

    $sum=0; 

    if(isset($_POST['name'])){ 
     $sum=1; 
    } 

    echo "sum = $sum"; 

    ?> 
関連する問題