[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Нумерация формата А000001
exotica
Доброго времени wink.gif примера выполнения у меня нету, так как не брался пока за реализацию. Попросту не дошел еще до этой нумерации. Но немного неясно в какую сторону посмотреть.

Хочу получить:
Уникальную нумерацию в формате A000000, т.е. первый символ всегда буква A,B,C,D,E,F для каждой категории которая обозначена буквой предусматриваю шести значный счетчик 000001, 000002, ...
Данные будут храниться в БД mysql.

Мысли о реализации, наверное тупые т.к. не делал раньше такого laugh.gif :
Для каждой категории (категории не меняются) иметь отдельную таблицу в ней хранить характеристики товара, этой категории в итоге используя Primary ID получим примерно следующий идентификатор. {table_first_char}{primary_key} что-то типа A1, ..., A584 . С нулями не ясно, а получить бы шестизнак хотелось, чтоб нумератор не перенастраивать для наклеек с разной длинной кода.

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
jetistyum
смотри функцию sprintf
http://php.net/manual/ru/function.sprintf.php
там ты можешь дополнить INT нолями до определенной длинны, ну и конкатенировать с нужной Буквой.
walerus
<?php
$str = 1;
echo numberFormat($str, 4);
// Выведет "0001"
?>

<?php
$str = '1';
echo str_pad($str, 4, '0', STR_PAD_LEFT);
// Выводит "0001"
?>

<?php
$str = '1';
echo sprintf("%04d", $str);
// Выводит "0001"
?>

Поиск иногда полезен B)
exotica
jetistyum
walerus
Спасибо за варианты. Ознакомился wink.gif

Уточню вопрос, вернее скажу что я хочу получить:
Есть форма добавления данных в БД, после ее заполнения пользователь в ответ получит сей 7 значный номер (A000001, A000002 или F000093 и т.д.) Какая буква будет в начале это зависит от того какая категория была выбрана. Шестизначное число это порядковый (уникальный) номер внутри каждой категории.

Подразумеваю такую логику, но чем то она мне не нравится:
1. При заполнении выбрана категория "B", заполнены данные и отправлены обработчику
2. Обработчик определяет что это категория "В" , делает запрос к БД и выдергивает оттуда последний номер в этой категории, пускай в ответ он получил 000101 .
3. Далее обрабатываются данные и записываются в БД с номером 000102.
4. Пользователю отображается номер только что зарегистрированной записи, т.е. В000102

я себе представил такую логику сохранения уникальности нумерации. Возможно есть более простой и качественный способ?

Заранее скажу что выходящее значение должно быть именно буква+шестизнак , в дальнейшем оно должно быть доступно через поиск

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
exotica
А вообще посетила меня такая мысль. Получать ИД, сразу при загрузке формы, а в обработчик отправлять ИД вместе со всеми данными, тупо на добавление и обработку

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
walerus
Или же иначе, сделать 2ве колонки, одна содержит категории[A-Z], вторая порядковый номер 000101, потом проще выборку делать или фильтровать... ну это как вариант.

Точнее так даже будет правильнее, с разными колонками, потому как ...

Цитата
2. Обработчик определяет что это категория "В" , делает запрос к БД и выдергивает оттуда последний номер в этой категории, пускай в ответ он получил 000101 .
3. Далее обрабатываются данные и записываются в БД с номером 000102, в категорию В .

exotica
запользовал
$id = str_pad($id, 6, '0', STR_PAD_LEFT);
$out = $cat.$id;
//результат A000001

и возникает закономерный вопрос))) как отрезать эти нули, чтобы получить чистый ИД без примесей без нулей впереди.

Пока писал вопрос, придумал ответ.
intval($id);


Не грубовато?

_____________
[FAQ]Регистрации пользователей, сохранение в БД
---------------------------------------------------------------------------
Выходя из ванной, вышел из нее два раза
walerus
Интересные задачи, в начале нужно было
Цитата
Хочу получить:
Уникальную нумерацию в формате A000000,
теперь же
Цитата
как отрезать эти нули, чтобы получить чистый ИД
и возникает закономерный вопрос - а на куой делались первые манипуляции, с добавлением нолей?, нельзя ли было просто в начале, делать типовид A1, A2 ... ?
inpost
exotica
Категорию в отдельном поле же можно хранить.
К тому же можешь "100000" воспринимать в выводе как A000000. То есть Если у тебя букв будет до 10, то справишься без проблем заменяя первую цифру на нужную букву.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Kusss
exotica
$nomer = 'A000011';
$id = (int)substr($nomer, -6); // 11
$id = (int)substr($nomer, 1,6); // 11
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.