Foros del Web » Programando para Internet » PHP »

Problema al obtener la proxima id

Estas en el tema de Problema al obtener la proxima id en el foro de PHP en Foros del Web. HOla. Tengo el siguiente problema, que espero entre todos podamos solucionar. Tenog una dabla "socios", la cual tiene una columna "socio_id", la cual es auto_increment. ...
  #1 (permalink)  
Antiguo 20/11/2008, 17:00
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 10 meses
Puntos: 3
Problema al obtener la proxima id

HOla.

Tengo el siguiente problema, que espero entre todos podamos solucionar.

Tenog una dabla "socios", la cual tiene una columna "socio_id", la cual es auto_increment.

Y necesito cual será el proximo id que se auto-generará para mostrarselo al usuario.

E probado con la solucion que hay en las FAQ de Mysql pero no me sivrio.

TAmbien e mirado por la pagina de php con la funcion mysql_insert_id, y hay otra funcion en mysql LAST_INSERT_ID(), pero no me dieron los resultados esperados

No se si es por que las estoy usando mal, o por que.

A ver si me podeis echar una mano.
Gracias de antemano.
  #2 (permalink)  
Antiguo 20/11/2008, 18:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema al obtener la proxima id

supongo que lo usas mal... ya que eso hacen, devuelven el ultimo ID insertado...

si quieres saber el próximo, pues... le sumas 1 ¿o no?

o bien, pues como lo estas haciendo?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 21/11/2008, 08:02
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 10 meses
Puntos: 3
Yo creo que le problema esta en que obtengo el resultado.

Que funcion tengo que usar, mysql_result() o mysql_fetch_array()

Alguien podría poner un ejemplo completo?

Gracias

Bueno, lo voy a hacer a mi manera.

Inserto una fila vacia, y recojo la id. Y listo, asi me evito problemas que se use esa id antes que yo.

Venga, igual os a servido a alguien.

dew y gracias

Última edición por GatorV; 21/11/2008 a las 09:51
  #4 (permalink)  
Antiguo 22/11/2008, 12:47
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: Problema al obtener la proxima id

Bueno en verdad el metodo que me habia inventado, no me sirve del todo, por que si por ejemplo el usuario no quiere insertar una nueva fila, ese numero queda vacio.

Asique estamos en lo mismo.

Alguien me puede pasar una funcion completa, de como obtener la ultima ID de un auto_increment sin tener que crear una nueva entrada previamente??

Hasta ahora yo tenia lo siguiente:

Código PHP:
$sql "INSERT INTO ".SOCIOS_TABLE." (socio_id, nombre, apellidos, nif, direccion, codigopostal, telefonos, email, tipodepago, entidadbancaria, cuentabancaria, tipodesocio, cuota, estado) VALUES (NULL, '', '', '', '', '', '', '', '', '', '', '1', '', '2')";
        
$query $db->sql_query($sql);
        
$nextid $db->sql_lastid($query);
        
$db->sql_query("DELETE FROM ".SOCIOS_TABLE." WHERE socio_id=$nextid");        
        echo 
$nextid
Las funciones sql_query y sql_last id, son exactamente mysql_query y mysql_insert_id.

Alternativas??

Gracias
  #5 (permalink)  
Antiguo 22/11/2008, 12:52
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Problema al obtener la proxima id

Hola

esta funcion de php

mysql_insert_id()

Te devuelve el ultimo valor de un campo autoincremet, y si quieres saber el siguiente, haz lo que te dijo pateketrueke, sumale uno.

A si que seguramente, algo estaras haciendo mal, postea el codigo a ver si se ve el error.

Un saludo
  #6 (permalink)  
Antiguo 22/11/2008, 13:09
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 20 años, 11 meses
Puntos: 60
Respuesta: Problema al obtener la proxima id

Con una consulta así podrías siempre obtener el siguiente ID, aunque creo que hay algunos errores en la resolución del problema, pero bien aquí va.



Código PHP:
SELECT id+1 FROM tabla ORDER BY id DESC LIMIT 1 
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #7 (permalink)  
Antiguo 22/11/2008, 15:49
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: Problema al obtener la proxima id

Es que creo que mysql_insert_id() no retorna lo que yo necesito.

mysql_insert_id() retorna el valor de la ultima id generada en una sentencia INSERT.

Es decir

Código PHP:
<?php
$link 
mysql_connect('localhost''mysql_user''mysql_password');
if (!
$link) {
    die(
'Could not connect: ' mysql_error());
}
mysql_select_db('mydb');

mysql_query("INSERT INTO mytable (product) values ('kossu')");
printf("Last inserted record has id %d\n"mysql_insert_id());
?>
Pero si yo no ejecuto ningun INSERT antes me retorna un 0.

Es decir que retorna el Id generado por el ultimo resource que fuera de insert.

Yo lo que necesito es saber el valor AUTO_INCREMENT de una tabla. sin tener que insertar antes una fila.
  #8 (permalink)  
Antiguo 22/11/2008, 15:52
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Problema al obtener la proxima id

pues haz algo parecido a lo que te dijo _ssx

haz una consulta a la BBDD de este tipo

SELECT id FROM tabla ORDER BY id DESC LIMIT 1
  #9 (permalink)  
Antiguo 22/11/2008, 15:54
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: Problema al obtener la proxima id

y que pasa si insertan otra fila antes de que otro usuario inserte la suya??

Alguien me podia decir como recogo el valor de esta sentencia sql??

SELECT AUTO_INCREMENT FROM `information_schema`.`tables`WHERE TABLE_SCHEMA = "test" AND TABLE_NAME = "usuarios"

Sacado de las FAQ de MYSQL en este propio foro.

Gracias
  #10 (permalink)  
Antiguo 22/11/2008, 16:03
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 20 años, 11 meses
Puntos: 60
Respuesta: Problema al obtener la proxima id

Como bien decía yo el problema radica principalmente en la "paranoia" de que alguien va a insertar un registro antes del que esta ingresando el usuario, por lo regular las bases de datos implementan "hilos" para asegurarse de que termine una transacción para pasar a la siguiente. No obstante el problema creo yo que seguramente el problema es el diseño solución al problema que tratas de resolver, es muy raro querer saber el próximo registro a insertar, no obstante con la consulta que trajiste de las FAQS de mySql va a resultar lo mismo si alguien inserta un registro antes que el actual.



Código PHP:
 SELECT id+1 FROM tabla ORDER BY id DESC LIMIT 1 
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #11 (permalink)  
Antiguo 22/11/2008, 16:08
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: Problema al obtener la proxima id

visto desde esa manera...
  #12 (permalink)  
Antiguo 22/11/2008, 16:54
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 7 meses
Puntos: 80
Respuesta: Problema al obtener la proxima id

Porque no le muestras el numero de socio que le toco al usuario una vez que se registro... Ahi lo haces con
SELECT LAST_INSERT_ID();
y no hay problema pues te da el id insertado para la conexion por mas que se esten registrando muchos al mismo tiempo...

Saludos
  #13 (permalink)  
Antiguo 22/11/2008, 17:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema al obtener la proxima id

claro, eso de la paranoia esta muy mal...

hay que pensar un poquito, no crees que al desarrollar SQL no se toparon con este problema??

claro!! ... y por eso, el comportamiento es tan suave... no hay que preocuparse de algo que ya esta resuelto, o si?

bueno, esa es mi opinión....

mejor, a trabajar... animo!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 22/11/2008, 17:22
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 20 años, 11 meses
Puntos: 60
Respuesta: Problema al obtener la proxima id

Relei tu problema especialmente esto..

Cita:
Y necesito cual será el proximo id que se auto-generará para mostrarselo al usuario.
Si tienes 2 usuarios actualizando y le muestras a uno

Ejemplo:

El proximo ID en generarse sera el 8

------

Pero en ese momento otra persona hace un update e ingresa un nuevo registro, entonces para el usuario que se le habia mostrado el 8, si se tardo en escribir o hacer su consulta, efectivamente ya no sería el registro 8 que insertaria..

Para lograr eso tendrías que bloquear el archivo de inserción mientras el otro actualiza o bien por medio de Ajax, consultar cada segundo cual es el ultimo id generado.. sin embargo sigo sin verle utilidad.. el indicarle al que actualiza cual sera el próximo ID

Saludos
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #15 (permalink)  
Antiguo 23/12/2008, 00:51
 
Fecha de Ingreso: septiembre-2008
Mensajes: 29
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema al obtener la proxima id

yo tambien estoy en le mismo dilema que nesecito que muestra el valor que sera asignado al registro porque almacenare imagenes en una carpeta que sera generada segun el id que tendra!!

Bueno mi opinio es que parte de lo que hacis esta bien crea un registro en blanco y a la hora de introducir los datos solo actualizas el registro con vacio y en caso de que le usuario decida no ingresar informacion borrar ese registro!!! Me ayudo ver esta post pieso hacer esto en mi caso! lugo comento como me salio!

Última edición por jesusg14; 23/12/2008 a las 00:52 Razón: error ortagrafico
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 12:52.