Foros del Web » Programando para Internet » PHP »

proximo id

Estas en el tema de proximo id en el foro de PHP en Foros del Web. Hola, el problema que tengo es el siguiente. Tengo una tabla de pedidos y necesito que al ingresar uno pueda saber el valor del proximo ...
  #1 (permalink)  
Antiguo 15/02/2007, 07:29
Avatar de el tucu  
Fecha de Ingreso: abril-2006
Mensajes: 63
Antigüedad: 18 años
Puntos: 0
proximo id

Hola, el problema que tengo es el siguiente. Tengo una tabla de pedidos y necesito que al ingresar uno pueda saber el valor del proximo pedido_id, que seria el campo autoincremental.

Como hago esto? se puede?
__________________
www.siguiendohuellas.com.ar
Relatos de Aventura
  #2 (permalink)  
Antiguo 15/02/2007, 10:16
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
Re: proximo id

Código PHP:
$sql "SELECT MAX(id)+1 as Proximo FROM tabla ";
$q mysql_query($sql);
$row mysql_fetch_assoc($q);
$proximo $row['Proximo']; 
  #3 (permalink)  
Antiguo 15/02/2007, 11:34
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Re: proximo id

Me parece que hay un problema con ese codigo. Si tengo, por ejemplo, 5 registros:

1 - Pedro
2 - Juan
3 - Alberto
4 - Matias
5 - Tito

Ese codigo funciona bien, devuelve 6.. pero que pasa si ahora yo borro los dos ultimos?

1 - Pedro
2 - Juan
3 - Alberto

Devuelve 4, que no es correcto... pues mysql conserva el valor del id mas alto que tuvo aunque se haya eliminado, y utiliza el siguiente, en este caso 6.


Nunca lo use y no estoy seguro si funciona antes del INSERT, pero creo que la salida esta en LAST_INSERT_ID + 1

"SELECT LAST_INSERT_ID()+1 AS proximo_id FROM tabla"


Saludos.
__________________
Federico.

Mi página: www.jourmoly.com.ar

Última edición por Fridureiks; 15/02/2007 a las 11:43
  #4 (permalink)  
Antiguo 15/02/2007, 13:25
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
Re: proximo id

sino puede leer la inforamcion de la tabla con SHOW tables Status o algo asi y te devuelve el Cardinal que es lo que queres :)
  #5 (permalink)  
Antiguo 15/02/2007, 13:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: proximo id

No hay un problema con el codigo de Nefertiter, ya que al usar MAX() te devuelve el MAXIMO que hay, no importa si esta salteado: 1, 2, 5, 10, siempre MAX() te va a regresar 10.
  #6 (permalink)  
Antiguo 15/02/2007, 13:34
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
Re: proximo id

GatorV pero si se borra el ultimo va a ser erroneo el resultado todo depende de la naturaleza de la tabla...
en realidad no deberia necesitar saber el ID si se va a hacer un INSERT es decir... INSERT INTO tabla VALUES ( NULL, campo_1 , ..., campo_n)

donde null es el id
  #7 (permalink)  
Antiguo 15/02/2007, 13:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: proximo id

Pero no hay problema con que reutilize claves que ya haya borrado, de hecho es mejor, bueno depende de su problema, pero si reutiliza claves es mas productiva su tabla.
  #8 (permalink)  
Antiguo 15/02/2007, 14:03
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Re: proximo id

Cita:
Iniciado por GatorV Ver Mensaje
Pero no hay problema con que reutilize claves que ya haya borrado, de hecho es mejor, bueno depende de su problema, pero si reutiliza claves es mas productiva su tabla.
Pero en este caso tiene un campo autoincremental, es decir que no es el quien asigna los ids, sino mysql... ahi su problema y el por que de mi comentario.


Cita:
Iniciado por Nefertiter Ver Mensaje
sino puede leer la inforamcion de la tabla con SHOW tables Status o algo asi y te devuelve el Cardinal que es lo que queres :)
Creo que por ahi van los tiros jeje :D

Saludos.
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #9 (permalink)  
Antiguo 15/02/2007, 17:25
Avatar de el tucu  
Fecha de Ingreso: abril-2006
Mensajes: 63
Antigüedad: 18 años
Puntos: 0
Re: proximo id

Antes que nada, muchisimas gracias a todos, el problema radica en numerar los proximos pedidos que se ingresen al sistema. Por eso el panorama seria como lo describe Fridureiks.- Si borran alguno, el id sigue con el ultimo que se inserto. Ustedes dicen que la solucion esta en show table ?

Con algun ejemplo?
__________________
www.siguiendohuellas.com.ar
Relatos de Aventura
  #10 (permalink)  
Antiguo 15/02/2007, 17:37
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Re: proximo id

Lo que te comento Nefertiter, esta explicado aqui. Quiza hay algun ejemplo.

Saludos.
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #11 (permalink)  
Antiguo 15/02/2007, 17:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: proximo id

Lo podrias hacer asi:
Código PHP:
$query "SHOW TABLE STATUS LIKE 'nombre_de_tabla'";
$result mysql_query$query );
$data mysql_fetch_array$result );
$autoId $data['Auto_increment'];

$nextid $autoId++; 
  #12 (permalink)  
Antiguo 15/02/2007, 17:45
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Re: proximo id

Si tu aplicación no va a soportar usuarios concurrentes, es posible que las soluciones planteadas sean las adecuadas (ninguna asegura que no existan huecos), caso contrario vas a tener un problema.

No imagino porque quieres tener el id antes de hacer la inserción, si indicas que es lo quieres hacer a lo mejor podemos sugerirte algo más adecuado...

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #13 (permalink)  
Antiguo 15/02/2007, 18:15
Avatar de el tucu  
Fecha de Ingreso: abril-2006
Mensajes: 63
Antigüedad: 18 años
Puntos: 0
Re: proximo id

xknown, los pedidos se reciben y se entregan con un codigo de pedido, pero se procesan luego. la idea es asignarlos en base al ultimo id de la tabla y luego se archivan en orden para que con¡incidan los id al ingresarlos.

Se entiende mas o menos?

y mil gracias GgatorV por la ayuda
__________________
www.siguiendohuellas.com.ar
Relatos de Aventura
  #14 (permalink)  
Antiguo 19/02/2007, 11:29
 
Fecha de Ingreso: mayo-2005
Mensajes: 28
Antigüedad: 19 años
Puntos: 0
De acuerdo Re: proximo id

Cita:
Iniciado por GatorV Ver Mensaje
Lo podrias hacer asi:
Código PHP:
$query "SHOW TABLE STATUS LIKE 'nombre_de_tabla'";
$result mysql_query$query );
$data mysql_fetch_array$result );
$autoId $data['Auto_increment'];

$nextid $autoId++; 
La de GatorV es la más adecuada, sin dudas.
Este tipo de consultas son muy utiles a la hora de referenciarse a un último registro, ya sea para crear directorios con ese nombre, mostrar un número de referencia antes de haber insertado el formulario, etc.

No conozco ningún otro método mejor y más sencillo.
  #15 (permalink)  
Antiguo 24/02/2007, 20:20
Avatar de el tucu  
Fecha de Ingreso: abril-2006
Mensajes: 63
Antigüedad: 18 años
Puntos: 0
Re: proximo id

Excelente, muchisimas gracias
__________________
www.siguiendohuellas.com.ar
Relatos de Aventura
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:06.