[英]Using codeigniter to update multiple rows
我試圖一次在Codeigniter中更新多行。 以下是我需要為每個用戶更新的字段的示例
<div class="row">
<input type="text" name="id[46][firstname]" value="">
<input type="text" name="id[46][lastname]" value="">
</div>
<div class="row">
<input type="text" name="id[48][firstname]" value="">
<input type="text" name="id[48][lastname]" value="">
</div>
我正在努力獲取要更新的值。 實際的更新語句應該不是問題,我只關心與每個用戶檢索正確的表單值。
foreach($_POST as $key => $value){
$keyparts = explode('_', $key);
if(count($keyparts) == 2){
switch ($keyparts[0]) {
case 'firstname':
$records[$keyparts[1]]->firstname = $value;
break;
case 'lastname':
$records[$keyparts[1]]->lastname = $value;
break;
default:
break;
}
}
// update statement to go here
}
HTML代碼
<div class="row">
<input type="text" name="46[firstname]" value="">
<input type="text" name="46[lastname]" value="">
</div>
<div class="row">
<input type="text" name="48[firstname]" value="">
<input type="text" name="48[lastname]" value="">
</div>
PHP代碼
$records = array();
foreach($_POST as $key => $value){
if(is_array($value))
{
foreach($value as $new_key=>$new_val)
{
$records[$key][$new_key] = $new_val;
}
}
}
問題是您不了解POST如何構建陣列。 通過上面的HTML,表單將構建以下POST數組:
array =>
[id] =>
[46] =>
[firstname] => "john"
[lastname] => "doe"
[48] =>
[firstname] => "jane"
[lastname] => "doet"
像這樣在視覺上布置數組,現在可以迭代以獲得值。 但是,我在您的代碼explode()
不懂的一件事是,為什么要使用explode()
,您打算將什么變成數組? 您可以輕松地在數據庫中迭代和更新此信息,如下所示:
$this->load->model("my_model");
$postdata = $this->input->post();
foreach($postdata['id'] as $id => $user_info){
$this->my_model->update_user($id, $user_info); // your model method should handle the update information by ID.
}
如果您確實echo "<pre>" .print_r($_POST, true)."</pre>";
在表單處理頁面上,結果應如下所示
Array
(
[id] => Array
(
[46] => Array
(
[firstname] => firstNameValue1
[lastname] => lastNameValue1
)
[48] => Array
(
[firstname] => firstNameValue2
[lastname] => lastNameValue2
)
)
)
因此,這應該可以幫助您捕獲值:
foreach($_POST['id'] as $key => $value){
$records[$key] = (object)array();
$records[$key]->firstname = $value['firstname'];
$records[$key]->lastname = $value['lastname'];
// update statement to go here
}
結果該結構:
Array
(
[46] => stdClass Object
(
[firstname] => firstNameValue1
[lastname] => lastNameValue1
)
[48] => stdClass Object
(
[firstname] => firstNameValue2
[lastname] => lastNameValue2
)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.