2016-03-31 34 views
0

我得到這個形式:如何從表單信息,以複選框的PHP

<form name="formx" id="formx" action="var.php" method="POST"> 
    <input type="checkbox" name="f_check1"> Check 1 
    <input type="checkbox" name="f_check2">Check 2 
    <input name="f_register" value="Register" type="submit"> 
</form> 

而且在var.php文件我有:

<?php 
    if($_POST['f_register'] == "Register") { 
    $check1 = $_POST['f_check1']; 
    $check2 = $_POST['f_check2']; 
    } 

echo $check1. "<br>" ; 
echo $check2; 
?> 

當我填寫表格和去var.php,如果複選框打開,我只會得到結果,並且我希望它在選中時顯示「true」,否則顯示爲「false」。

P.S:我使用XAMPP運行網站。

+1

可以在'isset()'中使用簡寫語法,如三元組。 –

+0

像使用'if(isset($ _ POST [「f_check1」])){ $ check 1 =「true」; } else { $ check 1 =「false」; }'? – Berna

+0

這不是簡寫,但你可以使用它,當然。 –

回答

1

此塊:

<?php 
    if($_POST['f_register'] == "Register") { 
    $check1 = isset($_POST['f_check1']); 
    $check2 = isset($_POST['f_check2']); 
    } 

if($check1) echo '<br>check1 true'; 
else echo 'check1 false'; 
if($check2) echo '<br>check2 true'; 
else echo '<br>check2 false'; 
?> 
+0

這有效,謝謝 – Berna

+1

當' isset'已經返回一個布爾值。 – GGG

1
$check1 = isset($_POST['f_check1']); 
$check2 = isset($_POST['f_check2']); 
+1

嗯......這是行不通的。它總是被視爲正在設置。 –

+0

是的,這沒有工作 – Berna

+0

@ Fred-ii-這應該可行。如果複選框被選中,它會發送'on'值。否則,他們根本不會被髮送到服務器。 –

1

未經檢查的複選框不會發送到服務器。所以,你可以考慮與:

$check1 = isset($_POST['f_check1']) ? true:false; 
$check2 = isset($_POST['f_check2']) ? true:false; 
+0

這沒有工作.. – Berna

+0

它怎麼樣不起作用?當價值錯誤時,你是否期待看到什麼? PHP不迴應任何錯誤。 – j08691

+1

當'isset'已經返回一個布爾值時,不需要使用三元運算符。 – GGG

1

試試這個?

<form name="formx" id="formx" action="var.php" method="POST"> 
<input type="checkbox" name="f_check1"> Check 1 
<input type="hidden" name="f_check1" value="0" /> 
<input type="checkbox" name="f_check2">Check 2 
<input type="hidden" name="f_check2" value="0" /> 
<input name="f_register" value="Register" type="submit"> 
</form> 

的要求編輯:如果未選中該複選框

具有相同名稱的隱藏字段將被傳遞。

+1

這將是最有用的答案,如果它解釋爲什麼它按預期工作。請添加一個說明,當沒有設置複選框時,讓這些字段執行回退。 –