Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/11/2006, 10:30
javsoft
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 17 años, 10 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.