#1
Отправлено 20 Май 2013 - 13:10
Помогите пожалуйста с кодом вычисления в таблице.
Задача такая: Нужно формировать номер заказа в ячейке автоматически!
Номер из себя представляет следующий вид: (ГГММДД01)
ГГ - последние цифры года MMДД - соответственно месяц и дата, и последняя пара цифр - это номер заказа за день. т.е. каждый день новая последовательность
Заранее спасибо!
#2 Гость_Roman_*
Отправлено 20 Май 2013 - 16:36
if (!$line['Номер заказа']) { $result = data_select_field(43, "COUNT(*) AS `cnt`", "`status`=0 and `add_time`>='",date("Y-m-d 00:00:00"),"' and `add_time`<='",date("Y-m-d 23:59:59"),"'"); $row = sql_fetch_assoc($result); $new_cnt = $row['cnt'] + 1; if (strlen($new_cnt) < 2) $new_cnt = "0".$new_cnt; $line['Номер заказа'] = date("Ymd").$new_cnt; }Ставите условие вычисления на сохранение в таблице.
#3
Отправлено 20 Май 2013 - 19:08
Извините, спрошу наверное глупость. А где этот id для таблицы найти?
Я подставил Ваши вычисления, но поле "Номер заказа" получает немного другой вид т.е. год подставляется полностью, а не последние 2 цифры. и еще не ведется подстановка последовательных цифр. т.е. добавляю один за другим 3 задания и везде отображается номер заказа 2013052001
#4 Гость_Roman_*
Отправлено 21 Май 2013 - 07:31
$line['Номер заказа'] = date("ymd").$new_cnt;Id таблицы можно узнать, посмотрев в адресную строку, находясь в самой таблице, например, http://mysite.ru/fields.php?table=43 - в данном случае 43 - это и есть id таблицы. Собственно, без правильного id у Вас и не прибавляются заказы.
#5
Отправлено 21 Май 2013 - 11:36
Во-первых, почему-то последние две цифры отображают исчисления не с 1, а с 2. буд-то уже существует заказ под номером 01
Во-вторых, почему поле "Номер" продолжает последовательность, даже если задания удалены?
#6 Гость_Roman_*
Отправлено 21 Май 2013 - 11:46
#7
Отправлено 21 Май 2013 - 12:16
Roman (21 Май 2013 - 11:46) писал:
#8
Отправлено 21 Май 2013 - 13:34
if (!$line['Номер заказа']) { $result = data_select_field(47, "COUNT(*) AS `cnt`", "`status`=0 and `add_time`>='",date("Y-m-d 00:00:00"),"' and `add_time`<='",date("Y-m-d 23:59:59"),"'"); $row = sql_fetch_assoc($result); $new_cnt = $row['cnt']; if (strlen($new_cnt) < 2) $new_cnt = "0".$new_cnt; $line['Номер заказа'] = date("ymd").$new_cnt; }
проблем не возникнет с таким кодом?
Сообщение отредактировал max3z: 21 Май 2013 - 13:35
#9 Гость_Roman_*
Отправлено 21 Май 2013 - 13:52
#10
Отправлено 22 Май 2013 - 09:46
Roman (21 Май 2013 - 13:52) писал:
А условие "Запрещать дублирование значений" тут не работает??? Точно. Проверил. Создаются дубликаты
#11 Гость_Roman_*
Отправлено 22 Май 2013 - 09:54
#12
Отправлено 22 Май 2013 - 10:35
Roman (22 Май 2013 - 09:54) писал:
Перевел поле в число, и дублирований теперь нет!!! Образуются последовательности. После удаления строки из таблицы, последовательность продолжается.
Но возник следующий вопрос: можно ли численным придавать вид?
Т.е. Сейчас число в моей ситуации выглядит так 13 052 201, а хотелось бы сгруппировать немного иначе. Так например 130520 01 или просто 13052001
Сообщение отредактировал max3z: 22 Май 2013 - 10:36
#13 Гость_Roman_*
Отправлено 22 Май 2013 - 10:54
#14
Отправлено 22 Май 2013 - 17:01
Резюме - реалии сегодняшнего дня и высокие стандарты качества, на пятки которых наступает и в затылок которых дышит "КБ" настоятельно требуют от разработчиков дополнить свое мудрое решение об императивной группировке "чисел" возмоожностью выбора - ГАЛОЧКОЙ (группировать\негруппировать (или что лучше ввести описатель формата по скольку чисел группировать), чтобы предоставить пользователю полную демократию и свободу в формате представления.
#15
Отправлено 22 Май 2013 - 18:06
#16
Отправлено 23 Май 2013 - 10:15
Roman (21 Май 2013 - 13:52) писал:
C данным кодом возникла проблема приводящая к дублированию! Помогите разобраться.
Суть:
вычисления номера заказа задаются в таблице "Счет". Если создать счет непосредственно в таблице, $new_cnt не равен 0, а равен 1. по этой причине работает код -
$new_cnt = $row['cnt'];Но если создать счет непосредственно из таблицы с клиентами/контрагентами, $new_cnt равняется 0, и тут работает изначально Ваш код -
$new_cnt = $row['cnt'] + 1;
В этой связи возможны ситуации дублирования даже без удаления строк. В чем проблема? почему происходят такие разные вычисления?
Сообщение отредактировал max3z: 23 Май 2013 - 10:17
#17
Отправлено 23 Май 2013 - 12:46
$row['cnt']при оформлении Счета из связанных таблиц. Что делать ? куда копать?
Такая проверка,
if ($new_cnt == $row['cnt']) $new_cnt = $row['cnt'] + 1;не решила проблемы
#18
Отправлено 23 Май 2013 - 17:47
//$new_id = insert_query($schet, "Счета");все становится на свои места. Помогите разобраться!
#19 Гость_Roman_*
Отправлено 24 Май 2013 - 11:55
#20
Отправлено 24 Май 2013 - 11:56
CbCoder (22 Май 2013 - 18:06) писал:
Конкретный вышеописанный пример автонумерации документов - как раз тот случай, когда и "число" нужно, и "текст" неприменим, и пробелы мешают. Плз, предусмотрите возможность отключения пробелов.
Сообщение отредактировал kingston: 24 Май 2013 - 11:59
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных