Foros del Web » Programando para Internet » PHP »

Función para generar de manera automática llave primaria alfanumérica

Estas en el tema de Función para generar de manera automática llave primaria alfanumérica en el foro de PHP en Foros del Web. Buen día colegas, he tenido un pequeño problema con la siguiente función, que he creado para que de manera consecutiva me cree llaves primarias alfanumérica, ...
  #1 (permalink)  
Antiguo 13/11/2009, 10:27
 
Fecha de Ingreso: marzo-2009
Ubicación: Cali (Valle) - Colombia
Mensajes: 164
Antigüedad: 15 años, 1 mes
Puntos: 2
De acuerdo Función para generar de manera automática llave primaria alfanumérica

Buen día colegas, he tenido un pequeño problema con la siguiente función, que he creado para que de manera consecutiva me cree llaves primarias alfanumérica, para mi aplicación.

function maxValueIdTable($name_db,$table,$prefix)
//$name es el nombre de la bd
//$table es el nombre de la tabla donde voy a generar la llave primaria
//$prefix es el prefijo en la llave primaria (ya que las llaves son alfanuméricas, con el formato USU1, USU2, USU3......... en el caso de la tabla usuarios)
{
$maxValue="select max(id) from $table";
$maxValue=mysql_db_query($name_db,$maxValue);
$maxValue=explode($prefix,$maxValue);
$maxValue=$maxValue[0];
$maxValue=$prefix.($maxValue+1);
return($maxValue);
}


Pero esta me está retornando "Resource # id".

Por favor si alguien detecta el error, le agradeceria mucho que me ayude.
  #2 (permalink)  
Antiguo 13/11/2009, 10:29
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Función para generar de manera automática llave primaria alfanumérica

te falta un mysql_fetch_assoc

saludos!
  #3 (permalink)  
Antiguo 13/11/2009, 12:28
 
Fecha de Ingreso: marzo-2009
Ubicación: Cali (Valle) - Colombia
Mensajes: 164
Antigüedad: 15 años, 1 mes
Puntos: 2
De acuerdo Respuesta: Función para generar de manera automática llave primaria alfanumérica

Muchas gracias........

Haaaaaa...............

Disculpa, eso iria luego de la linea

$maxValue=mysql_db_query($name_db,$maxValue);

?????

Agradecería tu respuesta
  #4 (permalink)  
Antiguo 13/11/2009, 12:34
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Función para generar de manera automática llave primaria alfanumérica

$maxValue=mysql_db_query($name_db,$maxValue);
$maxValue=mysql_fetch_assoc($maxValue);
$maxValue=explode($prefix,$maxValue);
  #5 (permalink)  
Antiguo 17/11/2009, 16:20
 
Fecha de Ingreso: marzo-2009
Ubicación: Cali (Valle) - Colombia
Mensajes: 164
Antigüedad: 15 años, 1 mes
Puntos: 2
De acuerdo 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
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:19.