Retroceder   Foros del Web > Programación para sitios web > Bases de Datos

Respuesta
 
Herramientas Desplegado
Antiguo 06-abr-2007, 20:16   #1 (permalink)
masterjail está en el buen camino
 
Fecha de Ingreso: octubre-2004
Ubicación: Meliana (Valencia)
Mensajes: 159
Recuperar valor autoincrementable.

Hola, estoy usando ADOdb para acceder a la base de datos de una aplicación PHP que estoy desarrollando.

En una parte de la aplicación existe un formulario para dar de alta en el sistema a una persona. Dicha persona tendrá un identificador, el cual es un valor autoincrementable.

Está claro que cuando haga el insert ese valor se asignará automáticamente y todo será correcto...

...pero yo quiero saber ese valor antes de rellenar el formulario para
que aparezca en él...

¿Hay alguna forma de saber cuál será el siguiente autoincrementable?

De momento me sirve esto:

Código PHP:
$id $db->connection->Execute("SELECT COUNT(id) as id FROM persona");
$id $id->fields["id"] + 1
es decir, contar cuantos registros hay e incrementar en uno el valor (me sirve porque no habrá posibilidad de eliminar registros de esa tabla), pero me parece un poco inapropiado.

He buscado por el foro y por Internet y lo más parecido que he encontrado ha sido eso.

¿Alguien conoce alguna manera mejor? ¿O un método con ADOdb que lo haga?

Muchas gracias.
masterjail está desconectado   Responder Citando
Antiguo 06-abr-2007, 23:25   #2 (permalink)
kaninox está en el buen camino
 
Avatar de kaninox
 
Fecha de Ingreso: septiembre-2005
Ubicación: Chile
Mensajes: 2.170
Enviar un mensaje por MSN a kaninox
Re: Recuperar valor autoincrementable.

pues la idea seria traer como bien tu codigo lo hace el ultimo id y sumarle 1 ahora bien como sabes que trae el ultimo y no el primero :o pues debes agregar un ORDER BY desc en tu caso para que traiga siempre el ultimo...

otra pregunta estas dispuesto a perder id's ?
lo digo por el tema de que que pasa si dos personas quieren ingresar datos y una persona entra al formulario pero no ha ingresado nada aún, entonces tiene el valor id 3 y otra persona entra tambien al formulario y como no a habido ningun ingreso, tambien obtiene el valor 3 ? tonces gana quien primero ingrese y al otro de dara fatal error :/
pues te lo digo por que debes parchear eso y como lo consigues pues perdiendo id's y como eso pues la persona que entra al formu gana un id y lo inserta de forma inmediata entonces al ingresar el formulario completo solo actualiza lo correspondiente al id... entonces si una persona entro ya gana el id 3 y puesto en base de datos para cual si otra persona en el proceso ingresa obtendria el valor 4, y como pierdes id's pues si la persona ingresa al formu pero no hace nada e hay tu perdida de id's...
ahora decides tu como lo implementas, tambien puedes generar ids no autoincrementables de forma aleatoria y que sean diferentes alos que estan en base de datos es otra opcion ids de numeros grandes con dificultades de repeticion ;)
__________________
Mas Sabe el que Estudia que el que no..... Pero mas goza el que no estudia :P
no respondo por MP
kaninox está desconectado   Responder Citando
Antiguo 11-abr-2007, 10:47   #3 (permalink)
yournightmare86 tiene algunos puntos positivos de karma
 
Avatar de yournightmare86
 
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 833
Re: Recuperar valor autoincrementable.

Pues lo que se me ocurre(sin saber para que quieres saber el próximo código) es usar una función PHP que te devuelve el último valor de un campo autoincrementable.
Código:
$ultimo_codigo=mysql_insert_id();
De todas formas revisa tu idea, porque para esos códigos no siempre va de uno en uno y en orden ascendente. En ocasiones se salta números, por una cuestión o por otra. Utiliza el valor que quieres en función de como más optimizado y fácil le sea.
Saludos.
yournightmare86 está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 20:23.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93