我是CI的新手,因此在当前项目中遇到了一些问题。
所以这是我的问题:
1。我已经成功为文本字段创建了create auto generate number函数,但是我不知道每当我点击“新建”按钮时如何自动将其显示在视图页面的特定文本字段中。
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>
有人可以帮助我吗?非常感谢。
答案 0 :(得分:0)
您的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
上的简单循环访问代码了
关于最后一个问题是否要检查结果,应查询数据库并遍历结果检查是否已存在新生成的代码。但这并不是真正有效的方法,因为您不知道将来要循环多少条记录。到目前为止,您尝试过什么吗?
答案 1 :(得分:0)
最后我找到了答案,这个案子已经结案了。这是我在代码中所做的更改:
我的模特:
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
文本字段中的自动生成编号就会自动显示和增加。