2013-05-20 88 views
0

我希望一個表單在發生錯誤時記住用戶的輸入。 我得到這個使用使用文本輸入的工作:記住表單複選框的值

echo "<input id=\"quote_square\" type=\"text\" name=\"square\" placeholder=\"Square\" value=\"". $_POST['square'] . "\">"; 

對於複選框,我不能得到這個工作。我沒有找到如何可以做到這一點的例子:

<input type="checkbox" name="subscribe" <?php echo (isset($_POST['opdracht'])?'checked="checked"':'') ?> /> 

但我附和我的整個形式到PHP和保存複選框,輸入到一個數組:

echo "<input id=\"quote_round\" type=\"text\" name=\"round\" placeholder=\"Round\" value=\"". $_POST['round'] . "\">"; 
echo "<input id=\"quote_square\" type=\"text\" name=\"square\" placeholder=\"Square\" value=\"". $_POST['square'] . "\">"; 
echo "<label class=\"checkbox\"><input type=\"checkbox\" name=\"opdracht[]\" value=\"Blue\">Blue</label>"; 
echo "<label class=\"checkbox\"><input type=\"checkbox\" name=\"opdracht[]\" value=\"Black\">Black</label>"; 
echo "<label class=\"checkbox\"><input type=\"checkbox\" name=\"opdracht[]\" value=\"Red\">Red</label>"; 
echo "<label class=\"checkbox\"><input type=\"checkbox\" name=\"opdracht[]\" value=\"White\">White</label>"; 

任何人可以給出一個建議我如何獲得複選框來保存用戶的輸入?

+0

沒有任何理由來包裝所有的HTML的PHP​​。移除包裝並按原樣輸出HTML,然後使用您提到的代碼片段動態設置複選框。 –

回答

0

嘗試

echo "<label class=\"checkbox\"><input type=\"checkbox\" ", 
    in_array("Blue", $_POST["opdracht"])?"checked='checked' ":"", 
    "name=\"opdracht[]\" value=\"Blue\">Blue</label>"; 
+0

偉大的工程! – Chazz

0
echo '<input type="checkbox" name="subscribe"' .($yourData['opdracht']?'checked="checked"':'').' />'; 
0

試試這個:

echo isset($yourData['opdracht']) ? 'checked="checked"' : ''; 

<input type="checkbox" name="subscribe" <?php echo isset($yourData['opdracht']) ? 'checked="checked"' : ''; ?> /> 
0

你正確使用數組,我不相信。這種類型的數組引用是在您提交相同數據的多個版本時使用的。在提交表單時,數組鍵被填充,未檢查的值將不會被索引,因此最終會得到不同大小的數組,這取決於已檢查多少個框。然後分開告訴你的價值觀會產生問題。它需要是這樣的;

echo "<input id=\"quote_round\" type=\"text\" name=\"round\" placeholder=\"Round\"  value=\"". $_POST['round'] . "\">"; 
echo "<input id=\"quote_square\" type=\"text\" name=\"square\" placeholder=\"Square\" value=\"". $_POST['square'] . "\">"; 
echo "<label class=\"checkbox\"><input type=\"checkbox\" name=\"opdrachtBlue\" value=\"Blue\">Blue</label>"; 
echo "<label class=\"checkbox\"><input type=\"checkbox\" name=\"opdrachtBlack\" value=\"Black\">Black</label>"; 
echo "<label class=\"checkbox\"><input type=\"checkbox\" name=\"opdrachtRed\" value=\"Red\">Red</label>"; 
echo "<label class=\"checkbox\"><input type=\"checkbox\" name=\"opdrachtWhite\" value=\"White\">White</label>"; 

然後,您可以使用

<input type="checkbox" name="subscribe" <?php echo (isset($_POST['opdrachtRed'])?'checked="checked"':'') ?> /> 

如果複選框已被先前選擇來獲得。

+0

我使用數組的原因是通過電子郵件發送數據: foreach($ _ POST [「opdracht」] as $ value){$ opdracht。=「$ value \ n」;} – Chazz

0

試試這個

<label class="checkbox"><input type="checkbox" checked= "<?php in_array('Blue', $deep['opdracht'])?'checked' :''; ?>" value="Blue">Blue</label>