Ir para conteúdo

POWERED BY:

Arquivado

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

Douglas Fabiano

[Resolvido] Auto numeração

Recommended Posts

Boa noite amigos, vejam se podem me auxiliar nessa questão:

 

Preciso criar um campo de auto-numeração porem com o seguinte formato "0001-2010" ou seja ele seria incrementado automaticamente "0002-2010", isso porque esse numero de controle seria por ano, assim quando fosse 2011 eu apenas iria alterar o ano e retornaria para o numero "0001-2011".

 

Quando o usuário entrasse na tela do aplicativo web, ja retornaria o novo numero em cada novo registro.

 

Alguem tem uma idéia de como poderia ser feito esse incremento?

 

Abs

 

Douglas Fabiano

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara acho que esse exemplo que eu fiz rapidinho aqui vai resolver o que você quer.....

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

crie uma tabela com os campos: id, auto, ano

 

<?php
$conn = mysql_connect("localhost", "root", "") or die (mysql_error());
$db   = mysql_select_db("teste");

$data = date("Y");
$ano = $data;
echo $ano;
/*id, auto, ano*/
$sql     = mysql_query("SELECT * FROM tabela ORDER BY id DESC LIMIT 0,1");
$conta   = mysql_num_rows($sql);
if ($conta!=0){
$ver     = mysql_fetch_object($sql);
$id      = $ver->id;
$auto    = $ver->auto;
$ano_bd  = $ver->ano;
//vamos inserir... no banco
if($ano = $ano_bd){
$novo_auto = $auto+1;
"INSERT INTO tabela (auto,ano) VALUES ('$novo_auto','$ano')";
}
elseif($ano < $ano_bd){
$ini_auto  = "0001";
"INSERT INTO tabela (auto,ano) VALUES ('$ini_auto','$ano_bd')";
}

}
else{
echo "Erro Nenhum Registro encontrado...";
exit();
}
//na hora de mostrar o codigo.... você faz só uma junção dos dois campos...
echo $auto."-".$ano;
?>

MSN: macielc.ronaldo@hotmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

macielcr7

 

porem depois vou precisar buscar essa informações em um campo apenas tipo: Informe o código: "0001-2010". Será que isso será possivel, mesmo com a base tendo campos separados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

macielcr7

 

porem depois vou precisar buscar essa informações em um campo apenas tipo: Informe o código: "0001-2010". Será que isso será possivel, mesmo com a base tendo campos separados?

 

Respondendo a sua dúvida! sim é possível usando a função explode()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais fácil entender a função "explode()" explicando o caso:

 

<?php

/* Quando o usuário informar o código, quebraremos a string para um array, usando a função explode() */
$codigo = "0001-2010";
$codigo = explode("-", $codigo); // isso transformará a string $codigo no array $codigo = array("0001", "2010")

/* Agora basta fazer a busca no banco, selecionando o código naquele ano: */
$query = "SELECT * FROM tabela_registro WHERE codigo = '$codigo[0]' AND ano = '$codigo[1]'";
$consulta = mysql_query($query);
$resultado = mysql_fetch_array($consulta);

/* E pronto!! No array $resultado você terá todos os dados referentes ao registro 0001 do ano de 2010. */

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom no momento fiz o teste do código para gerar o numero automático. Porem resulta apenas o cano 2010.

 

veja a imagem:

Imagem Postada

 

Porque sera que não fez a conta;

 

vejam o código como está:

 

<title>teste de autonumeracao</title>
</head>
<body>
<?php
$data = date("Y");
$ano = $data;
echo $ano;
/*id, auto, ano*/
$sql     = mysql_query("SELECT * FROM tabela ORDER BY id DESC LIMIT 0,1");
$conta   = mysql_num_rows($sql);
if ($conta!=0){
$ver     = mysql_fetch_object($sql);
$id      = $ver->id;
$auto    = $ver->auto;
$ano_bd  = $ver->ano;
//vamos inserir... no banco
if($ano = $ano_bd){
$novo_auto = $auto+1;
"INSERT INTO tabela (auto,ano) VALUES ('$novo_auto','$ano')";
}
elseif($ano < $ano_bd){
$ini_auto  = "0001";
"INSERT INTO tabela (auto,ano) VALUES ('$ini_auto','$ano_bd')";
}

}
else{
echo "Erro Nenhum Registro encontrado...";
exit();
}
//na hora de mostrar o codigo.... você faz só uma junção dos dois campos...
echo $auto."-".$ano;
?>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vejam a tbl:

  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(50) DEFAULT NULL,
  `endereco` varchar(50) DEFAULT NULL,
  `auto` tinyint(5) unsigned DEFAULT NULL,
  `ano` tinyint(5) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=18;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Cara kkkkkkkkkkkkkkkk

esqueçie de colocar mysql_query

então ajeitei.........

 

Coloca aeeeee

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("imasters");

$data = date("Y");
$ano = $data;
//echo $ano;
/*id, auto, ano*/
$sql     = mysql_query("SELECT * FROM tabela ORDER BY id DESC LIMIT 0,1");
$conta   = mysql_num_rows($sql);
if ($conta!=0){
$ver     = mysql_fetch_object($sql);
$id      = $ver->id;
$auto    = $ver->auto;
$ano_bd  = $ver->ano;
//vamos inserir... no banco
if($ano = $ano_bd){
$novo_auto = $auto+1;
mysql_query("INSERT INTO tabela (auto,ano) VALUES ('$novo_auto','$ano')");
}
elseif($ano < $ano_bd){
$ini_auto  = "0001";
mysql_query("INSERT INTO tabela (auto,ano) VALUES ('$ini_auto','$ano_bd')");
}

}
else{
$auto = "0001";
mysql_query("INSERT INTO tabela (auto,ano) VALUES ('0001','$ano')");

}
//na hora de mostrar o codigo.... você faz só uma junção dos dois campos...
echo $auto."-".$ano;
?>

MSN: macielc.ronaldo@hotmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu certo, porem quando eu atualizo a página ele me retorna um numero anterior. Ou seja se no browser aparece 01-2010 no meu banco de dados está 02-2010.

 

Veja no navegador como fica:

Imagem Postada

 

Porem no banco ele está lendo o registro anterior; Imagem:

Imagem Postada

 

Agora o código como está:

 

<?
require_once 'conexao_1.php';
?>
<title>teste de autonumeracao</title>
</head>
<body>
<?php
$data = date("Y");
$ano = $data;
//echo $ano;
/*id, auto, ano*/
$sql     = mysql_query("SELECT * FROM tabela ORDER BY id DESC LIMIT 0,1");
$conta   = mysql_num_rows($sql);
if ($conta!=0){
$ver     = mysql_fetch_object($sql);
$id      = $ver->id;
$auto    = $ver->auto;
$ano_bd  = $ver->ano;
//vamos inserir... no banco
if($ano = $ano_bd){
$novo_auto = $auto+1;
mysql_query("INSERT INTO tabela (auto,ano) VALUES ('$novo_auto','$ano')");
}
elseif($ano < $ano_bd){
$ini_auto  = "0001";
mysql_query("INSERT INTO tabela (auto,ano) VALUES ('$ini_auto','$ano_bd')");
}

}
else{
$auto = "0001";
mysql_query("INSERT INTO tabela (auto,ano) VALUES ('0001','$ano')");

}
$ver2    = mysql_fetch_object($sql);
$auto2    = $ver->auto;
$ano_bd2  = $ver->ano;
//na hora de mostrar o codigo.... você faz só uma junção dos dois campos...
echo $auto2."-".$ano_bd2;
?>

Essa é a base:

  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(50) DEFAULT NULL,
  `endereco` varchar(50) DEFAULT NULL,
  `auto` int(11) DEFAULT NULL,
  `ano` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=18;

Compartilhar este post


Link para o post
Compartilhar em outros sites

kkkkkkkkkkkkkkkkkkkkkk.!'

 

Cara Me Desculpe Mais uma vez...........

 

Erro Meu........

veja essa Linha......

$ver2    = mysql_fetch_object($sql);
$auto2    = $ver->auto;
$ano_bd2  = $ver->ano;
//na hora de mostrar o codigo.... você faz só uma junção dos dois campos...
echo $auto2."-".$ano_bd2;

encontrou o erro?

 

Não?.......

 

Pois o certo é assim.......

 

$ver2    = mysql_fetch_object($sql);
$auto2    = $ver2->auto;
$ano_bd2  = $ver2->ano;
//na hora de mostrar o codigo.... você faz só uma junção dos dois campos...
echo $auto2."-".$ano_bd2;

Vlws........... ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá macielcr7

 

quando eu coloco assim:

 

 

}
$ver2    = mysql_fetch_object($sql);
$auto2    = $ver2->auto;
$ano_bd2  = $ver2->ano;
//na hora de mostrar o codigo.... você faz só uma junção dos dois campos...
echo $auto2."-".$ano_bd2;
?>

o resultado fica em branco...

 

quando volto para:

 


}
$ver2    = mysql_fetch_object($sql);
$auto2    = $ver->auto;
$ano_bd2  = $ver->ano;
//na hora de mostrar o codigo.... você faz só uma junção dos dois campos...
echo $auto2."-".$ano_bd2;
?>

ele mostra o resultado anterior....

 

ainda não deu certo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu macielcr7 . Resolvido.

 

ficou assim:


$sql2     = mysql_query("SELECT * FROM tabela ORDER BY id DESC ");
$ver2    = mysql_fetch_object($sql2);
$auto2    = $ver2->auto;
$ano_bd2  = $ver2->ano;
//na hora de mostrar o codigo.... você faz só uma junção dos dois campos...
echo $auto2."-".$ano_bd2;

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.