
24/11/2006, 10:30
|
| | Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 18 años, 9 meses Puntos: 0 | |
optimizar mas este Codigo de Numeracion Correlativa <?
function auto_numerico($tabla)
{
//Variable Inicial
$lngAnterior = 1;
//Conexion y Consulta
$enlace = Conectarse();
$rs = mysql_query("Select id FROM ".$tabla." ORDER BY id ASC",$enlace);
//Obtencion de los datos
$cant_cero = mysql_num_rows($rs);
if($cant_cero == 0)
{
return $id_cont = "00001";
exit();
}
//Obtenemos el primer dato y verificamos su valor
$row = mysql_fetch_object($rs);
$id = sprintf("%d",$row->id);
if($id > 1)
{
return $id_cont = "00001";
exit();
}
//Recoremos los siguientes numeros
do
{
$id = sprintf("%d",$row->id);
if($id == ($lngAnterior + 1))
{
$lngAnterior = $id;
}
else if($id > ($lngAnterior + 1))
{
return $id_cont = sprintf("%05s",$lngAnterior + 1);
}
else if($id == $lngAnterior)
{
$lngAnterior = $id;
}
}while($row = mysql_fetch_object($rs));
//Si llegamos al final y los numeros son correlativos
return $id_cont = sprintf("%05s",$lngAnterior + 1);//Retornamos el valor
//Cerramos las conexiones
mysql_free_result($rs);
mysql_close($enlace);
}//Cierre de la funcion
?>
Esta funcion realiza la siguiente operacion, Genera numeros correlativamente sin dejar huecos como por ejemplo:
numeros generados
00001 00002 00003 00004 00005 ......
numeros con huecos en diferentes casos
1) 00001 XXXXXX 00003 00004 00005 .........
2) 00002 00003 XXXXX 00005 00006 ...........
3) y cuando esta vacia la tabla tambien
entonces el busca huecos que encuentra y sigue la secuencia de los numeros
aqui esta implementado para un varchar(5), puede ser un char(5) y tambien se pueden hacer modificaciones para que devuelva un INT. |