I私のフォームに次のコードは、複数のチェックボックスにはCodeIgniterの
アプリケーション/ビュー/ 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
何かを除いて選択して、私はそれを見つけることができなかった場合..:/
を第一に...あなたの詳細な説明のためにどうもありがとうございました..:
$dbEntry
と$postData
を交換に関する同じノートはここにも適用されます。だからあなたのモデルforeachループは次のようになります私が挿入する必要がある他のフィールドがあります(これはコードに表示されませんでした)。そして、私が考慮する必要がある他のキーがあります。そのため、最初の代替は、私のHTMLフォームのオプションではありません。私も 'bitmsg []'の配列を使用しようとしましたが、 '$ this-> input-> post( "bitmsg");を使用することはできません。これはbitmsg []の値を返すだけなので、他のinput-> post値は返しません。私はあなたの他の提案を試してみましょう。後でここで更新します。 – Julie
他のデータが何であるかのコンテキストがなければ、誰かが意味を持って答えるのは難しいです。すべてのポストデータを繰り返し処理し、 'bitmsg []'メソッドを使いたいならば、$ postData foreach内に$ keyが 'bitmsg'であるかどうかをチェックし、その配列のネストされたforeachを行うことができます。ポストリターンの中のその一つのキーの下にある値の配列です。 – caseyh
'$ dbEntry'の' $ keys'に 'name'を変更しました。それは動作しますが、' set_message() 'に特別なチェックを追加する必要があります。フォームには、チェックボックス、ラジオ、ドロップダウンオプション、および通常の入力テキストを含む入力のミックスタイプが含まれています。 '$ key'の中には同じ' name'を使っているものがあります。それに応じてそれを変更する必要があります。しかし、まあ..それは私のマルチチェックボックスのために働いていた限り..私は変更気にしない.. :)あなたの助言のために再びありがとう.. – Julie