Как сгенерировать уникальный код - PullRequest
0 голосов
/ 15 марта 2011

Я подключаюсь к своей БД, и пользователь отправляет свой адрес электронной почты.Это хранится в БД.Это то, что я взял из турориала.

Я хотел бы, чтобы при загрузке документа генерировался уникальный код, сгенерированный с помощью JS. Формат должен быть длиной 6 цифр и использовать только AZ и 0-9.то есть: F4DRB6

Как только это будет сделано, мне нужно будет сохранить этот уникальный код для этого пользователя в БД.
Генератор должен проверить, существует ли уникальный код в БД, чтобы убедиться, что он действительноуникальна.

Беда, с которой я сталкиваюсь;Я не знаю, как создать уникальный код в вышеуказанном формате, проверить, является ли он уникальным для БД, и затем сохранить его в БД, соответствующей этому пользователю.Я бы предположил, что другой столбец как-то совпадает со строкой?

Спасибо!

РЕДАКТИРОВАТЬ: Я пытался с этим .. если есть какие-либо ошибки, пожалуйста, укажите это.Спасибо

function genRandomString() {
    $length = 5;
    $characters = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $string = '';    

    for ($p = 0; $p < $length; $p++) {
        $string .= $characters[mt_rand(0, strlen($characters))];
    }
    return $string;
}

do {
  $random_string = $this->genRandomString();
} while (mysql_num_rows(mysql_query("SELECT referralcode FROM ".coming_soon_emails." WHERE rand_string='{$random_string}'")));
$q = "INSERT INTO ".coming_soon_emails." SET referralcode='{$random_string}'";
$result = mysql_query($q);

Ответы [ 3 ]

2 голосов
/ 15 марта 2011

зачем вам это нужно создавать на стороне клиента? Почему вы не можете просто создать код, когда клиент отправляет «окончательную» форму?

Вы можете создать этот код случайным образом и поставить столбец, который обрабатывает код, как unique. Если вы получили сообщение о нарушении, вы создаете еще одну ошибку и попробуйте снова.

Ну, это один из способов сделать ...

0 голосов
/ 15 марта 2011

В качестве причинно-следственной связи простой прогон будет:

записать функцию / SP в mysql:

Сначала создайте случайный код, какAbiusX сказал, зависит от размера вашего пула пользователей, новый код, вероятно, используется редко.

Это сгенерирует для вас один шестнадцатеричный символ и вам следует начать.

SELECT conv (FLOOR ((RAND () * 16)), 10,16);

Тогда вам нужно будет проверить, использовался ли этот код уже.`

ВЫБРАТЬ * ИЗ пользовательской таблицы, где код = сгенерированный код

, если это так, сгенерировать новый.

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

0 голосов
/ 15 марта 2011

Простая математика: 6 ^ 36 достаточно велика, чтобы создание случайного идентификатора было в основном уникальным.

Если вы хотите быть на 100% уверенны, используйте AJAX, чтобы проверить сгенерированный идентификатор в базе данных и воссоздать, если он существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...