Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nettotma14

Gerar numero sequencial sem auto_increment

Recommended Posts

Gostaria que quando um formulario fosse enviado, aepesar de ele criar uum numero sequencial pelo auto_increment, eu gostaria de criar outro.

Necessito dessa função pois precisamos separar os projetos por ano, e também por numero, tudo junto.

 

Então ficaria mais ou menos assim:

001/10

002/10

003/10

004/10

005/10

... assim por diante...

 

quando 2011 chegar, começaria:

001/11

002/11

003/11

004/11

005/11

... assim por diante...

 

tem como fazer isso? ja ouvi algumas pessoas falando em usar o MAX do SQL, mais acho que nao serve.

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você iria precisar fazer um SELECT utilizando MAX onde o ano de cadastro fosse igual ao atual.

 

Retornaria um número, depois basta fazer assim: $novo_id = ($numero_banco+1)."/".date("y")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Continue utilizando o auto_increment para cada projeto ter uma identificação unica.

 

Agora te faço uma pergunta. Pra que mudar a forma que o campo de identificação do projeto funciona? Não seria melhor criar uma maneira "paralela" a isso? Olha, eu já perdi a conta de quantas pessoas fazem essa mesma pergunta que você aqui no iMasters hehehe.

 

Então eu te sugiro fazer o seguinte. Crie um campo chamado por exemplo `projectDate`, e defina o seu tipo como DATE ou DATETIME. Pronto! Agora o resto é tudo feito na consulta. Ela poderia ser feita mais ou menos assim:

 

SELECT `projectId`, `projectName` FROM `projects` ORDER BY YEAR(`projectDate`) ASC, `projectId` ASC

 

Faça alguns testes e depois diga o que achou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que lhe indico é fazer os seguintes campos:

 

ProjetoID (int) auto_increment

ID (varchar) formato 0001/10

Ano (int) 2010

 

Depois você deverá fazer uma consulta com o MAX com o WHERE ano = $ano

 

Então, irá gerar um novo id assim:

 

$novoID = ($numeromaximo + 1)."/".date("y");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nós precisamos desse numero pois funciona como um protocolo, todos formularios serão impressos, e precisa ter esse numero numero/ano (001/10)

Se tiver alguma sugestão melhor do que essa que postei aqui, pode sugerir.

Equanto isso vou testar a opção do HJHESS.

Obrigado galera

 

Continue utilizando o auto_increment para cada projeto ter uma identificação unica.

 

Agora te faço uma pergunta. Pra que mudar a forma que o campo de identificação do projeto funciona? Não seria melhor criar uma maneira "paralela" a isso? Olha, eu já perdi a conta de quantas pessoas fazem essa mesma pergunta que você aqui no iMasters hehehe.

 

Então eu te sugiro fazer o seguinte. Crie um campo chamado por exemplo `projectDate`, e defina o seu tipo como DATE ou DATETIME. Pronto! Agora o resto é tudo feito na consulta. Ela poderia ser feita mais ou menos assim:

 

SELECT `projectId`, `projectName` FROM `projects` ORDER BY YEAR(`projectDate`) ASC, `projectId` ASC

 

Faça alguns testes e depois diga o que achou.

 

Nao entendi muito bem como fazer o MAX pegando o ultimo ano...

por enquanto meu select esta assim:

 

$result = mysql_query("SELECT MAX(sequencia) as 'numero' FROM minhatabela");
while ($row = mysql_fetch_array($result, $linkar)) {
    
$novonumero = $row['numero']+1;
	
$sql = "UPDATE minhatabela SET
	sequencia        = '".$novonum."'
	where outrocampo = ".$_POST['outrocampo '];	

mysql_query($sql,$linkar) or die ("<font style=Arial color=red><h1>Houve um erro na gravação dos dados</h1></font>". mysql_error());
}
mysql_free_result($result);

Mais nao fiz nada de validação em relação ao ano.

Na hora de listar eu faço assim:

<?php echo $linha['sequencia'];if($linha['sequencia'] != ""){echo "/".date("Y", strtotime($linha['data']));}else{} ?>

Mas dessa forma o numero nunca vai resetar quando mudarmos pra 2011.

Como posso estar fazendo isso?

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.