|
|
|
| воть у меня появился вопрос, я не хочу использовать в БД auto_incremet
и хочу создавать свои уникальные ИД
вопрос может кто уже делал такое и поможет придумать алгоритм так чтоб знать на все 100% ID не повторится?
я тут чето пробывал вот если так написать могу быть уверенным?
function id()
{
srand((float) microtime() * 10000000);
return substr(rand(1,9999999999999), 0, 6);
}
|
или вопрос если вдруг повторился я сначала делаю проверку в мускле если есть такой как мне уничтожить тот что сгенерировался и чтоб он сгенерировал заного? | |
|
|
|
|
|
|
|
для: Ressfourt
(11.01.2006 в 04:04)
| | а чем не нравится автоинкремент в мускуле? 100% уникальный id в любом случае.
А если сам то для начала надо запросить все id из базы (а если их там будет немало то и время выполнения и нагрузка на сервер баз возрастет нехило). а потом уже генерировать и проверять результат на индивидуальность | |
|
|
|
|
|
|
|
для: Ressfourt
(11.01.2006 в 04:04)
| | id=date(HisdmY)
что то типо того:) почти уникальность (если сразу не создается более одной записи в секунду) | |
|
|
|
|
|
|
|
для: P@Sol
(11.01.2006 в 09:28)
| | В случае если не более одной записи в секунду то быстрее будет:
$id = time(); | |
|
|
|
|
|
|
|
для: exp131
(11.01.2006 в 14:19)
| | а если через год в тоже самое время добавиться еще одна запись? | |
|
|
|
|
|
|
|
для: P@Sol
(11.01.2006 в 14:27)
| | И ничего страшного, time возвращает unixtime | |
|
|
|
|
|
|
|
для: isset
(11.01.2006 в 18:52)
| | может кто подскажет как сделать чтоб функция заного и заного вызывалась состовлять новый ИД если этот ИД уже имеется до тех пор пока не найдет свободный и выведет его без обновлений страницы | |
|
|
|
|
|
|
|
для: Ressfourt
(12.01.2006 в 00:27)
| | Добавлю есть форма регистрации и есть поле куда заносится сгенирированный ИД
но я хочу чтоб шла проверка на существует ли сгенирированный ИД уже в Базе если да то создать новый и так постоянно и как он показал что ИД свободный вывести форму Регистрации... но проблема моя в чем что я не могу создать проверку таким образом чтоб это все без обновления страницы делалось | |
|
|
|
|
|
|
|
для: Ressfourt
(12.01.2006 в 00:39)
| | Всем спасиб все сделал и разобрался :) | |
|
|
|
|
|
|
|
для: Ressfourt
(12.01.2006 в 01:48)
| | Раз разобрался пример в студию, чтобы и другим можно было потом показать, когда похожий вопрос возникнет | |
|
|
|
|
|
|
|
для: Ressfourt
(11.01.2006 в 04:04)
| | Глупостями занимаешься.... чем тебя не устраивает auto_increment? | |
|
|
|
|
|
|
|
для: Boss
(11.01.2006 в 15:26)
| | авто_инкремент все равно есть как ключь к записям но я хочу уникальный ИД для Пользователей сделать вот вчем дело и я выбрал чтоб это были 6 значные числа а проблема в том что не могу или бошка не работает как сделать проверка чтоб новый ИД не соотвествовал имеющийся в Базе а если есть то сделать новый... я знаю как проверить есть ли такая запись в Базе а вот как сделать чтоб функция включилась заного и составила новый ИД .... | |
|
|
|
|
|
|
|
для: Ressfourt
(11.01.2006 в 15:50)
| |
<?
$id_new = id();
if ($id_new == $id) function2();
function2()
{
$id_new = id();
if ($id_new == $id) function2();
else return $id_new;
}
|
хз..но мне кажется что, что то в этом стиле... | |
|
|
|
|
|
|
|
для: Ressfourt
(11.01.2006 в 15:50)
| | Какой ключ? Автоинкремент это счетчик и его значения могут быть любыми, хоть миллионзначными.
Просто, например, если было максимальное значение 25, а потом принудительно добавлена строка с о значением 500000, то следующее значение будет прибавляться к этим 500000.
Как хотите так и добавляйте свои ключи в это поле, а потом они сами будут расти. | |
|
|
|
|
|
|
|
для: Ressfourt
(11.01.2006 в 15:50)
| | Если поле было записано как INT(6), то это не ограничивает ключ 6 символами, так как цифра 6 предназначена для вывода в консольных клиентах вроде mysql, реально это поле будет вести себя как INT(11). | |
|
|
|
|
|
|
|
для: cheops
(11.01.2006 в 16:19)
| | нет просто как я уже показал функцию состовляется номер из Шести цифр это как ИД пользователя а то что поле INT это не столь важно | |
|
|
|
|
|
|
|
для: Ressfourt
(11.01.2006 в 04:04)
| | Алгоритм:
1. Загадываем число
2. Проверяем есть ли такое число в столбце БД
а) TRUE GOTO 1
б) FALSE GOTO 3
3) запись числа в столбец БД
Но это все проблематично порой... | |
|
|
|