2015-12-15 330 views
-2

我在我的網站中有一個表單域,我在我的數據庫中使用了一個表。我使用複選框來輸入真/假值。在我的情況下,如果未選中,我的複選框會發出一個空字符串。鏈接如果其他語句

我做了一個if else語句來確保空字符串是布爾值。然而,我的if else語句只適用於第一個($ ringe)。最後兩個($ halskaeder和$ armbaand)似乎不起作用,因爲我的數據庫沒有註冊任何輸入。

我猜我if else語句有缺陷或語法錯誤,我只是太無望在PHP找出什麼是錯的。

if ($_REQUEST['ringe'] == ""){ 
$ringe = '0'; 
} 
else { 
$ringe = '1'; 
} 


if ($_REQUEST['halskaeder'] == ""){ 
$halskaeder = '0'; 
} 
else { 
$halskaeder = '1'; 
} 


if ($_REQUEST['armbaand'] == ""){ 
$armbaand = '0'; 
} 
else { 
$armbaand = '1'; 
} 

任何幫助,高度讚賞!

更新!

所以我意識到我的問題是,在html中未經檢查的複選框不發送和信號。所以我不得不改變,不管怎樣

+2

在您的問題中發佈您的HTML表單。 –

+2

您可以使用[ternary operator](http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary)? '$ ringe =(!empty($ _ REQUEST ['ringe']))? 1:0;' – Epodax

回答

2

AFAIK如果沒有選中複選框,它不會被髮送。你可以這樣做:

$default = array(
    'ringe' => 0, 
    'halskaeder' => 0, 
    'armbaand' => 0, 
); 

$myFormParams = array_replace($default, $_REQUEST); 

var_dump($myFormParams); 
0

幾點建議......如果您發佈的形式,我可以添加更多的..

1)修剪空白從用戶輸入(除非你需要它)

$input = trim($_REQUEST['user_input']); 

2)在這種情況下,您應該使用empty(),因爲此函數檢查變量是否存在,以及是否爲空,以及是否爲虛假。一石三鳥可以殺死三隻鳥。 3)使用三元組。這是你正在做的事情的簡寫。

$input = trim($_REQUEST['user_input']); 
$input = empty($input) ? "0" : "1"; 
-1

我找到了答案。我的問題不是php代碼,但複選框未選中時不發送任何輸入。解決方法是簡單地把一個隱藏的輸入字段發送一個虛假的信號,不管是什麼。你給它與你的真實複選框相同的名稱屬性,當選中它時將覆蓋它。

看起來是這樣的:

<input type="hidden" name="ringe" value="0" /><input type="checkbox" name="ringe" value="1" /><p>Ringe</p> 

感謝您的幫助,但!

+0

這個解決方案花費了最少的時間,把我的PHP減少了一半。這是一個解決方案,我可以使用我對編碼語言的有限知識進行工作。它完美地解決了我的問題。我也無法得到任何其他解決方案的工作。謝謝你的清醒語氣。 –