2010-07-08 105 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);