Generar numero id consecutivo con reinicio anual en PHP

publicado por: user55516

Tengo el siguiente código,

_x000D_

_x000D_

<?php_x000D_
session_start();_x000D_
/* Inicia validacion del lado del servidor */_x000D_
if (empty($_POST['sheets'])) {_x000D_
    $errors[] = "Hojas vacío";_x000D_
} else if (empty($_POST['title'])) {_x000D_
    $errors[] = "Asunto vacío";_x000D_
} else if (_x000D_
        !empty($_POST['sheets']) &&_x000D_
        !empty($_POST['title'])_x000D_
) {_x000D_
_x000D_
    include "../config/config.php"; //Contiene funcion que conecta a la base de datos        _x000D_
_x000D_
    $title = $_POST["title"];_x000D_
    $description = $_POST["description"];_x000D_
    $sender_id = $_POST["sender_id"];_x000D_
    $kind_id = $_POST["kind_id"];_x000D_
    $user_id = $_SESSION["user_id"];_x000D_
    $project_id = $_POST["project_id"];_x000D_
    $category_id = $_POST["category_id"];_x000D_
    $priority_id = $_POST["priority_id"];_x000D_
    $status_id = $_POST["status_id"];_x000D_
    $attach_id = $_POST["attach_id"];_x000D_
    $hojas = $_POST["sheets"];_x000D_
    $created_at = "NOW()";_x000D_
//                $asigned_id = $_SESSION["asigned_id"];          _x000D_
//                $publico = $_POST["publico"];_x000D_
    // $user_id=$_SESSION['user_id'];_x000D_
_x000D_
    $sql = "insert into document (title,description,sender_id,kind_id,user_id,project_id,category_id,priority_id,status_id,attach_id,sheets,created_at) value ("$title","$description","$sender_id",$kind_id,$user_id,"$project_id","$category_id",$priority_id,$status_id,$attach_id,$hojas,$created_at)";_x000D_
_x000D_
    $query_new_insert = mysqli_query($con, $sql);_x000D_
    if ($query_new_insert) {_x000D_
        $messages[] = "Tu documento ha sido ingresado satisfactoriamente.";_x000D_
    } else {_x000D_
        $errors [] = "Lo siento algo ha salido mal intenta nuevamente." . mysqli_error($con);_x000D_
    }_x000D_
} else {_x000D_
    $errors [] = "Error desconocido.";_x000D_
}_x000D_
_x000D_
if (isset($errors)) {_x000D_
    ?>_x000D_
  <div class="alert alert-danger" role="alert">_x000D_
    <button type="button" class="close" data-dismiss="alert">&times;</button>_x000D_
    <strong>Error!</strong>_x000D_
    <?php_x000D_
        foreach ($errors as $error) {_x000D_
            echo $error;_x000D_
        }_x000D_
        ?>_x000D_
  </div>_x000D_
  <?php_x000D_
}_x000D_
if (isset($messages)) {_x000D_
    ?>_x000D_
    <div class="alert alert-success" role="alert">_x000D_
      <button type="button" class="close" data-dismiss="alert">&times;</button>_x000D_
      <strong>¡Bien hecho!</strong>_x000D_
      <?php_x000D_
        foreach ($messages as $message) {_x000D_
            echo $message;_x000D_
        }_x000D_
        ?>_x000D_
    </div>_x000D_
    <?php_x000D_
}_x000D_
?>

_x000D_

_x000D_

_x000D_

El campo Id de la tabla lo tengo como incremental, pero además necesito que este ID se guarde con el año, pero que cada año reinicie el Id y cambie el año

2017-00280 que quede así actualmente

y el otro año inicie así

2018-00001

solución

Para crear un código de esa forma necesitas hacer una query previa y obtener la cantidad de registros del año actual. Luego incrementas y colocas el formato que sea necesario:

<?php 
    // consulta que cuenta los registros del año actual
    $result = query_result("select count(*) as cont from document where year(created_at)=year(now())");
    $cont = $result->cont + 1; //incrementas
    $num = sprintf("%'.05d", $cont); // formato con 5 digitos
    $codigo = date("Y")."-".$num; // concatenas con el año actual
    echo $codigo;
?>
Respondido por: Anonymous

Leave a Reply

Your email address will not be published.