web-dev-qa-db-fra.com

Comment obtenir la valeur d'un bouton radio en PHP?

J'ai créé un site Web de base qui oblige l'utilisateur à sélectionner un bouton radio. Je souhaite qu'un fichier PHP récupère la valeur du bouton radio choisi et réponde en conséquence, mais le fichier ne produit actuellement aucune sortie. Quel est le problème avec le code que j'utilise maintenant? Pourquoi mon fichier PHP ne peut-il pas récupérer correctement la valeur du bouton radio?

Index.html:

<form method="POST">
    <input type="radio" name="MyRadio" value="First" checked>First<br> //This one is automatically checked when the user opens the page
    <input type="radio" name="MyRadio" value="Second">Second
</form>
<form method="GET" action="Result.php">
    <input type="submit" value="Result" name="Result"> //This button opens Result.php
</form>

Result.php:

<?php
$radioVal = $_POST["MyRadio"];

if($radioVal == "First")
{
    echo("You chose the first button. Good choice. :D");
}
else if ($radioVal == "Second")
{
    echo("Second, eh?");
}
?>
10
user4721723

Vous utilisez deux formulaires distincts pour vos éléments d’entrée généraux et l’un consistant en un bouton de soumission.

Incluez le bouton de soumission dans le premier formulaire et cela devrait fonctionner correctement:

<form method="POST" action="Result.php">
    <input type="radio" name="MyRadio" value="First" checked>First<br> //This one is automatically checked when the user opens the page
    <input type="radio" name="MyRadio" value="Second">Second
    <input type="submit" value="Result" name="Result"> //This button opens Result.php
</form>
11
tworabbits
<form method="post">
<input type="radio" name="MyRadio" value="First" checked>First<br> <!--This one is automatically checked when the user opens the page-->
<input type="radio" name="MyRadio" value="Second">Second
</br>

<input type="submit" value="Result" name="Result"> <!--This button opens Result.php-->
</form >

Dans mon code php, vous pouvez voir que la fonction de isset() qui le définit lorsque votre code PHP est exécuté. Dans votre code, vous mentionnez $radioVal = $_POST["MyRadio"]; où MyRadio est un index non défini pour PHP. Lorsque nous soumettons le formulaire, appelez le code PHP sans délai et utilisez également le double formulaire. Ceci est faux pour ce code.

    <?php
if (isset($_POST['Result']))
  {
$radioVal = $_POST["MyRadio"];

if($radioVal == "First")
{
echo("You chose the first button. Good choice. :D");
}
else if ($radioVal == "Second")
{
echo("Second, eh?");
}
}
?>
3

C'est le formulaire qui est soumis. Il a un attribut d'action qui le dirige vers Result.php.

<form method="GET" action="Result.php">
    <input type="submit" value="Result" name="Result"> //This button opens Result.php
</form>

Pour que vous obteniez les données souhaitées dans Results.php, vous devez ajouter les boutons radio à ce formulaire.

<form method="POST" action="Result.php">
    <input type="radio" name="MyRadio" value="First" checked>First<br> 
    <input type="radio" name="MyRadio" value="Second">Second
    <input type="submit" value="Result" name="Result">
</form>

Vous devrez également changer votre méthode en POST si vous voulez utiliser le superglobal $ _POST.

$radioVal = $_POST["MyRadio"];
0
Dallin

Tout d'abord, vous le faites un peu mal. Vous utilisez deux formulaires pour effectuer la tâche. Laissez-moi vous dire comment vous pouvez le faire.

index.html

<form action= "result.php" method="POST">
<input type="radio" name="MyRadio" value="First" checked>First<br> <!--This one is automatically checked when the user opens the page -->
<input type="radio" name="MyRadio" value="Second">Second
<br/>
<input type="submit" value="Result" name="Result"> <!--//This button opens Result.php -->

result.php

    <?php 
        echo $_POST["MyRadio];
        // on new page you will get "First" or "Second", depending on what you have selected on html page
?>
0
Amit Mhaske

Vous utilisez deux formulaires distincts pour le code html, ce qui signifie que le premier formulaire n'est pas soumis lorsque vous appuyez sur le bouton. 

Vous ne devriez pas avoir besoin de changer le code PHP dans result.php, mais vous devriez idéalement utiliser un seul formulaire.

<form method="POST">
    <input type="radio" name="MyRadio" value="First" checked>First<br> //This one is automatically checked when the user opens the page
    <input type="radio" name="MyRadio" value="Second">Second
    <input type="submit" value="Result" name="Result"> //This button opens Result.php
</form>
0
Rishi