Foros del Web » Programando para Internet » PHP »

optimizar mas este Codigo de Numeracion Correlativa

Estas en el tema de optimizar mas este Codigo de Numeracion Correlativa en el foro de PHP en Foros del Web. <? 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); ...
  #1 (permalink)  
Antiguo 24/11/2006, 10:30
 
Fecha de Ingreso: junio-2006
Mensajes: 126
Antigüedad: 17 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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:47.