Aplicar formato a un código “id”.
Resumen.
Las bases de datos son perfectas para tener ordenados y referenciados tanto usuarios, como clientes, artículos, facturas, etc. Pero a veces los identificadores pueden ser un tanto confusos cuando estamos atendiendo a un cliente por teléfono. En este artículo vamos a presentar una forma muy sencilla de referenciar de manera inequívoca cualquier de estos conceptos en una llamada telefónica.Artículo.
En todas o prácticamente todas las tablas que se crean contienen un campo numérico de tipo autoincremental, el “id”. De manera predeterminada este campo comienza por 1 y se incrementa en 1 con cada registro nuevo. Si un registro se elimina, la tabla continuando generando el siguiente “id” como si no se hubiera eliminado el anterior. Por supuesto, este id también lo podemos inicializar en el valor que queramos, por ejemplo el 1000 o el 1001, eso ya es cuestión de gustos.
La cuestión es que este campo puede sernos tremendamente útil para realizar gestiones sobre todo cuando nos llaman por teléfono para algún tipo de consulta. El problema que tiene el id es que también puede resultar un poco “confuso” cuando supera los 5 y no digamos los 6 dígitos, también puede arrojar confusión el hecho de que unos id tengan 3 dígitos y otros 5 o 6 dígitos.
Así, si un usuario nos llama por un comentario que ha publicado pidiendo una aclaración y que no ha llegado a comprender, puede decirnos, mi comentario es el 127483, que es el id del comentario en cuestión. Pues bien, ¿no seria más cómodo presentar este identificador como 0012-7483? Dicho esto, vamos a lío.
En el ejemplo mencionado hemos pasado el identificador de 6 dígitos a 8, lo hemos alargado. El motivo, sencillo, siempre le podemos decir al cliente que nos llama por teléfono “es un código de 8 dígitos separados por un guion”, de esta forma, a nuestro cliente le resultará mas fácil encontrarlo que si el código tiene diferentes números de caracteres.
Para esto, hemos desarrollado lo siguiente función:
Esta función lo primero que hace es agregar ceros a la izquierda hasta completar el número de dígitos indicados, esto lo hacemos mediante la función sprintf(), seguidamente tras realizar operaciones para el recuento de caracteres, mediante la función substr() extraemos los grupos de caracteres correspondientes.
Una vez ya tenemos las partes, optamos por elegir como separador el guion central “-” y realizamos la unión de las variables que componen el código.
Esta función, para su correcto funcionamiento solo puede operar con códigos de 6, 8 y 9 dígitos. En el caso de 6 dígitos devolverá en forma de dos grupos de 3 (256-457), en el caso de 8 dígitos, dos grupos de 4 (5847-2147), y por ultimo en el caso de 9 dígitos devolverá tres grupos (0-1271-8953).
¿Qué opción nos conviene más? Pues eso ya es cuestión de la naturaleza de los registros en cuestión. Si es para identificar usuarios registrados, para la inmensa mayoría seria suficiente con 6 dígitos, si es para comentarios, pues no muchos sitios Web superan el millón, pero si esperas que esto pueda suceder, agrega 8 dígitos. Y se crees que puedes superar a Amazon, no tendrás suficiente con 9 dígitos.
Por supuesto, lo ideal es aplicar el formato mas sencillo, y como esta función opera de manera temporal modificando un dato, pero sin alterarlo en nuestra base de datos, en cualquier momento que deseemos, podemos pasar de 6 a 8 dígitos, o a 9, dado que nuestro sitio Web está arrasando Internet.
La cuestión es que este campo puede sernos tremendamente útil para realizar gestiones sobre todo cuando nos llaman por teléfono para algún tipo de consulta. El problema que tiene el id es que también puede resultar un poco “confuso” cuando supera los 5 y no digamos los 6 dígitos, también puede arrojar confusión el hecho de que unos id tengan 3 dígitos y otros 5 o 6 dígitos.
Así, si un usuario nos llama por un comentario que ha publicado pidiendo una aclaración y que no ha llegado a comprender, puede decirnos, mi comentario es el 127483, que es el id del comentario en cuestión. Pues bien, ¿no seria más cómodo presentar este identificador como 0012-7483? Dicho esto, vamos a lío.
En el ejemplo mencionado hemos pasado el identificador de 6 dígitos a 8, lo hemos alargado. El motivo, sencillo, siempre le podemos decir al cliente que nos llama por teléfono “es un código de 8 dígitos separados por un guion”, de esta forma, a nuestro cliente le resultará mas fácil encontrarlo que si el código tiene diferentes números de caracteres.
Para esto, hemos desarrollado lo siguiente función:
<?php
// Agregamos ceros a la izquierda hasta completar X caracteres
// y lo dividimos en grupos
function FormaCod($valor, $ndigitos){
$total_digitos = sprintf('%0'.$ndigitos.'d', $valor);
$grupos = 2;
$divide = ceil($ndigitos / $grupos);
$impar = $ndigitos % $grupos;
if($impar <> 0){
$primer_grup = substr($total_digitos, 0, $divide); // Imprimimos los x primeros caracteres de la izquierda
$n = strlen($primer_grup);
$sub_grupo = substr($primer_grup, 0, $n - 4); // Imprimimos los x primeros caracteres de la izquierda
$primer_grupo = $sub_grupo.'-'.substr($primer_grup, $n - 4);
}else{
$primer_grupo = substr($total_digitos, 0, $divide); // Imprimimos los x primeros caracteres de la izquierda
}
$segundo_grupo = substr($total_digitos, ($ndigitos - $divide) * -1); // Imprimimos los tres caracteres de la derecha
$codigo_ok = $primer_grupo.'-'.$segundo_grupo;
return $codigo_ok;
}
// Aplicamos la funcion
$id = 4724567;
$digitos = 8; // Valores admitidos: 6, 8 y 9
$id_formato = FormaCod($id, $digitos);
echo "Código original: $id <br />
Con formato legible: $id_formato";
?>
Esta función lo primero que hace es agregar ceros a la izquierda hasta completar el número de dígitos indicados, esto lo hacemos mediante la función sprintf(), seguidamente tras realizar operaciones para el recuento de caracteres, mediante la función substr() extraemos los grupos de caracteres correspondientes.
Una vez ya tenemos las partes, optamos por elegir como separador el guion central “-” y realizamos la unión de las variables que componen el código.
Esta función, para su correcto funcionamiento solo puede operar con códigos de 6, 8 y 9 dígitos. En el caso de 6 dígitos devolverá en forma de dos grupos de 3 (256-457), en el caso de 8 dígitos, dos grupos de 4 (5847-2147), y por ultimo en el caso de 9 dígitos devolverá tres grupos (0-1271-8953).
¿Qué opción nos conviene más? Pues eso ya es cuestión de la naturaleza de los registros en cuestión. Si es para identificar usuarios registrados, para la inmensa mayoría seria suficiente con 6 dígitos, si es para comentarios, pues no muchos sitios Web superan el millón, pero si esperas que esto pueda suceder, agrega 8 dígitos. Y se crees que puedes superar a Amazon, no tendrás suficiente con 9 dígitos.
Por supuesto, lo ideal es aplicar el formato mas sencillo, y como esta función opera de manera temporal modificando un dato, pero sin alterarlo en nuestra base de datos, en cualquier momento que deseemos, podemos pasar de 6 a 8 dígitos, o a 9, dado que nuestro sitio Web está arrasando Internet.
Tags: Código || formato || sprintf || substr || dígitos