Foros del Web » Programando para Internet » PHP »

autonumerio o algo parecido

Estas en el tema de autonumerio o algo parecido en el foro de PHP en Foros del Web. Os explico lo que quiero hacer. Quiero ir creando registros sucesivos en una bd y que la clave se genere sola como un autonumerico. Mi ...
  #1 (permalink)  
Antiguo 24/02/2005, 12:47
 
Fecha de Ingreso: mayo-2004
Mensajes: 180
Antigüedad: 19 años, 9 meses
Puntos: 2
autonumerio o algo parecido

Os explico lo que quiero hacer. Quiero ir creando registros sucesivos en una bd y que la clave se genere sola como un autonumerico. Mi problema es que no se si hay ya algun tipo o funcion que me de ese numero. El caso es que si por ejemplo borrase un registro que estuviese en el medio se rellenase el hueco. He leido que hay una funcion mysql_insert_id() pero no tengo muy claro lo que hace y lo que he encontrado en la web tampoco me indica mucho. Alguien ha echo una funcion o algo asi que me pueda usar? gracias
  #2 (permalink)  
Antiguo 24/02/2005, 12:55
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 22 años, 5 meses
Puntos: 6
En esta liga encontraras la respuesta a tu duda leelo con calma y te daras cuenta para que te sirve esa funcion;
http://www.php.net/manual/es/functio...-insert-id.php
Ademas te comenta que puedes usar tambien MYSQL LAST_INSERT_ID() que es una funcion nativa de mysql que te determina cual es el siguiente consecutivo que usara mysql en una tabla.
  #3 (permalink)  
Antiguo 24/02/2005, 13:28
 
Fecha de Ingreso: mayo-2004
Mensajes: 180
Antigüedad: 19 años, 9 meses
Puntos: 2
Ok. Muchas gracias pero aun asi tengo un par de dudas. Si por ejemplo tengo una lista del 1 al 10 por ejemplo y elimino el 5. que pasaria? insertaria el 11 o el 5 ?
  #4 (permalink)  
Antiguo 24/02/2005, 13:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
insertaría el 11 .. siempre consecutivos .. no "rellenar" espacios vacios .. esto es el principio básico de la "integridad referencial" ..

Un ejemplo:

Si tu tienes una noticia que la vinculas con un link tipo ver_noticia.php?id=1 .. mañana borras el ID 1 de tu BD .. pero a mi me gustó esa noticia y me la almaceno en mis "favoritos" .. si otro día visito ese "id=1" y tu me sustituyes ese ID = 1 (su contenido del registro) por otra cosa .. ya no será lo que espero .. En su defecto ahí tendrías que decir algo tipo "registro eliminado" ... o no existe ...

Peor todavía si ese "ID" lo vas vinculando con otras tablas para establecer relaciones 1->N .. N-N .. etc .. se perdería toda relación, quedando el "caos" en tus BD.

Un saludo,
  #5 (permalink)  
Antiguo 24/02/2005, 14:05
 
Fecha de Ingreso: mayo-2004
Mensajes: 180
Antigüedad: 19 años, 9 meses
Puntos: 2
Te comento lo que quiero hacer.

Son Test lo que quiero guardar. lo que pasa que solo dejo almacenar 100. Con lo que si borro el 3 y quiero introducir mas. A medida que voy borrando el numero de espacios de la bd disminuye. Nada de noticias ni cosas asi. Simplemente es para diferenciarlos. La clave (autonumerica) lo que va a hacer es que el usuario no la introduzca, asi me evito andar buscando cada 2 por 3 huecos libres.

Me parece que tocara crear una funcion que busque los espacios libres y agrege cada test
  #6 (permalink)  
Antiguo 24/02/2005, 14:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Bueno .. tu puedes contrar registros bajo una condición .. así que no sé por qué tienes que buscar espacios libres o no ...

SELECT COUNT(*) as total FROM tabla WHERE campo='condicion si la requieres'

Y lo del ejemplo de la "noticia" no sé si lo entendistes .. pero es lo mismo que te va a suceder a ti si tu trabajas con los "ID's" de los registros que asocian a tus "test" ....

No debes mezclar lo que es un "indice autonumérico" que se usa para temas como "integridad referencial" con lo que pueda ser un código tuyo interno de tu aplicación .. como "numerar" esos test ...

Un saludo,
  #7 (permalink)  
Antiguo 24/02/2005, 14:38
 
Fecha de Ingreso: mayo-2004
Mensajes: 180
Antigüedad: 19 años, 9 meses
Puntos: 2
ya quiza es que no entiendo lo quieres decir. En cuanto a lo de integridad referencial no se a que te refieres. Yo lo que pretendia era algo que buscase "claves vacias" para insertar. Yo me limitaria a controlar que no pasasen del numero establecido de test. Era por intentar ahorrarme el buscar yo la clave. Evidentemente lo que se me ocurrio fue eso una especie de autonumerico. Gracias por tu ayuda
  #8 (permalink)  
Antiguo 25/02/2005, 06:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Te puedo recomendar algunos tutoriales sobre Base de datos (enfocados a Mysql) como:

www.mysql-hispano.com

Ahí veras todo eso de "integridad referencial" .. calves foráneas .. etc. Y diseño de Base de datos +SQL en general.

Las soluciones que "planteas" todos hemos buscado esa solución por no "comprender" como funciona esto de las "base de datos" .. Por lo menos te puedo asegurar que en su época y momento también me plantee un problema similar y buscaba esa solución .. Al final me dí cuenta (tras la lectura y profundizar en el tema) que no es ese el "camino" .. (por lo menos de lo que he intentado entender sobre tu situación y problema concreto). ..

Un saludo,
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 07:57.