2010-07-08 11 views
0

Je souhaite générer un ID d'employé alphanumérique dans PHP, par exemple. EP0001Générer un ID d'employé alphanumérique

Des idées?

+0

comment voulez-vous générer que plus de détails. – Sarfraz

+0

utilisez-vous une base de données? Postgresql propose des tables de séquences où vous pouvez obtenir des séquences et des threads en toute sécurité. – pakore

+0

Y at-il une raison pour laquelle vous ne voulez pas le faire dans dabatase? –

Répondre

4

Nous allons avoir besoin de plus que cela pour vous aider, mais c'est ce que je ferais.

En supposant EP est le début de chaque alphanumérique id employé puis

<?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; 
} 
?> 

MISE À JOUR

Merci à Trefex Si vous utilisez MySQL, vous pouvez stocker l'ID employé dans un champ et définissez l'attribut ZEROFILL. De cette façon, vous ne devez pas traiter avec les zéros en PHP

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

Si vous utilisez MySQL, vous pouvez stocker l'ID employé dans un champ et définir l'attribut ZEROFILL. De cette façon, vous n'avez pas à gérer les zéros dans PHP. – Trefex

+2

sans verrouillage de la table en cours, vous avez une condition de course ici. –

+0

aussi, un moyen moins bavard pour le pad serait return sprintf ('% 04d', $ num); –

0

Vous pouvez aller avec le code suivant si vous cherchez

<?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; 

?> 

de id aléatoire Vous pouvez trouver cela plus & dans Google lui-même

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

+0

Il n'y a pas besoin de mots avec des tableaux; vous pouvez également accéder aux chaînes avec la syntaxe '$ str [12345]'. – Gumbo

1

il suffit de faire de manière séquentielle, il n'y a pas besoin de données « code » dans un nombre tel "E signifie qu'il est employé au niveau de l'entreprise et P signifie qu'il se gare dans P-lot". C'est une façon obsolète de faire les choses qui a été créée avant que les bases de données n'existent. Encoder des significations spéciales dans un identifiant unique qui peut changer sera un cauchemar, il n'y a pas besoin de le faire et c'est une mauvaise conception de base de données.

Alternativement, si ces nombres sont sujets à un certain niveau de fraude, générez-les dans une méthode non séquentielle, comme générer un UID psudo-aléatoire et vérifier s'il est utilisé ou non, puis l'affecter.

0

Essayez le code suivant:

$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); 
Questions connexes