Creation of an Identification Code with PHP and MySQL [closed]

-1

I'm starting to work with programming now and I have a lot of doubts. I need to create a specific "TAG" for equipment registration. This TAG must have 4 letters + 4 digits, eg: CEME-0001. The first four letters refer to the sector that the equipment is located and the 4 numbers a value to be incremented each new cadastre. The letters of the sectors will come from the "tb_setores" table of the "sigla_setor" field. Any idea how I can make a code to perform this action when registering an equipment? I will also need to update this field, it is possible to transfer the sector equipment, which in the case will change the letters and increase the numbers according to the amount of equipment of the sector transferred.     

asked by anonymous 26.05.2018 / 19:58

1 answer

1
  

As a welcome gift is an answer, in your next questions follow the post I recommended in the comment of your question

//conexão ao banco
$conn = new mysqli("localhost", "USUARIO", "SENHA", "nome_DB");

//Letras dos setores recuperadas via post do formulário
$centro=$_POST["centro"];

/*seleciona um registro (limit 1) cujo as 4 primeiras letras são iguais
a variável acima na ordem descendente da coluna tag, que significa dizer, o maior, 
pois a parte das letras com tracinho são iguais e o que vai prevalecar na ordenação é
a parte numerica.******/    

$query = ("SELECT tag FROM cadastro WHERE LEFT(tag,4)='$centro' order by tag DESC limit 1");

$result = mysqli_query($conn,$query);

    while($row = mysqli_fetch_assoc($result)) {
         //o registro
         $tag = $row["tag"];
         //separamos a parte numerica
         $num=substr($tag,5);
    } 

    /*****caso haja registro insere incrementando, caso contrário
    vai pro else inserir o primeiro******/
    if ($num!=""){
        //somamos 1 a parte numerica
        $proximo=($num+1);
        /**retorna o comprimento da variável acima, necessário pq o PHP ao somar 0001 + 1
        retorna 2, 0012 + 1 retorna 13, 0155 + 1 retorna 156  etc... dai 
        precisamos saber quantos zeros a esquerda serão necessários***/
        $comprimento=strlen($proximo);
        //quantidade e zeros necessários
        $zerosEsquerda = "4-$comprimento";
        // função responsável por colocar os zeros à esquerda
        $num = str_pad($proximo, $zerosEsquerda, '0', STR_PAD_LEFT);
        // preparação do value da declaração insert
        $strProximo= $centro."-".$num;

        $conn->query("Insert into cadastro (tag) values ('".$strProximo."')");

    }else{

        $primeiro=$centro."-0001";
        $conn->query("Insert into cadastro (tag) values ('".$primeiro."')");

    }
    
27.05.2018 / 00:30