авто Увеличение последнего четырехзначного значения из поля varchar в php codeigniter - PullRequest
0 голосов
/ 12 сентября 2018

В моем поле базы данных у меня есть поле varchar, подобное этому формату HPDO1209180000. Что я делаю, если у меня нет данных, я, наконец, добавляю четыре цифры, это работает нормально. И если это так, я увеличиваю по одной время.но проблема после 0001, также увеличивая все 0001 только не 0002, как это. Я делаю так, пожалуйста, помогите мне. Спасибо заранее.

  $this->db->select('grmno');
        $this->db->from('procurement_receive_material');
        $this->db->where('DATE(createdon)',$currentdate);
        $this->db->where('SUBSTRING(grmno,1,10)',$grn_code);
        $this->db->order_by('prmid','desc');
        $query = $this->db->get();
        if($query->num_rows()>0){
            $output = $query->row();
            $grmNumber = $output->grmno;
      //after 0001 also it incrementing 0001 not incrementing;
            $inrno=str_pad((int)$grmNumber+1, 4, 0, STR_PAD_LEFT); 

                $grmNumber=$vendor_result.$branch_result.$currentDate.$currentmonth.$currentyear.$inrno;
        }else{
            $grmNumber = $vendor_result.$branch_result.$currentDate.$currentmonth.$currentyear.'0000';
        }

1 Ответ

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

Если я правильно читаю, это выглядит следующим образом:

$inrno=str_pad((int)$grmNumber+1, 4, 0, STR_PAD_LEFT);

принимает значение int для $ output-> grmno.И это поле, опять же, если я интерпретирую вашу проблему напрямую, может быть оценено примерно так:

HPDO1209180001

Целочисленное значение такой строки будет равно 0. Следовательно, почему они всегда заканчиваются как0001.

Чтобы исправить это, вам нужно взять последние 4 символа строки и увеличить только это.Например:

$suffix = substr($grmNumber, -4);
$newsuffix = intval($suffix) + 1;
$irno = str_pad($newsuffix, 4, 0, STR_PAD_LEFT);

Это позволит правильно получить последние 4 цифры, добавить одну к значению и снова заполнить его нулями, которые будут добавлены в новую строку.

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