2010-07-08 107 views
0

我想在PHP中生成字母数字员工ID EP0001生成字母数字员工ID

任何想法?

+0

要生成怎么做,更多详情请。 – Sarfraz 2010-07-08 13:01:13

+0

你使用任何数据库吗? Postgresql提供序列表,您可以获得序列并且它是线程安全的。 – pakore 2010-07-08 13:01:40

+0

你有什么理由不想在dabatase中做到这一点? – 2010-07-08 13:02:18

回答

4

我们需要的不仅仅是这些来帮助你,但这是我所要做的。

假设EP是每一个字母员工的id,然后开始

<?php 
$number = getTotalEmployees(); 

$id = 'EP'.$number; 

function getTotalEmployees() { 
    $num = 'Get number of Employees from database'; 
    ++$num; // add 1; 

    $len = strlen($num); 
    for($i=$len; $i< 4; ++$i) { 
     $num = '0'.$num; 
    } 
    return $num; 
} 
?> 

UPDATE

由于Trefex 如果你使用MySQL,你可以在员工ID存储在一个字段并设置ZEROFILL属性。这样,你不必在PHP应对零

<?php 
function getTotalEmployees() { 
    $num = 'Get number of Employees from database'; 
    ++$num; // add 1; 
    return $num; 
} 
?> 
+1

如果您使用MySQL,您可以将员工ID存储在一个字段中并设置ZEROFILL属性。这样你就不必处理PHP中的零。 – Trefex 2010-07-08 13:08:49

+2

没有一些表锁定继续,你有一个竞争条件在这里。 – 2010-07-08 13:11:54

+0

也是一个不太详细的方法来填充它将返回sprintf('%04d',$ num); – 2010-07-08 13:13:15

0

您可以用下面的代码去,如果你正在寻找随机ID的

<?php 
    $numchars = rand(4,15); //You can specify the length here 
    //This is the list from which id is generated. 
    $chars = explode(',','a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,0,1,2,3,4,5,6,7,8,9'); 
    $random=''; 
    //Do a random generation in a for loop 
    for($i=0; $i<$numchars;$i++) { 
    $random.=$chars[rand(0,count($chars)-1)]; 
    } 
    //Here you go.. Nice & pretty 
    echo $random; 

?> 

你可以找到这个&更谷歌本身

http://www.webmaster-talk.com/php-forum/29621-php-randomly-generate-alphanumeric-charachters.html

+0

有没有必要与数组的词;您也可以使用语法'$ str [12345]'来访问字符串。 – Gumbo 2010-07-08 13:18:16

1

只是做他们按顺序,没有必要为“代码”的数据为若干个这样的因为“E表示他是企业级员工,P表示他在P-lot中停车。”这是一种过时的做法,从数据库存在之前就已经悄然而至。将特殊的意义编码成一个可以改变的独特标识符将是一场噩梦,没有必要这么做,而且这是糟糕的数据库设计。

或者,如果这些数字很容易产生某种程度的欺诈,则可以使用非顺序方法生成它们,例如生成一个psudo随机UID并检查它是否正在使用,然后分配它。

0

试试下面的代码:

$auto='Select all documents from your database'; 
$inc=count($auto)+1;//count of number of documents 
$unique_id='Emp_'.str_pad($inc, 3, "0", STR_PAD_LEFT);