Как автоматически показать идентификатор автоматически в представлении codeigniter - PullRequest
0 голосов
/ 28 сентября 2018

Я новичок в CI, и я застрял с некоторыми проблемами в моем текущем проекте.Итак, вот мой вопрос:

1.Мне уже удалось создать функцию автоматического создания чисел для текстового поля, но я не знаю, как автоматически отобразить или разместить ее в моем конкретном текстовом поле на странице просмотра при каждом нажатии кнопки «Создать новый».

https://ibb.co/mUr899
https://ibb.co/j9BVNU

2.И скажем, я использовал / сохранил один из моих номеров автоматической генерации в моей базе данных, я хочу, чтобы он мог проверить, использовался ли он уже или нет, если номер уже использовался, то он должен сгенерировать новый номер.

И здесьмой код:
Мой контроллер

//------------------- input data SPL -------------------------//
public function input()
{
    $this->autogenerate();
    $this->load->view('spl/spl_add_view');
}

//----------------------- auto generate no_spl -------------------------//
function autogenerate()
{
    $kode_spl = 'SPL';
    $tgl = date("ymd");

    for ($counter = 1; $counter <= 10; $counter++) {
        $spl_no = date('ymd', strtotime($tgl)) . str_pad($counter, 3, 0, STR_PAD_LEFT);
        echo $kode_spl . $spl_no . '<br />';
    }
}

Мой вид:

        <div class="form-group">
            <label class="col-sm-2 control-label">No. SPL</label>
            <div class="col-sm-4">
                <input type="text" name="inospl" class="form-control" placeholder="No. SPL" value="<?php echo set_value('inospl'); ?>">
            </div>
        </div>

Кто-нибудь может мне помочь?большое спасибо.

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Наконец я нашел ответ, и это дело закрыто.вот что я изменил в своем коде:

Моя модель:

public function auto_generate() 
{
    $tgl = date("ymd"); //date(Ymd) : jika mau tahun 4 digit

    $this->db->select('RIGHT(tbl_spl.no_spl,3) as kode', FALSE);
    $this->db->order_by('no_spl', 'DESC');
    $this->db->limit(1);
    $query = $this->db->get('tbl_spl');
    if($query->num_rows() <> 0) {
        $data = $query->row();
        $kode = intval($data->kode) + 1;
    }
    else {
        $kode = 1;
    }

    $kodemax = date('ymd', strtotime($tgl)) . str_pad($kode, 3, 0, STR_PAD_LEFT); 
    $kodejadi = "SPL". $kodemax;

    return $kodejadi;
}

Мой контроллер:

public function input()
{
    $data['autogen'] = $this->M_spl->auto_generate();
    $this->load->view('spl/spl_add_view', $data);
}

Мой вид:

        <div class="form-group">
            <label class="col-sm-2 control-label">No. SPL</label>
            <div class="col-sm-4">
                <input type="text" name="inospl" class="form-control" placeholder="No SPL" value="<?php echo $autogen; ?>" readonly>
            </div>
        </div>

и вуаля !!всякий раз, когда я нажимаю кнопку «Создать новый», автоматически генерируется число в моем текстовом поле inospl, которое автоматически отображается и увеличивается.

0 голосов
/ 28 сентября 2018

Ваша autogenerate() функция выводит 10 кодов в виде строки, но ничего не возвращает обратно в контроллер.
Вы должны вернуть сгенерированные коды в более полезном формате, таком как массив, и передать егоиспользуя $this->load->view('spl/spl_add_view', $generated_codes);

Итак, в итоге вы получите нечто подобное

function autogenerate() {
    $kode_spl = 'SPL';
    $tgl = date("ymd");
    //create the empty array we are going to fill with the codes
    $codes = array();

    for ($counter = 1; $counter <= 10; $counter++) {
        $spl_no = date('ymd', strtotime($tgl)) . str_pad($counter, 3, 0, STR_PAD_LEFT);
        //insert the generated code into the $codes array
        array_push($codes, $kode_spl . $spl_no);
    }
    //return the codes created
    return $codes;
}

Теперь мы передадим результаты в представление, поэтому:

public function input() {
    //save the codes into a variable for later use
    $data['generated_codes'] = $this->autogenerate();
    $this->load->view('spl/spl_add_view', $data);
}

Теперь ваши коды доступны в представлении с простым циклом на $generated_codes

Что касается последнего вопроса, если вы хотите проверить результаты, вы должны запросить вашу базу данных и циклически просмотреть результаты, проверяя, был ли недавно сгенерированный кодуже существует.Но это не очень эффективно, так как вы не знаете, сколько записей вы собираетесь циклировать в будущем.Вы уже что-то пробовали?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...