2011-12-07 72 views
9

我正在使用php。我想知道如何測試一個單選按鈕是否被選中並獲取值?我可以測試單選按鈕是否被選中,但我無法獲得該值。 我創建了一個按鈕來測試我的表單。首先,我選擇一個單選按鈕,然後點擊按鈕,它必須顯示一條消息,說明我選擇了哪個值並將此值放入一個變量中。爲了測試一個單選按鈕被選中,我沒有這樣的:Php - 測試是否選擇單選按鈕並獲取值

$selected_radio=$_POST['SINGLE_' . $question->id . $multi_name_adjust . '']; 
if ($selected_radio = 'checked'){} 

感謝

+2

僅將選定的單選按鈕(和複選框)發送到服務器。如果未選中,該名稱將不在'$ _POST'數組中。 –

+0

你可以在發送給php之前使用javascript來驗證表單,或者使用所有單選按鈕的值創建隱藏輸入,然後比較並解僱所選的一個... –

+0

你的if語句總是等於'checked'的原因是因爲的單一=在條件 –

回答

33

這很簡單,看看下面的代碼:

形式:

<form action="result.php" method="post"> 
    Answer 1 <input type="radio" name="ans" value="ans1" /><br /> 
    Answer 2 <input type="radio" name="ans" value="ans2" /><br /> 
    Answer 3 <input type="radio" name="ans" value="ans3" /><br /> 
    Answer 4 <input type="radio" name="ans" value="ans4" /><br /> 
    <input type="submit" value="submit" /> 
</form> 

PHP代碼:

<?php 

$answer = $_POST['ans']; 
if ($answer == "ans1") {   
    echo 'Correct';  
} 
else { 
    echo 'Incorrect'; 
}   
?> 
+0

感謝您的幫助。是否可以通過動態獲取值而不是在代碼中輸入值?我希望當用戶選擇一個單選按鈕時,我可以獲取與此單選按鈕相對應的值,但是可以動態獲取。再次感謝:) – user1073001

+0

請添加一些代碼/更多信息你的意思。不明白你想要達到什麼,用上面的代碼得到與你選擇的單選按鈕相對應的值(但看起來你需要別的東西?) –

+0

例如,你做了(如果$ answer == ans1) 。ans1是值,但你必須把它放在代碼中。我想用dynamique值替換ans1。因爲用戶可以通過界面創建表單,所以他們爲每個單選按鈕選擇其值。如果他們將單選按鈕的值更改爲ans90而不是ans1,那麼我必須修改代碼才能考慮:(如果answer == ans90)。這就是我想要的。可能嗎?謝謝 – user1073001

1
<?php 
if (isset($_POST['submit']) and ! empty($_POST['submit'])) { 
    if (isset($_POST['radio'])) { 
     $radio_input = $_POST['radio']; 
     echo $radio_input; 
    } 
} else { 

} 
?> 
<form action="radio.php" method="post"> 
    <input type="radio" name="radio" value="v1"/> 
    <input type="radio" name="radio" value="v2"/> 
    <input type="radio" name="radio" value="v3"/> 
    <input type="radio" name="radio" value="v4"/> 
    <input type="radio" name="radio" value="v5"/> 
    <input type= "submit" name="submit"value="submit"/> 
</form> 
+0

你可以添加更多的解釋嗎? – jml

+0

好的,首先你必須注意到輸入標籤中的name屬性是php和其他服務器端語言用來獲得用戶輸入的信息。所以我用來給提交按鈕一個名稱屬性和值。通過這樣做,我知道何時點擊提交按鈕。這就是我說的代碼。 if(isset($ _ POST ['submit'])檢查在這種情況下任何輸入是否具有提交的值是提交按鈕,因此如果沒有單擊提交按鈕,php端將不會被執行。嵌套if(isset($ _ POST ['radio']))檢查是否有任何單選按鈕被選中 – Ezugudor

-1

我的表格:

<form method="post" action="radio.php"> 
    select your gender: 
    <input type="radio" name="radioGender" value="female"> 
    <input type="radio" name="radioGender" value="male"> 
    <input type="submit" name="btnSubmit" value="submit"> 
</form> 

我的PHP:

<?php 
     if (isset($_POST["btnSubmit"])) { 
     if (isset($_POST["radioGender"])) { 
     $answer = $_POST['radioGender']; 
      if ($answer == "female") { 
       echo "female"; 
      } else { 
       echo "male"; 
      }  
     }else{ 
      echo "please select your gender"; 
      } 
     } 
    ?> 
+0

在php中,我們首先檢查提交按鈕是否設置爲true,然後檢查是否有單選按鈕設置爲true或不,如果真的,那麼做一些事情.... –

0

我建議你做它通過GET請求: 例如,index.html的:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<form action="result.php" method="post"> 
    Answer 1 <input type="radio" name="ans" value="ans1" /><br /> 
    Answer 2 <input type="radio" name="ans" value="ans2" /><br /> 
    Answer 3 <input type="radio" name="ans" value="ans3" /><br /> 
    Answer 4 <input type="radio" name="ans" value="ans4" /><br /> 
    <input type="button" value="submit" onclick="sendPost()" /> 
</form> 
<script type="text/javascript"> 
    function sendPost(){ 
     var value = $('input[name="ans"]:checked').val(); 
     window.location.href = "sendpost.php?ans="+value; 
    }; 
</script> 

這是sendpost.php:

<?php 
if(isset($_GET["ans"]) AND !empty($_GET["ans"])){ 
    echo $_GET["ans"]; 
} 
?> 
1

看看這段代碼

<form action="result.php" method="post"> 
Answer 1 <input type="radio" name="ans" value="ans1" /><br /> 
Answer 2 <input type="radio" name="ans" value="ans2" /><br /> 
Answer 3 <input type="radio" name="ans" value="ans3" /><br /> 
Answer 4 <input type="radio" name="ans" value="ans4" /><br /> 
<input type="submit" value="submit" /> 
</form> 

PHP

<?php 
if(isset($_POST['submit'])){ 
if(isset($_POST['ans'])){ 
echo "This is the value you are selected".$_POST['ans'];   
}   
} 
?> 
2

非常更有效的方式在PHP來做到這一點:

<form action="#" method="post"> 
<select name="Color"> 
<option value="Red">Red</option> 
<option value="Green">Green</option> 
<option value="Blue">Blue</option> 
<option value="Pink">Pink</option> 
<option value="Yellow">Yellow</option> 
</select> 
<input type="submit" name="submit" value="Get Selected Values" /> 
</form> 
<?php 
if(isset($_POST['submit'])){ 
$selected_val = $_POST['Color']; // Storing Selected Value In Variable 
echo "You have selected :" .$selected_val; // Displaying Selected Value 
} 
?> 

和複選框選擇題:

<form action="#" method="post"> 
<select name="Color[]" multiple> // Initializing Name With An Array 
<option value="Red">Red</option> 
<option value="Green">Green</option> 
<option value="Blue">Blue</option> 
<option value="Pink">Pink</option> 
<option value="Yellow">Yellow</option> 
</select> 
<input type="submit" name="submit" value="Get Selected Values" /> 
</form> 
<?php 
if(isset($_POST['submit'])){ 
// As output of $_POST['Color'] is an array we have to use foreach Loop to display individual value 
foreach ($_POST['Color'] as $select) 
{ 
echo "You have selected :" .$select; // Displaying Selected Value 
} 
?> 
2

只需簡單地使用isset($ _ POST ['radio']),以便每當我點擊任何一個單選按鈕時,被點擊的單選按鈕被設置爲該帖子。

<form method="post" action="sample.php"> 
select sex: 
<input type="radio" name="radio" value="male"> 
<input type="radio" name="radio" value="female"> 

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

<?php 

if (isset($_POST['radio'])){ 

    $Sex = $_POST['radio']; 
} 
    ?>