Douglas 6 Denunciar post Postado Novembro 9, 2004 Gostaria de saber se existe alguma função para criar 'ids únicos', ou seja um ID que não se repita com números e caracteres ASCII? Compartilhar este post Link para o post Compartilhar em outros sites
pedrohenrique 0 Denunciar post Postado Novembro 9, 2004 esse ai funciona direitinho ele cria um id com letras e numeros voce pode escolher o numero de caracteres para o id depois ele verifica no banco de dados se já existe (voce deve configurar sua conexao e tabelas no bd) se existir ele faz um loop até encontrar um novo, que nao tenha sido cadastrado ainda $tamanhol=numero de letras no id $tamanhon=numero de numeros no id PHP [/tr][tr]<?function geraid($tamanhol=2,$tamanhon=2){ $this->tamanhol=$tamanhol; $this->tamanhon=$tamanhon; $this->letras="abcdefghijklmnpqrstuvwxyz"; for($i=0; $i<strlen($this->letras); $i++){ $this->letracar[$i]=$this->letras[$i]; } srand((float)microtime()*1000000); shuffle($this->letracar); for($i=0; $i<$this->tamanhol; $i++){ $charnum=rand(1, count($this->letracar)); $this->final.=$this->letracar[$charnum-1]; } $this->numeros="123456789"; for($i=0; $i<strlen($this->numeros); $i++){ $this->numerocar[$i]=$this->numeros[$i]; } srand((float)microtime()*1000000); shuffle($this->numerocar); for($i=0; $i<$this->tamanhon; $i++){ $charnum=rand(1,count($this->numerocar)); $this->final.=$this->numerocar[$charnum-1]; } return $this->final; } $id=geraid(); include"conectadb.php"; //verifica se o id já esta cadastrado, se ele já existe no bd $query=mysql_query("SELECT `id` FROM `tabela` WHERE `id`='$id';",$con); $idi=mysql_fetch_object($query); if($idi){ //se ele existir, faz um loop até encontrar um que ainda não exista while($idi){ $id=geraid(); $query=mysql_query("SELECT `id` FROM `tabela` WHERE `id`='$id';",$con); $idi=mysql_fetch_object($query); if($idi){ $idi=s; }else{ $idi=NULL; } } } $idf=strtoupper($id); ?>[/tr] Compartilhar este post Link para o post Compartilhar em outros sites
Douglas 6 Denunciar post Postado Novembro 11, 2004 Mas há a possibilidade de criar dois ids iguais? Compartilhar este post Link para o post Compartilhar em outros sites
Wilker 3 Denunciar post Postado Novembro 11, 2004 bom, o mais facil seria definir um numero de auto-incremento na propria bd: create table teste( id int(100) not null auto_increment, primary key(id) ); mas c você estiver querendo q o ID seja com numeros e letras, e de forma + aleatoria você pode fazer assim: PHP [/tr][tr] function gerar() { $caracteres = "qwertyuioplkjhgfdsazxcvbnm0123456789"; //definimos os caracteres que serao usados $qtd = strlen($caracteres) - 1; //contamos quantos caracteres existem e tiramos 1 $tamanhoID = 10; //dizemos aqui queremos que o id tenha 10 caracteres(coloque qtos você quizer) $idFinal = ""; //declaramos a variavel em branco while($i = 0; $i < $tamanhoID; $i++) { //loop para gerar o ID $randNum = rand(0, $qtd); //geramos um numero entre 0 e $qtd $idFinal .= $caracteres[$randNum]; //pegamos o caractere de numero $randNum na string $caracteres } return $idFinal;//retorna o ID gerado } $id = gerar(); while(mysql_num_rows(mysql_query("select id from tabela where id = '{$id}'")) > 0) { $id = gerar(); } //com isso ele vai gerar codigos aleatorios ateh encontrar um que n esteja sendo usado mysql_query("insert into tabela (id) values ('{$id}');"); // isso vai inserir o novo valor [/tr] bom, espero q você tenha entendido a estrutura, qualquer coisa eh soh postar ;) Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Novembro 12, 2004 no PHP existe uma função uniqid();é bastante usado quando faz upload de arquivos, para não conflitar com nomes iguais.exemplo de uso:<?echo uniqid(time());echo ""echo uniqid(time());?> Compartilhar este post Link para o post Compartilhar em outros sites
pedrohenrique 0 Denunciar post Postado Novembro 12, 2004 Mas há a possibilidade de criar dois ids iguais? nao!!!ele faz uma busca na tabela do banco de dadosse existir um igual ele entra num while, que gera um id novo e consulta pra ver se tem um igual até que gere um que ainda não esteja no banco de dados, esse será o usadoassim nunca terá um id igual ao outro. Compartilhar este post Link para o post Compartilhar em outros sites