Помогни ни да направим Uroci.net по - богат! Добави урок

Генериране на уникален код

PHP » PHP
HunteR   трудност:    видян: 10183

Сега ще ви покажа един метод как може да генерирате уникален код.


Така ще започнем от структурата на базата данни.
Тя е една таблица с едно поле, в което ще се записват създадените до момента кодове.



Така ето я:

 

CREATE TABLE `codes` (
`code` varchar(250) NOT NULL default ''
);

 

Ето и самия скрипт за генериране на уникален код. 

 

<?php
// CONFIG //

// Връзка с базата данни
$db_conn = mysql_connect("localhost", "root", "password") or die(mysql_error());
mysql_select_db("database", $db_conn) or die(mysql_error());

define(COUNT_SIMBOLS,8); // тук дефинираме колко символа да бъде кода
define(ALL_SIMBOLS,'0123456789qwertyuioplkjhgfdsazxcvbnm'); // тук слагаме символите, от които да се генерира кода

// CONFIG //

$code = substr(str_shuffle(ALL_SIMBOLS),0,COUNT_SIMBOLS);
$continue = false;
while (!$continue) {
$query = mysql_query("SELECT `code` FROM `codes` WHERE `code` = '$code'"); // проверяваме за кода в базата данни за да сме сигурни, че кода ще бъде напълно уникален :)
if (mysql_num_rows($query) == 0) { // проверяваме дали вече има такъв код, ако няма продължаваме
mysql_query("INSERT INTO `codes` (`code`) VALUES ('$code')"); // добавяме кода в базата данни за да сме сигурни, че няма да бъде повторен
$continue = true;
} else {
$code = substr(str_shuffle(ALL_SIMBOLS),0,COUNT_SIMBOLS); // тук генерираме нов код, ако предишния генериран е съществувал в базата
$continue = false;
}
}

// връшаме променливата "$code" с уникалния код. Вече може да я правите каквото поискате ;)
echo $code;
?>

 

 

 

Урокът е авторски и забранявам преписването му в други сайтове без мое съгласие! 



Коментари (3)

ColdFire на 14.11 2008 в 11:09ч.
Примерът илюстрира метода за генериране на уникален код, ноима исвоите недостатъци.
Например между проверката дали има такъв код в базата данни (БД) и самото записване може някой друг да генерира и запише такъв код (например два потребителя едновременно ползват услугата). По-добре е тази задача да се възложи на самата база - чрез дефиниране на първичен ключ (англ. Primary Key). Освен това може да се спести една операция с БД (проверка за съществуващ ключ) и направо да се прави опит за запис, който ще е успешен ако няма и неуспешен ако такъв ключ вече има.
Ето и промените:
// Дефинираме таблицата с поле-ключ (PRIMARY KEY), така че базта данни да не позволява дублиране на кодовете
CREATE TABLE codes (
code varchar(250) NOT NULL default '',
PRIMARY KEY (code)
);

HunteR на 14.11 2008 в 14:14ч.
@ColdFire, мерси за идеята, просто когато го писах не ми беше дошло наум. :)
HunteR на 14.11 2008 в 14:31ч.
И още нещо. Ето и къде съм пуснал кода с новите промени :)
http://uroci.net/forum/index.php?showtopic=11753

Регистрирайте се, за да добавите коментар


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: Национален Бизнес | Bomba.bg | IT Новини | Диплома.бг | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | Фото Форум | Spodeli.net | Фото-Култ | Atol.bg | Elmaz.com | MobileBulgaria.com | Казанлък.Com