Foros del Web » Programando para Internet » PHP »

Generador de Códigos.

Estas en el tema de Generador de Códigos. en el foro de PHP en Foros del Web. Que tal, Tengo una funcion que genera números de legajos de una organización, compuesto por una letra inicial (A,D o E) y un número consecutivo. ...
  #1 (permalink)  
Antiguo 20/01/2006, 16:44
Avatar de Juanmax  
Fecha de Ingreso: diciembre-2005
Ubicación: Paraná, Entre Ríos , Argentina
Mensajes: 90
Antigüedad: 12 años
Puntos: 0
Exclamación Generador de Códigos.

Que tal,

Tengo una funcion que genera números de legajos de una organización, compuesto por una letra inicial (A,D o E) y un número consecutivo. Para generarlos me valgo de la sentencia 'Right' de SQL. Por medio de esta genero una consulta de todas las partes numericas de aquellos legajos que comienzan con cierta letra y le sumo uno. El problema es que por alguna cuestion que no me doy cuenta, el script no se incrementa. Ahí va el código, espero que me puedan ayudar:

Código PHP:
//Asignación de letra comparando carrera:
if ($carrera==1)
     {
     
$letra="A";
     }else{
     if (
$carrera==2)
     {
     
$letra="E";
     }else{
     
$letra="D";
     }
     }
     
//Definición de Sentencia SQL
$buscador="Select  RIGHT(cod_alumno,7) from datos_personales_alumnos where cod_alumno like "%'$letra%'%" ";
$result mysql_query($buscador);
$compara=0;
while (
$row mysql_fetch_array($result))
{
     if (
$compara $row["cod_alumno"])
         {
        
$compara $row["cod_alumno"];
        }
}
$compara++;
$cod_alumno="$letra$compara"
MUCHAS GRACIAS DESDE YA.

Juanmax
  #2 (permalink)  
Antiguo 20/01/2006, 17:02
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 17 años, 2 meses
Puntos: 3
mm... creo que sería mejor que volcaras el resultado de la consulta sql en una tabla con un campo autoincrement y luego tomas de la tabla los datos listos:

select RIGHT(cod_alumno,7)+cast(codigotabla as varchar(10)) from tabla_creada_solo_para_el_autoincrementable...

salu2
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #3 (permalink)  
Antiguo 20/01/2006, 17:18
Avatar de Juanmax  
Fecha de Ingreso: diciembre-2005
Ubicación: Paraná, Entre Ríos , Argentina
Mensajes: 90
Antigüedad: 12 años
Puntos: 0
perdon mi ignorancia, pero no entiendo como funciona eso...

me lo podrías ampliar un poco mas?

DESDE YA MUCHAS GRACIAS.

Juanmax.
  #4 (permalink)  
Antiguo 20/01/2006, 19:28
Avatar de Juanmax  
Fecha de Ingreso: diciembre-2005
Ubicación: Paraná, Entre Ríos , Argentina
Mensajes: 90
Antigüedad: 12 años
Puntos: 0
Exclamación

Este es el nuevo código que probe y tampoco funciona...

Código PHP:
if ($carrera==1)
     {
     
$letra="A";
     }else{
     if (
$carrera==2)
     {
     
$letra="E";
     }else{
     
$letra="D";
     }
     }
     

$querycount="select count(cod_alumno) as encontro from datos_personales_alumnos where LEFT(cod_alumno,1) = '$letra' ";
$identificador=mysql_query($querycount);
$data mysql_fetch_row($identificador);
$definitivo $data[encontro] + 1;
$cod_alumno =$letra.$definitivo
  #5 (permalink)  
Antiguo 21/01/2006, 10:10
Avatar de Juanmax  
Fecha de Ingreso: diciembre-2005
Ubicación: Paraná, Entre Ríos , Argentina
Mensajes: 90
Antigüedad: 12 años
Puntos: 0
De acuerdo Metodo De Hashing Listo Y Funcionando !!

Luego de probar varios códigos, he aquí la solucion. Ojalá a alguien le sirva:
Gracias a todos.

Código PHP:
//ASIGNACION DE VALOR A LA LETRA QUE IDENTIFICA LA CARRERA
if ($carrera==1)
     {
     
$letra="A";
     }else{
     if (
$carrera==2)
     {
     
$letra="E";
     }else{
     
$letra="D";
     }
     }
     
//VARIABLES PARA COMPLETAR CON CEROS A LA IZQUERDA DEL NUMERO
$seisceros="000000";
$cincoceros="00000";
$cuatroceros="0000";
$tresceros="000";
$dosceros="00";
$uncero="0";
//CONEXION CON LA BASE DE DATOS
conectar_admin('sga');
//DEFINICION DE SENTENCIAS SQL DE BUSQUEDA DE PARTE NUMERICA SEGUN LA IDENTIFICACION DE CARRERA ($letra)
$busca="select count(cod_alumno) as encontro from datos_personales_alumnos where LEFT(cod_alumno,1) = '$letra'";
$id=mysql_query($busca);
$data mysql_fetch_array($id);
//CAPTURA DEL RESULTADO DE CONSULTA SQL E INCREMENTO
$final$data[encontro] + 1;
//SENTENCIA SWITCH PARA LA ASIGNACION FINAL DEL NUMERO DE LEGAJO LETRA+CEROS+NUMERO
$caracteres strlen("$final");
switch (
$caracteres)
{
case 
1:
    
$cod_alumno="$letra$seisceros$final";
    break;
case 
2:
    
$cod_alumno="$letra$cincoceros$final";
    break;
case 
3:
    
$cod_alumno="$letra$cuatroceros$final";
    break;
case 
4:
    
$cod_alumno="$letra$tresceros$final";
    break;
case 
5:
    
$cod_alumno="$letra$dosceros$final";
    break;
case 
6:
    
$cod_alumno="$letra$uncero$final";
    break;
}
//CIERRE DE CONEXION CON LA BASE DE DATOS
mysql_close(); 
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 04:54.