Нумерация документов
Автор arsenal, 12 апр. 2011 04:30
Сообщений в теме: 6
#1
Отправлено 12 Апрель 2011 - 04:30
Требуется сделать вычисление для автоматической нумерации документов, но со сбросом в начале года.
делаю следующий код и вставляю в поле "Номер"
$sqlQuery = "SELECT f896 FROM ".DATA_TABLE."83 ORDER BY f896 desc LIMIT 0,1"; // Выбираем данные из поля f896 "Номер" таблицы 83 "Заявки", а также сортируем данные по убыванию, и берем первую запись. Таким образом получаем максимальный существующий номер.
$result = mysql_query($sqlQuery);
$row = mysql_fetch_array($result);
return $row['f896']+1;
Сброса в начале года пока здесь нет. При добавлении документа (или при каждом сохранении уже существующего) номер увеличивается на 1 и присваивается сразу ВСЕМ записям, т.е. все записи имеют одинаковый номер. В чем ошибка?
И по какому признаку можно определить, что эта запись новая, а не существующая? Полагаю, что это можно сделать по полям "Время добавления" или "Кто добавил", если эти поля пустые, значит запись новая. Или в момент сохранения они уже будут заполнены? Может есть еще какой-то способ?
Если вставить этот код в таблицу, то номер никак не меняются.
делаю следующий код и вставляю в поле "Номер"
$sqlQuery = "SELECT f896 FROM ".DATA_TABLE."83 ORDER BY f896 desc LIMIT 0,1"; // Выбираем данные из поля f896 "Номер" таблицы 83 "Заявки", а также сортируем данные по убыванию, и берем первую запись. Таким образом получаем максимальный существующий номер.
$result = mysql_query($sqlQuery);
$row = mysql_fetch_array($result);
return $row['f896']+1;
Сброса в начале года пока здесь нет. При добавлении документа (или при каждом сохранении уже существующего) номер увеличивается на 1 и присваивается сразу ВСЕМ записям, т.е. все записи имеют одинаковый номер. В чем ошибка?
И по какому признаку можно определить, что эта запись новая, а не существующая? Полагаю, что это можно сделать по полям "Время добавления" или "Кто добавил", если эти поля пустые, значит запись новая. Или в момент сохранения они уже будут заполнены? Может есть еще какой-то способ?
Если вставить этот код в таблицу, то номер никак не меняются.
#2
Отправлено 12 Апрель 2011 - 08:42
arsenal (12.4.2011, 5:30) писал:
В чем ошибка?
Вторая ошибка:
arsenal (12.4.2011, 5:30) писал:
Если вставить этот код в таблицу, то номер никак не меняются.
arsenal (12.4.2011, 5:30) писал:
И по какому признаку можно определить, что эта запись новая, а не существующая? Полагаю, что это можно сделать по полям "Время добавления" или "Кто добавил", если эти поля пустые, значит запись новая. Или в момент сохранения они уже будут заполнены?
#3
Отправлено 12 Апрель 2011 - 19:16
Разработчик (12.4.2011, 8:42) писал:
Вычисление поля срабатывает каждый раз при открытии поля (поэтому у вас и обновляется код сразу во всех записях), а вычисление в таблице - только после сохранения текущей записи.
Разработчик (12.4.2011, 8:42) писал:
Вторая ошибка:
что естественно, т.к. у Вас нет проверки на новую запись.
что естественно, т.к. у Вас нет проверки на новую запись.
Разработчик (12.4.2011, 8:42) писал:
На самом деле все очень просто - т.к. Ваше вычисление должно заполнить поле Номер, то и проверять на заполнение надо именно его. Если оно пустое - значит запись новая и вычисление необходимо провести. Если уже заполнено - то и не меняете его.
#4
Отправлено 12 Апрель 2011 - 21:59
Применил следующий код
Выдает ошибку:
Parse error: syntax error, unexpected T_STRING in C:\Program Files\MSTL\���������� ����\www\view_line.php(634) : eval()'d code on line 7
$data = data_table("Заявки","id={ID}"); // Берем данные из текущей строки
$sqlQuery = "SELECT f896 FROM ".DATA_TABLE."83 ORDER BY f896 desc LIMIT 0,1"; // Выбираем данные из поля f896 "Номер" таблицы 83 "Заявки", а также сортируем данные по убыванию, и берем первую запись.
$result = mysql_query($sqlQuery);
$row = mysql_fetch_array($result);
if ($data['Номер']=0)
$data['Номер']=$row['f896']+1
update_query($data, "Заявки", "id={ID}");
Выдает ошибку:
Parse error: syntax error, unexpected T_STRING in C:\Program Files\MSTL\���������� ����\www\view_line.php(634) : eval()'d code on line 7
#5
Отправлено 13 Апрель 2011 - 00:54
После "+1" поставил ";", ошибка пропала.
Но условие в таком виде (на равенство нулю) все равно не срабатывает. Хотя по умолчанию это поле равно нулю.
Попробовал переписать условие "наоборот"
Почему так?
Но условие в таком виде (на равенство нулю) все равно не срабатывает. Хотя по умолчанию это поле равно нулю.
Попробовал переписать условие "наоборот"
if ($data['Номер'] > 0)
$a=1;//Ничего не значащее действие
elseif
($data['Номер']=$row['f896']+1);
update_query($data, "Заявки", "id={ID}");
все получилось.Почему так?
#6
Отправлено 13 Апрель 2011 - 01:26
Разобрался
#7
Отправлено 13 Апрель 2011 - 09:04
arsenal (12.4.2011, 20:16) писал:
А что является "открытием" поля - просмотр таблицы? выбор записи для просмотра? открытие записи для редактирования?
arsenal (12.4.2011, 20:16) писал:
Но насколько я понимаю, код в таблице срабатывает при каждом сохранении любой записи (не важно - новой или существующей). И у меня же стоит действие "+1", почему этого не происходит?
arsenal (12.4.2011, 22:59) писал:
Выдает ошибку:
Parse error: syntax error
Parse error: syntax error
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных













