2016-05-08 22 views
0

同じページ内のラジオボタンの合計値を数え、別のPHPファイルに渡すには?合計はこのページでカウントされ、answer.phpファイルから合計を取得できます。PHPがラジオボタンの合計値を渡す

<form action="answer.php" method="POST"> 
<input type="radio" name="q1" value="1" />Yes <br /> 
<input type="radio" name="q1" value="0" />No <br /> 
<input type="radio" name="q2" value="2" />Yes <br /> 
<input type="radio" name="q2" value="0" />No <br /> 
<input type="radio" name="q3" value="3" />Yes <br /> 
<input type="radio" name="q3" value="0" />No <br /> 
<input type="submit" value="submit" name="submit"/> 
</form> 
+0

あなたはAJAXを使うことができますか? –

+0

私にコードを教えてもらえますか? – Darcy

+0

あなたは1を選択するだけなので、なぜ非選択の値が必要ですか? –

答えて

2

私が使用することをお勧めあなたの値を数えるための配列。

<input type="radio" name="q[]" value="2" /> 
<input type="radio" name="q[]" value="3" /> 
<input type="radio" name="q[]" value="4" /> 
<input type="radio" name="q[]" value="5" /> 

この結果、$_POST['q']が配列になります。今すぐできる:

echo "The total amount is ".array_sum($_POST['q']); 
1

jQueryを使用することは簡単です。入力を繰り返し、値を集計するだけです。あなたが他のフォームを持っているならば、私はIDをフォームに与えて、それを直接ターゲットにすることができます。合計はあなたの他のページに渡すことができます - AJAX経由または標準HTMLフォームを隠しフィールドとして使用します。あるいは、これはフォームなので、すでにPHPページに渡しています。フォームを送信し、反対側の$ _POST変数を集計するだけです。

$('#testForm input').on('change', function() { 
 
    var total=0; 
 
    $('input[type=radio]:checked', '#testForm').each(function(){ 
 
    total += parseInt($(this).val()); 
 
    }) 
 
    alert(total) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id="testForm" action="answer.php" method="POST"> 
 
<input type="radio" name="q1" value="1" />Yes <br /> 
 
<input type="radio" name="q1" value="0" />No <br /> 
 
<input type="radio" name="q2" value="2" />Yes <br /> 
 
<input type="radio" name="q2" value="0" />No <br /> 
 
<input type="radio" name="q3" value="3" />Yes <br /> 
 
<input type="radio" name="q3" value="0" />No <br /> 
 
<input type="submit" value="submit" name="submit"/> 
 
</form>

OPのバージョンをコメント:

$('#testForm input').on('change', function() {//triggers the function on any change in the form 
     var total=0;//initialises the total at 0 so that each round ottallying up resets before the tally 
     $('input[type=radio]:checked', '#testForm').each(function(){//selects each input in the #testForm that is checked 
     total += parseInt($(this).val());//adds the value of each checked radio button to the tally 
     }) 
     alert(total); //alerts the final tally after all iterations 
    }); 
+0

ありがとう。それは動作します – Darcy

+0

乾杯 - 幸せに役立つ - 私はちょうど答えの一番下にコメントのバージョンを追加したので、各行で何が起こっているか見ることができます。ハッピーコーディング:)) – gavgrif

+0

何かのjQueryはとてもシンプル? –

1

あなたは、このためのjQueryを必要としません。私たちは、ページ内の他の要素を取得危険にさらすことなく、それらを照会することができますのでこのJavaScriptは、あなたの合計を取得します

、あなたのラジオボタンに「私のラジオ」のようなものをクラスを追加します。

function getRadioButtonsSum(radioClass) { 
    var radioBtns = document.querySelectorAll(radioClass); 

    var count = 0; 
    var i; 

    for (i = 0; i < radioBtns.length; i += 1) { 
    if (radioBtns[i].checked) { 
     count += +radioBtns[i].value; 
    } 
    } 
    return count; 
} 

getRadioButtonsSum('.my-radio'); 
+1

はこの行の2番目の+ a typoですか?... count + = + radioBtns [i] .value; ... – gavgrif

+0

@gavgrifいいえ、値は文字列であるため、int型にキャストする必要があります。すべての文字列を連結してください(6ではなく "010203")。 –

+0

oh - ok - 私はそのためにparseInt()を使用しました。私は、同じ効果を達成するためにプラスを置くことについて知らなかった。ありがとう – gavgrif

関連する問題