2016-05-08 9 views
0

Wie man den Gesamtwert des Optionsfelds innerhalb der gleichen Seite zählt und an eine andere PHP-Datei übergeben? Die Summe wird auf dieser Seite gezählt und ich kann die Summe aus der Datei answer.php erhalten.PHP Pass Gesamtwert des Optionsfelds

<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

Sie könnten AJAX verwenden? –

+0

Können Sie mir den Code zeigen? – Darcy

+0

Sie wählen nur 1, also warum brauchen Sie die Werte der nicht ausgewählten? –

Antwort

2

Ich schlage vor, mit ein Array zum Zählen Ihrer Werte.

<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" /> 

Dies führt dazu, dass $_POST['q'] ein Array ist. Sie können jetzt tun:

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

Mit jQuery- ist es einfach, nur durch die Eingaben iterieren und die Werte zusammenzählen. Beachten Sie, dass ich dem Formular eine ID gegeben habe, damit es direkt auf ein anderes Formular ausgerichtet werden kann. Die Summe kann auf Ihre andere Seite übertragen werden - entweder über AJAX oder unter Verwendung eines Standard-HTML-Formulars als verstecktes Feld. Alternativ - da dies ein Formular ist und Sie es bereits an eine PHP-Seite übergeben - können Sie einfach das Formular abschicken und die $ _POST-Variablen auf der anderen Seite zusammenzählen.

$('#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>

kommentiert Version für den 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

Danke, Bruder. Es funktioniert – Darcy

+0

Prost - gerne helfen - Ich habe nur eine kommentierte Version am Ende der Antwort hinzugefügt, so dass Sie sehen können, was in jeder Zeile vor sich geht. Happy Coding :)) – gavgrif

+0

jQuery für etwas so einfaches? –

1

Sie brauchen nicht jquery dafür. Fügen Sie eine Klasse zu Ihrem Radio-Buttons, damit wir sie, ohne zu riskieren immer andere Elemente in der Seite abfragen kann, so etwas wie „my-Radio“

Dieses Javascript erhalten Sie die Summe:

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

ist der zweite + ein Tippfehler in dieser Zeile? ... count + = + radioBtns [i] .value; ... – gavgrif

+0

@ gavgrif Nein, weil der Wert eine Zeichenkette ist, muss er in int umgewandelt werden, sonst wird count sei eine Verkettung aller Strings ("010203" statt 6). –

+0

oh - ok - ich habe parseInt() dafür verwendet. Ich wusste nicht, dass ich ein Plus setzen sollte, um den gleichen Effekt zu erzielen. Danke – gavgrif

Verwandte Themen