我在表格下面的代碼提交多個複選框不能得到笨
應用程序/視圖/ form.php的
<form action="<?php echo base_url().'admin/addMessage/'.$pd_name; ?>" method= "POST">
<div class="form-group">
<label><strong>Message Type *</strong></label>
<input type="text" class="form-control" name="msg_type" id="msg_type" placeholder="Enter Message Type" required>
</div>
<label><strong>Message Bit *</strong></label>
<div class="form-group">
<div class="checkbox">
<table class="table">
<tbody>
<tr>
<td><label> P-1 </label><input type="checkbox" checked disabled readonly /></td>
<td><label id="P17"> P-17 </label><input name="bitmsg" type="checkbox" value="P17"/></td>
<td><label id="P33"> P-33 </label><input name="bitmsg" type="checkbox" value="P33" /></td>
<td><label id="P49"> P-49 </label><input name="bitmsg" type="checkbox" value="P49"/></td>
<td><label id="S65"> S-65 </label><input name="bitmsg" type="checkbox" value="S65" /></td>
<td><label id="S81"> S-81 </label><input name="bitmsg" type="checkbox" value="S81" /></td>
<td><label id="S97"> S-97 </label><input name="bitmsg" type="checkbox" value="S97" /></td>
<td><label id="S113"> S-113 </label><input name="bitmsg" type="checkbox" value="S113"/></td>
</tr>
</tbody>
</table>
</div>
</div>
<button type="button" class="btn btn-default" id="reset" data-dismiss="modal">Cancel</button>
<button type="submit" value="submit" class="btn btn-primary"> Add New Message Type</button>
</form>
應用/控制器/ admin.php的多個複選框值
public function addMessage($pdID)
{
$this->load->helper('form');
$this->load->library('form_validation');
$this->form_validation->set_rules('msg_type', 'MessageType', 'required');
if ($this->form_validation->run() == FALSE)
{
echo '<script>alert("Please Select Valid Message Type"); window.history.back();</script>';
}
else
{
$this->model_general->set_message($pdID);
}
}
應用程序/模型/ Model_general.php
function set_message()
{
$this->load->helper('url');
$this->load->helper('form');
//set default values
$dbEntry = array(
'P17' => 0,'P33' => 0,'P49' => 0,'S65' => 0,'S81' => 0,'S97' => 0,'S113' => 0
);
$postData = $this->input->post();
foreach ($postData as $key => &$v) {
if (array_key_exists($key, $dbEntry)) {
$dbEntry[$key] = 1;
}
elseif ($key == 'bitmsg') {
$dbEntry[$v] = 1;
}
else {
$dbEntry[$key] = $v;
}
}
$this->db->insert('msg_format', $dbEntry);
}
我沒有選擇所有複選框..但$ postData只返回我檢查的最後一個複選框。例如:
$ POSTDATA回報 「MsgType1,0,0,0,0,0,0,1」 < < =如果選擇所有
$ POSTDATA回報「MsgType2,0,0,0,0, 0,1,0" < < =如果除了S-113我選擇所有
東西失蹤,我找不到它..:/
首先..非常感謝你爲你詳細解釋..僅供參考..還有其他字段需要插入(我沒有在代碼中顯示),還有其他鍵需要考慮,所以第一種替代方法不適用於我的html表單。我試圖使用'bitmsg []'數組',但我不能使用'$ this-> input-> post(「bitmsg」);'因爲它只會返回bitmsg []的值,但不會返回其他輸入 - >後值。我將嘗試其他建議..稍後將在此處更新.. – Julie
如果沒有其他數據的上下文,則可能是很難讓人有意義地回答。如果你想迭代所有的post數據並使用'bitmsg []'方法,你可以在你的$ postData foreach中有一個if來檢查$ key是否是'bitmsg',並且在該數組上做一個嵌套的foreach,因爲現在它在返回後的內容中將是一個鍵下的數組。 – caseyh
我在'$ dbEntry'中將'name'改爲'$ keys' ..它可以工作..但我需要在'set_message()'中添加額外的檢查,因爲它會影響我的表單中的其他字段。我的表單包含混合類型的輸入包括複選框,收音機,下拉選項和正常輸入文本。一些'$ key'使用相同的'name' ..所以我需要相應地改變它。但是,以及..只要它爲我的多複選框工作..我不介意改變.. :)再次感謝您的建議.. – Julie