Доброго времени суток!
Создается статья, в которой имеется поле art (field_art). Необходимо при создании статьи, заполнить это поле числом ($number), которое вычисляется с помощью следующего кода (в базе с сайтом создана дополнительная таблица TEMP_NUM с тремя полями TOID, ldate, lnum)
<?php
$dat = (date('dmY'));
$result = mysql_fetch_assoc(mysql_query('SELECT ldate FROM TEMP_NUM WHERE TOID = 1'));
$ldate = $result["ldate"];
function numval() {
global $strnum;
$result = mysql_fetch_assoc(mysql_query('SELECT lnum FROM TEMP_NUM WHERE TOID = 1'));
$strnum = $result["lnum"];
$intnum = (int)$strnum;
$strnum = (strval($intnum + 1));
mysql_query('UPDATE TEMP_NUM SET lnum = '.$strnum.' WHERE TOID = 1');
return $strnum;
}
if ($ldate == $dat) {
numval();
} else {
mysql_query('UPDATE TEMP_NUM SET ldate = '.$dat.', lnum = "0" WHERE TOID = 1');
numval();
}
$num = $strnum;
$number = $dat.(str_pad ($num, 5, "0", STR_PAD_LEFT));
?>
Как это сделать? Наверное можно с помощью Rules, какие тогда нужно внести изменения в код? В php не силен, если можно ответы на пальцах.
Комментарии
https://drupal.org/project/computed_field
Вопрос решился с помощью RULES и следующего кода
<?php
$dat = (date('dmY'));
$ldate = db_select('TEMP_NUM', 'n')
->fields('n', array('ldate'))
->condition('n.TOID', 1)
->execute()
->fetchField();
if ($ldate = $dat) {
$strnum = db_select('TEMP_NUM', 'n')
->fields('n', array('lnum'))
->condition('n.TOID', 1)
->execute()
->fetchField();
$intnum = (int)$strnum;
$strnum = (strval($intnum + 1));
db_update('TEMP_NUM')
->fields(array('lnum' => $strnum))
->condition('TOID', 1)
->execute();
} else {
db_update('TEMP_NUM')
->fields(array('ldate' => $dat, 'lnum' => 0))
->condition('TOID', 1)
->execute();
$strnum = db_select('TEMP_NUM', 'n')
->fields('n', array('lnum'))
->condition('n.TOID', 1)
->execute()
->fetchField();
$intnum = (int)$strnum;
$strnum = (strval($intnum + 1));
db_update('TEMP_NUM')
->fields(array('lnum' => $strnum))
->condition('TOID', 1)
->execute();
}
$number = $dat.(str_pad ($strnum, 5, "0", STR_PAD_LEFT));
echo $number;
?>