![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
17/11/2009, 16:20
|
| | Fecha de Ingreso: marzo-2009 Ubicación: Cali (Valle) - Colombia
Mensajes: 164
Antigüedad: 15 años, 10 meses Puntos: 2 | |
Respuesta: Función para generar de manera automática llave primaria alfanumérica Muchas gracias por responder amigo........
Aunque tuve que añadir como una linea de más para que la función quedara bien y finalmente quedo así:
function maxValueIdTable($name_db,$table,$prefix)//Función para traer el máximo valor de la llave primaria de una tabla, limitada en el número 10
{
$maxValue="select max(id) from $table";
$maxValue=mysql_db_query($name_db,$maxValue);
$maxValue=mysql_fetch_assoc($maxValue);
$maxValue=$maxValue['max(id)'];
$maxValue=explode($prefix,$maxValue);
$maxValue=$maxValue[1];
$maxValue=$prefix.($maxValue+1);
return($maxValue);
}
Aunque el problema ahora es que esta función solo se desempeña bien hasta cuando hay 9 ó menos registros en mi tabla, una vez supera ese número las llaves no se generan de manera apropiada........
Ante lo cual me di a la tarea de crear esta otra función........
function generatePrimaryKey($name_db,$table,$prefix)//Función para traer el máximo valor de la llave primaria de una tabla
{
$queryTable="select id from $table";
$queryTable=mysql_db_query($name_db,$queryTable);
$rowsTable=mysql_num_rows($queryTable);
for($i=1;$i<=$rowsTable;$i++)
{
$exploreTable="select id from $table where id='$prefix.$i'";
$exploreTable=mysql_db_query($name_db,$exploreTabl e);
$exploreTable=mysql_fetch_assoc($exploreTable);
$primaryKey=$exploreTable['id'];
if($primaryKey==false)
{
$primaryKey=$prefix.$i;
}
}
return $primaryKey;
}
La cual funciona sin problema alguno, siempre y cuando tenga por lo menos un solo registro en tabla, de lo contrario al guardar el primer registro, la llave primaria me la guarda vacia, pero las demás las guarda sin problemas................ SI alguien me puede ayudar ó detectar el error se lo agradecería..............
Última edición por GUILLHERMOSOFT; 17/11/2009 a las 16:25 |