На этом рисунке я получаю данные, такие как loan no, partyname, coll.amt, используя date (т.е. он отображает данные в ту конкретную дату, когда я дал, из таблицы «коллекция»)
Если я ввел представительство для loan no 2, но не дал loan no 1, 3. когда я нажал ok button, представитель должен быть обновлен в этой таблице «коллекция» для точного номера и даты кредита.
Код моей модели:
public function batchinsert($data){
$session_data = $this->session->userdata('logged_in');
$data['username'] = $session_data['repname'];
$LDate = $this->input->post('CDate');
$date = str_replace('/', '-', $LDate);
$newDate = date("Y-m-d", strtotime($date));
$lno = $this->input->post("Sno");
$count = count($data['Sno']);
for($i = 0; $i<$count; $i++){
$entries2[] = array(
'receive_amt'=>$data['ramt'][$i],
);
}
$this->db->where('loanno',$lno);
$this->db->where('collection_date',$newDate);
$this->db->update_batch('collection',$entries2);
// $this->db->insert_batch('test', $entries2);
redirect('Collection_Entry','refresh');
}
Мой код контроллера:
public function Collection_Insert(){
$this->load->model('User_model');
$result = $this->User_model->batchinsert($_POST);
}
Моя страница просмотра Код:
<table class = "table table-bordered table-striped table-xxs" id = "tb3">
<thead>
<tr>
<th>Loan No</th>
<th>Party Name</th>
<th>Coll.Amt</th>
<th>Rep Amt</th>
</tr>
</thead>
<tbody>
<?php
//echo '<pre>';print_r($result2);exit();
if (!empty($query)){
foreach($query as $row){
?>
<tr >
<td ><input style = "width:50px" type = "text" class = "form-control input-xs" name = "Sno[]" id = "Sno" value = "<?=$row['loanno'];?>"></td>
<td> <input style = "width:180px" type = "text" class = "form-control input-xs" name = "name[]" id = "Amount" value = "<?=$row['pname'];?>"></td>
<td ><input style = "width:80px" type = "text" class = "form-control input-xs amt" name = "Amount[]" id = "Bankname" value = "<?=$row['collection_amt'];?>"></td>
<td ><input style = "width:80px" type = "text" class = "form-control input-xs ramt" name = "ramt[]" id = "Chqamt" value = "<?=$row['receive_amt'];?>" autofocus></td>
</tr>
<?php
}
}?>
</tbody>
</table>
Пожалуйста, решите эту проблему.
Для определения вашей конкретной строки вам нужно указать разные классы для разных входов.
@ArifulIslam, пожалуйста, посмотрите мой код, который я отредактировал, а затем очистите его.






Если вы хотите делать обновления только для ввода ramt[], имеющего непустое значение, вы можете назначить ключ каждому имени входного текста, чтобы идентифицировать его позже:
<table class = "table table-bordered table-striped table-xxs" id = "tb3">
<thead>
<tr>
<th>Loan No</th>
<th>Party Name</th>
<th>Coll.Amt</th>
<th>Rep Amt</th>
</tr>
</thead>
<tbody>
<?php
//echo '<pre>';print_r($result2);exit();
if (!empty($query)){
foreach($query as $key => $row){ // added $key as index
?>
<tr >
<td ><input style = "width:50px" type = "text" class = "form-control input-xs" name = "Sno[<?php echo $key ?>]" id = "Sno" value = "<?=$row['loanno'];?>"></td>
<td> <input style = "width:180px" type = "text" class = "form-control input-xs" name = "name[<?php echo $key ?>]" id = "Amount" value = "<?=$row['pname'];?>"></td>
<td ><input style = "width:80px" type = "text" class = "form-control input-xs amt" name = "Amount[<?php echo $key ?>]" id = "Bankname" value = "<?=$row['collection_amt'];?>"></td>
<td ><input style = "width:80px" type = "text" class = "form-control input-xs ramt" name = "ramt[<?php echo $key ?>]" id = "Chqamt" value = "<?=$row['receive_amt'];?>" autofocus></td>
</tr>
<?php
}
}?>
</tbody>
</table>
И отфильтруйте входные данные в вашей функции batchinsert():
public function batchinsert($data){
$session_data = $this->session->userdata('logged_in');
$data['username'] = $session_data['repname'];
$LDate = $this->input->post('CDate');
$date = str_replace('/', '-', $LDate);
$newDate = date("Y-m-d", strtotime($date));
$lno = $this->input->post("Sno");
$ramt = $this->input->post("ramt"); // added ramt input variable
$count = count($data['Sno']);
$updateArray = array();
for($x = 0; $x < sizeof($lno); $x++){
if (!empty($ramt[$x])) { // this will only insert data on loanno which have non-empty ramt values
$updateArray[] = array(
'loanno' => $lno[$x],
'receive_amt'=> $ramt[$x]
);
}
}
$this->db->where('collection_date',$newDate);
$this->db->update_batch('collection',$updateArray,'loanno');
// $this->db->insert_batch('test', $entries2);
redirect('Collection_Entry','refresh');
}
Это будет перебирать только непустой ramt[] ввод, а затем обновлять только динамические loanno значения и статическое collection_date значение.
// Example query output :
// UPDATE `collection`
// SET
// `receive_amt` =
// CASE
// WHEN `loanno` = '1' THEN 1
// WHEN `loanno` = '3' THEN 2
// WHEN `loanno` = '6' THEN 3
// WHEN `loanno` = '17' THEN 4
// ELSE `receive_amt`
// END
// WHERE `collection_date` = '2019/01/09' AND `loanno` IN ('1','3','6','17')
Он показывает ошибку в этой строке $this->db->update_batch('collection',$updateArray,'loanno'); как неопределенный индекс: ссудно
Я напечатал и вижу правильное значение в вашем коде, но эта строка "$this->db->update_batch('коллекция',$updateArray,'loanno');" показывает ошибку и не обновляет значение
Могу ли я узнать, какую версию CI вы используете?
Версия 2.1 может быть, проблема с версией не появится, я тоже так думал, только из-за проблемы с версией
Я считаю, что это undefined index на update_batch - это известная ошибка в версии CI 3.1.1 / 3.1.2, я тестирую его в версии CI 3.1.5, и он работает нормально, хотя я не знаю, с версией CI 2.1...
Вы также можете использовать стандартное обновление (в цикле) вместо update_batch, если хотите.
ваш код правильный, и я тоже проверил веб-сайт, может быть, моя версия проблема, я перехожу на последнюю версию и пробую ваш код
я изменил файл DB_query_builder. и теперь я получил правильный результат
мы можем сохранить содержимое таблицы html, используя этот код
Не могли бы вы опубликовать свой вид формы? а также откуда вы взяли эти
$dataпеременные?