¿Cómo contar el valor total del botón de radio dentro de la misma página y pasar a otro archivo php? El total se contará en esta página y puedo obtener el total del archivo answer.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
Darcy 9 may. 2016 a las 00:32

3 respuestas

La mejor respuesta

Sugiero usar una matriz para contar sus valores.

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

Esto dará como resultado que $_POST['q'] sea una matriz. Ahora puedes hacer:

echo "The total amount is ".array_sum($_POST['q']);
2
Peter 8 may. 2016 a las 21:57

Usar jQuery es fácil, solo recorre las entradas y calcule los valores. Tenga en cuenta que le di al formulario un Id para que pueda ser dirigido directamente si tiene otro formulario. El total se puede pasar a su otra página, ya sea a través de AJAX o usando un formulario HTML estándar como campo oculto. Alternativamente, dado que este es un formulario y ya lo está pasando a una página PHP, simplemente puede enviar el formulario y contar las variables $ _POST en el otro lado.

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

Versión comentada para el 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
    });
1
gavgrif 8 may. 2016 a las 21:55

No necesitas jquery para esto. Agregue una clase a sus botones de radio para que podamos consultarlos sin correr el riesgo de obtener otros elementos en la página, algo como "my-radio"

Esta javascript te dará la suma:

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
Salomao Rodrigues 8 may. 2016 a las 22:07