繁体   English   中英

如何在视图codeigniter中自动显示自动生成ID

[英]How to show auto generate id automatically in view codeigniter

我是 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>

谁能帮我? 非常感谢您。

您的autogenerate()函数将 10 个代码作为字符串回显,但不会将任何内容返回给控制器。
您应该返回以更有用的格式生成的代码,例如数组,然后使用$this->load->view('spl/spl_add_view', $generated_codes);将其传递给视图$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上的简单循环访问您的代码

关于最后一个问题,如果您想检查结果,您应该查询您的数据库并循环检查结果,检查新生成的代码是否已经存在。 但这并不是真正有效,因为您不知道将来要循环多少条记录。 到目前为止你尝试过什么吗?

最后我找到了答案,此案已结案。 这是我在代码中更改的内容:

我的型号:

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文本字段中的自动生成数字都会自动显示并增加。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM