У меня есть страница, которая позволяет пользователю добавлять дочерние задания в родительское задание, нажимая кнопку, чтобы отобразить новую строку в таблице (чтобы заполнить сведения о дочернем задании).Одним из полей в этой строке является ссылочный номер, который генерируется сценарием PHP.Проблема в том, что ссылочный номер одинаков в каждой строке.
Я попытался прочитать значение поля с помощью JavaScript, а затем вычеркнуть число и увеличить его, а затем собрать все вместе, но это выглядело как излишнее,Должен быть более простой способ сделать это.Я также не мог понять, как заставить его записать новое значение в строку, которая должна быть сгенерирована.
Мой начальник не хочет, чтобы я писал новые функции, если я могу помочь, а скорееиспользовать существующие функции.Моя мысль состоит в том, чтобы обновить getNewJobRef (), чтобы передать ему текущее значение, чтобы оно автоматически получало следующее значение, но я не уверен, как передать текущее значение, как показано ниже в коде.Я также не уверен, сколько других мест в коде вызывает эту функцию, поэтому я не хочу портить их.
<button id="add-new-row" style="text-align:center;margin-top:5px;width:85px;" class="boxbutton">Add New</button>
И:
$(document.body).addEvent('click:relay(#add-new-row)', function (e, el) {
try{
e.preventDefault();
addChildJobRow();
}catch(e){
...
}
});
И:
function addChildJobRow() {
try {
lastrow++;
let cl = (lastrow % 2 ? 'odd' : 'even');
showHeaderRow();
Elements.from(connectedjobtemplate({
rownum: lastrow,
cl: cl,
nysid: '',
dinNum: '',
warrantNum: ''
})).inject($('linkedJobsBody'));
} catch (e) {
...
}
}
И:
<script id="connectedjobtemplate" type="text/template">
<tr id="childjobrow<%= rownum %>" class="<%= cl %>" data-row-id="<%= rownum %>">
<td colspan="7">
<table width="100%">
<tr>
<td style="width: 15%;">
<input data-row-id="<%= rownum %>" id="reference[<%= rownum %>]" name="childjobid[<%= rownum %>][reference]" value="<?php echo $this->MJob->getNewJobRef(232); ?>" class="ref" size="14" style="background-color: transparent; border: none;" />
</td>
</tr>
</table>
</td>
</tr>
</script>
Сценарий PHP:
function getNewJobRef($jobtypeid) {
if (empty($jobtypeid)) {
return '';
}
$select = $this->db->query('select * from jobtypecounters where jobtypeid =?', array($jobtypeid));
$this->db->query('update jobtypecounters set counter = last_insert_id(counter) + 1 where jobtypeid = ?', array($jobtypeid));
// read from write server to avoid replica lag
$Q = $this->db->query('select concat(prefix, lpad(last_insert_id(), 5, "0")) as newjobref from jobtypecounters where jobtypeid = ?', array($jobtypeid));
if ($Q->num_rows() == 1)
return $Q->row()->newjobref;
else
return '';
}
Любая помощь или руководство будет очень цениться.
РЕДАКТИРОВАТЬ: страница использует MooTools, поэтому мне сказали, что я не могу использовать jQuery на той же странице, потому что они конфликтуют.Итак, как мне передать переменную обратно в скрипт PHP без обновления страницы / Ajax, чтобы получить текущий ссылочный номер, который будет передан обратно в скрипт.
Я обновил свой код следующим образом:
function addChildJobRow() {
try {
lastrow++;
let cl = (lastrow % 2 ? 'odd' : 'even');
showHeaderRow();
var refNum = '<?php echo $this->MJob->getNewJobRef(232); ?>';
Elements.from(connectedjobtemplate({
rownum: lastrow,
cl: cl,
ref: refNum,
nysid: '',
dinNum: '',
warrantNum: ''
})).inject($('linkedJobsBody'));
} catch (e) {
console.log(e);
logevent({jobid: jid, event: 'add-new-row', uri: window.location.href, eventdata: e});
}
}
И:
<input data-row-id="<%= rownum %>" id="reference[<%= rownum %>]" name="childjobid[<%= rownum %>][reference]" value="<%= ref %>" class="ref" size="14" style="background-color: transparent; border: none;" />
function getNewJobRef($jobtypeid, $refNum = 0) {
//check $refNum
if (empty($jobtypeid)) {
return '';
}
$select = $this->db->query('select * from jobtypecounters where jobtypeid =?', array($jobtypeid));
$this->db->query('update jobtypecounters set counter = last_insert_id(counter) + 1 where jobtypeid = ?', array($jobtypeid));
$Q = $this->db->query('select concat(prefix, lpad(last_insert_id(), 5, "0")) as newjobref from jobtypecounters where jobtypeid = ?', array($jobtypeid));
if ($Q->num_rows() == 1)
return $Q->row()->newjobref;
else
return '';
}
То, что я хотел бы сделать, это вызвать функцию getNewJobRef со вторым передаваемым параметром, являющимся текущим ссылочным номером, но я понятия не имею, как это сделать.