Как обновить точную строку в таблице с помощью codeigniter

Моя страница просмотра: Как обновить точную строку в таблице с помощью codeigniter

На этом рисунке я получаю данные, такие как 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>

Пожалуйста, решите эту проблему.

Не могли бы вы опубликовать свой вид формы? а также откуда вы взяли эти $data переменные?

Hasta Dhana 13.07.2019 19:14

Для определения вашей конкретной строки вам нужно указать разные классы для разных входов.

Ariful Islam 14.07.2019 04:51

@ArifulIslam, пожалуйста, посмотрите мой код, который я отредактировал, а затем очистите его.

Jacky 15.07.2019 07:10
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
96
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите делать обновления только для ввода 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'); как неопределенный индекс: ссудно

Jacky 16.07.2019 06:59

Я напечатал и вижу правильное значение в вашем коде, но эта строка "$this->db->update_batch('коллекция',$updateArray,'loanno')‌​;" показывает ошибку и не обновляет значение

Jacky 16.07.2019 07:15

Могу ли я узнать, какую версию CI вы используете?

Hasta Dhana 16.07.2019 09:10

Версия 2.1 может быть, проблема с версией не появится, я тоже так думал, только из-за проблемы с версией

Jacky 16.07.2019 09:25

Я считаю, что это undefined index на update_batch - это известная ошибка в версии CI 3.1.1 / 3.1.2, я тестирую его в версии CI 3.1.5, и он работает нормально, хотя я не знаю, с версией CI 2.1...

Hasta Dhana 16.07.2019 09:34

Вы также можете использовать стандартное обновление (в цикле) вместо update_batch, если хотите.

Hasta Dhana 16.07.2019 09:38

ваш код правильный, и я тоже проверил веб-сайт, может быть, моя версия проблема, я перехожу на последнюю версию и пробую ваш код

Jacky 16.07.2019 09:39

я изменил файл DB_query_builder. и теперь я получил правильный результат

Jacky 16.07.2019 12:05

мы можем сохранить содержимое таблицы html, используя этот код

Jacky 18.07.2019 07:17

Другие вопросы по теме