Автоматическое увеличение порядкового номера в codeigniter и JavaScript - PullRequest
0 голосов
/ 28 ноября 2018

Мне трудно выяснить, что не так с моим кодом ... я создаю информационную систему студента в codeigniter с автоматически сгенерированной базой номеров студентов на основе имени, фамилии, порядкового номера и года регистрации студента... моя проблема в том, что когда я обновляю форму или закрываю регистрацию и открываю ее снова, порядковый номер всегда начинается с 00001, он учитывает только то, что форма не обновлена ​​или не закрыта, но если вы снова откроете ее, счетчик вернется к 00001

образец изображения

МОЙ JAVASCRIPT

<script type="text/javascript">
  function getInitials(firstName, lastName) {
    return (firstName[0] + lastName[0]).toUpperCase()
  }

  function getYear() {
    return (new Date).getFullYear() % 100
  }

  function paddedNumber(number) {
    var result = 0;
    for(var i = 4 - number.toString().length; i > 0; i--) {
      result += "0"
    }
    return result + number
  }



  function makeStudentID(firstName, lastName, studentNumber) {
    return getInitials(firstName, lastName) + paddedNumber(studentNumber) + ("-") + getYear()
  }

  var sequenceNumber = 1;
  function gatherDataAndOutput() {
    var firstName = document.getElementById("firstname").value
    var lastName = document.getElementById("lastname").value
    var outputElement = document.getElementById("student_no")

    outputElement.value = makeStudentID(firstName, lastName, sequenceNumber)

    sequenceNumber++
  }

1 Ответ

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

Это виновник:

var sequenceNumber = 1;

Javascript не сохраняет никакой информации о состоянии (это можно сделать, установив cookie-файл, который позволит сохранять постоянство, пока вы используете тот же браузер, но это немногоизлишним) и при загрузке страницы вы всегда инициализируете настройку кода sequenceNumber = 1;

Что вы можете легко сделать, это сначала определить последний порядковый номер, который уже был установлен (select max(sequencenumber) from table, а затем передать это значение вview) и инициализировать представление с этим значением вместо 1.

Предположим, что вы передали порядковый номер представлению как $seq_nbr, если ваш код JS встроен в представление и не вызывается из внешнегофайл, вы можете установить значение sequenceNumber при загрузке представления как:

<script type="text/javascript">

(...snip...)

  var sequenceNumber = <?php echo $seq_nbr; ?>;
  function gatherDataAndOutput() {
    var firstName = document.getElementById("firstname").value
    var lastName = document.getElementById("lastname").value
    var outputElement = document.getElementById("student_no")

    outputElement.value = makeStudentID(firstName, lastName, sequenceNumber)

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