Настроить уникальный Id генерировать в PHP, MySql

Мне нужна небольшая помощь в создании автоматизированного, но настраиваемого идентификатора для каждого элемента, который я храню в базе данных mysql. Например, если я введу 1 единицу цвета джинсов pepe цвета «черный» и талии 30. Уникальный идентификатор этого продукта будет PEPE + BLACK + 30 + A001, A001 — это уникальный номер, который будет увеличиваться, например, A001, A002, A003 … .A999 после достижения A999 этот номер станет B001, а затем B002, B003 …. и так далее. Пожалуйста, покажите мне логику, чтобы сделать это.

Пример 1 идентификатора элемента будет: PEPEBLACK30A009

#Спасибо 🙂

0

Решение

Вы можете получить что-то подобное:

$lastId = 'A999';
$letter = $lastId[0];
echo $letter;
$number = $lastId[1].$lastId[2].$lastId[3];
echo $number;

if ($number < 999) {
$newId = $letter.sprintf("%03d", $number+1);
} else {
$ascii = ord($letter);
$newLetter = chr($ascii+1);
$newId = $newLetter.'001';
}

echo $newId;

Просто имейте в виду, что после символа Z будут напечатаны другие символы, поэтому может потребоваться некоторая настройка.

1

Другие решения

Создайте основной столбец идентификаторов, в котором он автоматически увеличивается (0 — 28971), затем вы можете взять этот номер и преобразовать его в свой формат.

Пример нескольких конвертированных идентификаторов:

<?php

for ($i = 0; $i < 5000; $i += 99) {
$num     = $i;
$letters = range('A', 'Z');
$letter  = (int) $num / 999;
$num     = $num % 999 + 1;
$num     = str_pad($num, 3, 0, STR_PAD_LEFT);
echo $i . ' => ' . $letters[$letter] . $num . "\n";
}

Выход:

0 => A001
99 => A100
198 => A199
297 => A298
396 => A397
495 => A496
594 => A595
693 => A694
792 => A793
891 => A892
990 => A991
1089 => B091
1188 => B190
1287 => B289
1386 => B388
1485 => B487
1584 => B586
1683 => B685
1782 => B784
1881 => B883
1980 => B982
2079 => C082
2178 => C181
2277 => C280
2376 => C379
2475 => C478
2574 => C577
2673 => C676
2772 => C775
2871 => C874
2970 => C973

Остальное

Конечно, проблема заключается в ограничении 28971 для первичного ключа, потому что есть только 26 букв (26 * 999), но, конечно, вы можете иметь 4 или более цифр или добавить больше букв в будущем.

0

По вопросам рекламы [email protected]