[РЕШЕНО] Как заполнить поле вычисленным значением

Главные вкладки

Аватар пользователя cjlaity cjlaity 27 июля 2013 в 23:19

Доброго времени суток!
Создается статья, в которой имеется поле 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 ($num5"0"STR_PAD_LEFT));
?>

Как это сделать? Наверное можно с помощью Rules, какие тогда нужно внести изменения в код? В php не силен, если можно ответы на пальцах.

Комментарии

Аватар пользователя cjlaity cjlaity 28 июля 2013 в 14:46

Вопрос решился с помощью 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 ($strnum5"0"STR_PAD_LEFT));
echo 
$number;
?>