Foros del Web » Programando para Internet » PHP »

Creando un autonumérico (Ayuda please!!)

Estas en el tema de Creando un autonumérico (Ayuda please!!) en el foro de PHP en Foros del Web. Cordial saludo, Quisiera generar un autonumerico con esta información: Tengo un tabla PAISES con 2 campos (codigo, pais). Lo muestro en un combo llamado "pais". ...
  #1 (permalink)  
Antiguo 25/11/2004, 14:15
 
Fecha de Ingreso: abril-2003
Mensajes: 150
Antigüedad: 21 años
Puntos: 1
Creando un autonumérico (Ayuda please!!)

Cordial saludo,
Quisiera generar un autonumerico con esta información:
Tengo un tabla PAISES con 2 campos (codigo, pais). Lo muestro en un combo llamado "pais".
TJ01 Alemania
TJ02 España
TJ03 Francia
TJ04 Inglaterra

El value del combo es el código, por lo que si el usuario selecciona España por ejemplo, ya sabría que $pais=TJ02.

Ahora en la tabla USUARIOS quiero crear el id del usuario de la manera:
TJ02-017

Lo que no sé cómo hacer es consultar el último autonumérico de ese formato y sumarle 1.
En la tabla USUARIOS necesito que me quede el ID de la siguiente manera:
TJ03-001 (1er usuario registrado de Francia)
TJ02-001 (1er usuario registrado de España)
TJ02-002 (2do usuario registrado de España)
TJ04-001 (1er usuario registrado de Inglaterra)
TJ02-003 (3er usuario registrado de España)
...

Creo que lo que debo hacer para el ejemplo sería consultar el último registro de España (TJ02) y sumarle 1.
- O sea debo irme a la tabla USUARIOS, ver si hay un id TJ02-### y a ese ### sumarle 1.

Código PHP:
//esto es un pseudocodigo
$sql "SELECT id FROM USUARIOS WHERE id="---los que empiecen por TJ02" ORDER BY id desc";
$result mysql_query($sql$conexion); 
- Se supone que cuando ya tenga el último ID de españa, por ejemplo el
TJ02-002 debe sumarle 1.

Código PHP:
if (mysql_numrows($result) == ) {
//Si es el primero, Debería guardar TJ02-000
$id $pais."-000"// cómo puedo agregarle un formato -###? 
} else {
$id $result["id"] + ;
}
$sql_guardar"INSERT INTO USUARIOS (id) VALUES ('$id') "
$result mysql_query($sql_guardar$conexion); 


Ayuda please!!!!!!!!!!
Gracias de antemano,
  #2 (permalink)  
Antiguo 25/11/2004, 16:06
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Prueba esto:

//esta consulta devuelve siempre un valor, pues si no hay datos devuelve 0
$sql="select max(cast(substring(id,5,3) as unsigned)) as mayorid from usuarios where substring(id,0,3)='$pais'";
$result = mysql_query($sql, $conexion);
if($result && mysql_num_rows($result)>0)
{
$id=mysql_result($result,0,0);
if($id<10)
{
$id=$pais."-00".$id;
}
elseif($id<100)
{
$id=$pais."-0".$id;
}
$sql_guardar= "INSERT INTO USUARIOS (id) VALUES ('$id') "
$result = mysql_query($sql_guardar, $conexion);
}
  #3 (permalink)  
Antiguo 25/11/2004, 21:31
 
Fecha de Ingreso: abril-2003
Mensajes: 150
Antigüedad: 21 años
Puntos: 1
Hola Claudio
Mil gracias por tu resuesta. Me muestra un error que tal ves tu me puedas colaborar.
Tengo este código:

Código PHP:
<?php
//esta consulta devuelve siempre un valor, si no hay datos devuelve 0
$conexionmysql_connect("localhost","root","") or die ("Error en conexion");    
mysql_select_db("autonumerico",$conexion) or die ("Error seleccionando la db"); 
$sql="SELECT max(cast(substring(id,5,3) as unsigned)) as mayorid FROM usuarios WHERE substring(id,0,3)='$pais'";
$result mysql_query($sql,$conexion)or die(mysql_error());
$mostrar=mysql_fetch_row($result);
if(
$result && mysql_num_rows($result)>0)
{
    
$id=mysql_result($result,0,0);
        if(
$id<10)
        {
        
$id=$pais."-00".$id;
        }
        elseif(
$id<100)
        {
        
$id=$pais."-0".$id;
        }
$sql_guardar"INSERT INTO usuarios (id) VALUES ('$id') "
$result mysql_query($sql_guardar$conexion);
}

//echo "se guardó el dato:".$id;
?>
Y el error que me muestra es:
You have an error in your SQL syntax near '(substring(id,5,3) as unsigned)) as mayorid FROM usuarios WHERE substring(id,0,3' at line 1


Sabes que será?
  #4 (permalink)  
Antiguo 26/11/2004, 00:09
 
Fecha de Ingreso: abril-2003
Mensajes: 150
Antigüedad: 21 años
Puntos: 1
Ok, después de algunos cambios al fin lo logré!!!
Le cambié muchos parámetros que no había manejado como la función substr() en una consulta SQL. No me la tomaba por lo que la cambié por un LEFT.
De ahí hice mas subdivisiones de cadenas. Sé que podría salir en menos código, pero mañana lo arreglo. Hice varias impresiones de variables solo para tener una "guía rápida" de cómo me estaba moviendo.

Bueno, si alguien necesita generar autonuméricos con un determinado formato solo tienen que cambiar los parámetros...

Gracias claudiovega por tu codigo! me sirvió muchísimo

Código PHP:
$conexionmysql_connect("localhost","root","") or die ("Error en conexion");    
mysql_select_db("autonumerico",$conexion) or die ("Error seleccionando la db"); 

$sql="SELECT right(id,3) FROM usuarios WHERE left(id,4)='$pais' ORDER BY id DESC LIMIT 1";
$result mysql_query($sql,$conexion)or die(mysql_error());
$mostrar=mysql_fetch_row($result);
echo 
"ultimo: ".$mostrar[0]."<br>";
if(isset(
$mostrar[0]))
{
        
$id=$mostrar[0]+1;
        echo 
"<br><br>valor del id: $id<br><br>";
        if(
$id<10)
        {
        
$id=$pais."-00".$id;
        echo 
"<br>menor que 10<br>";
        }
        elseif(
$id<=100)
        {
        
$id=$pais."-".$id;
        echo 
"<br>menor que 100<br>";
        }
        echo 
"se guardó el dato:".$id;
}
else {
echo 
"primer usuario<br>";
$id=$pais."-001";
echo 
"se guardó el dato:".$id;

}
$resultado mysql_query("INSERT INTO usuarios (id) VALUES ('$id')",$conexion);
if(
$resultado){
    echo 
"<br>SE HAN INGRESADO LOS DATOS CON EXITO";
    }
    else
    {
    echo 
"<br>OCURRIO UN PROBLEMA AL INGRESAR LOS DATOS";
    } 
Saludos!
  #5 (permalink)  
Antiguo 26/11/2004, 00:13
 
Fecha de Ingreso: abril-2003
Mensajes: 150
Antigüedad: 21 años
Puntos: 1
hola de nuevo,
lo revisé de nuevo y tenía mal el aumento para los mayores de 100.

Hay que cambiar:

elseif($id<=100)

Por

elseif($id>=100)
  #6 (permalink)  
Antiguo 26/11/2004, 00:29
 
Fecha de Ingreso: abril-2003
Mensajes: 150
Antigüedad: 21 años
Puntos: 1
De nuevo,
no tomé la validación de los numeros entre el 10 y el 99. así que pongo la corrección del isset()

Código PHP:
if(isset($mostrar[0]))
{
        
$id=$mostrar[0]+1;
        if(
$id<10)
        {
        
$id=$pais."-00".$id;
        echo 
"<br>numeros de 1 al 9<br>";
        }
        elseif(
$id>=10 && $id<100)
        {
        
$id=$pais."-0".$id;
        echo 
"<br>numeros del 10 al 99<br>"
        }
            elseif(
$id>=100)
            {
            
$id=$pais."-".$id;
            echo 
"<br>numeros del 100 al 999<br>";
            }
        

saludos
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:48.