Foros del Web » Programando para Internet » PHP »

como saber el último id 'autoincrement' ??

Estas en el tema de como saber el último id 'autoincrement' ?? en el foro de PHP en Foros del Web. Hola a todos tengo 2 tablas "contratos" y "cargos"... al crear (insertar) un nuevo registro en la tabla "contratos".. creo al mismo tiempo (inserto) registros ...
  #1 (permalink)  
Antiguo 18/08/2009, 11:32
 
Fecha de Ingreso: diciembre-2008
Mensajes: 268
Antigüedad: 15 años, 4 meses
Puntos: 0
Pregunta como saber el último id 'autoincrement' ??

Hola a todos

tengo 2 tablas "contratos" y "cargos"...
al crear (insertar) un nuevo registro en la tabla "contratos".. creo al mismo tiempo (inserto) registros en la tabla "cargos"...
el tema, es que ademas de otros valores... necesito insertar en la tabla "cargos", el numero del id (autoincrement) del registro insertado en "contratos"

(en "contratos" SIEMPRE inserto 1 registro... "cargos", es variable)

para ver cual es el último id lo hago asi

Código PHP:
 <?php
      mysql_connect
("localhost""icaro""icaro");
      
mysql_select_db("administracion");
      
      
$ultimo_contratomysql_query("SELECT id FROM contratos ORDER BY id DESC ");
      if(
$numero=mysql_fetch_array($ultimo_contrato));
{
    echo 
$numero["id"] . "<br>";
}
      
?>
EL PROBLEMA .. es que si por cualquier motivo se borrasen registros en "contratos"...
el valor que insertaré en "cargos" (id de "contratos"), NO CORRESPONDERÁ.. es decir...
si bien el último registro existente es por ejemplo "12"... el siguiente, podria ser "14" o "18" , o en definitva cualquier numero ..

entonces la pregunta es .. COMO OBTENGO EL VALOR REAL ??.. como saber cual será el próximo valor de un campo "autoincrement" ?!?!?

espero me puedan ayudar
GRACIAS A TODOS !!
  #2 (permalink)  
Antiguo 18/08/2009, 11:36
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: como saber el último id 'autoincrement' ??

Prueba con:
Código:
SELECT LAST_INSERT_ID() FROM tabla
  #3 (permalink)  
Antiguo 18/08/2009, 11:44
 
Fecha de Ingreso: diciembre-2008
Mensajes: 268
Antigüedad: 15 años, 4 meses
Puntos: 0
Pregunta Respuesta: como saber el último id 'autoincrement' ??

Cita:
Iniciado por nonpublic Ver Mensaje
Prueba con:
Código:
SELECT LAST_INSERT_ID() FROM tabla
gracias por el intento... pero si modifico la linea me arroja

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /Applications/XAMPP/xamppfiles/htdocs/add_propuesta.php on line 136

la linea 136 es if($numero=mysql_fetch_array($ultimo_contrato));

Última edición por icarocu; 18/08/2009 a las 11:57
  #4 (permalink)  
Antiguo 18/08/2009, 12:07
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: como saber el último id 'autoincrement' ??

podrias intentar con:

SELECT MAX(id) FROM TABLA
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 18/08/2009, 12:18
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: como saber el último id 'autoincrement' ??

Icarocu, la consulta a la funcion LAST_INSERT_ID() es independiente a tu consulta.

Código PHP:
$result=mysql_query("SELECT LAST INSERT_ID() from Mitabla;"); 
$row mysql_fetch_array($result);
$uID=$row[0]; // Este es el resultado 
Te recomendaria ejecutar tus inserciones desde un SP para luego llamarlo desde un solo select
  #6 (permalink)  
Antiguo 18/08/2009, 12:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: como saber el último id 'autoincrement' ??

Puedes usar la función mysql_insert_id.

Saludos.
  #7 (permalink)  
Antiguo 18/08/2009, 13:50
 
Fecha de Ingreso: diciembre-2008
Mensajes: 268
Antigüedad: 15 años, 4 meses
Puntos: 0
Exclamación Respuesta: como saber el último id 'autoincrement' ??

Muchisimas gracias a todos por todo...
probe con varias cosas pero siempre me arroja sin problema el ultimo registro INGRESADO..

pero esto no funciona cuando uno borra un par de registros... es decir...
si mi "id" es :
1 - 2 - 3 - 4 - 5

y se borraran los últimos 2 registros.. quedando:
1 - 2 - 3

lo que pasaría al ingresar un nuevo registro, es que el nuevo "id" sería 6, por lo tanto mi nueva lista de "id" sería :
1 - 2 - 3 - 6...

al final.... opte por crear una nueva variable en mis 2 tablas donde inserto una variable numerica que suma 1 a la anterior (es lo mismo resultado)... la diferencia es que no me baso en el ultimo "autoincrement".. simplemente en el último numero de una variable..

igual seguire averiguando lo otro... nunca esta de mas
EXITOS A TODOS !!!!
  #8 (permalink)  
Antiguo 18/08/2009, 17:07
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: como saber el último id 'autoincrement' ??

Acabo de terminar un SP que hace algo parecido. Pero tienes que generar relaciones en tus tablas y deben ser de tipo InnoDB. Te lo paso mañana temprano, si te interesa, porque ya estoy de salida.
  #9 (permalink)  
Antiguo 18/08/2009, 19:25
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: como saber el último id 'autoincrement' ??

Obtener el ultimo registro en la tabla, independientemente de los que hayas borrado:

Código:
SELECT id FROM tabla ORDER BY id DESC LIMIT 1
__________________
- León, Guanajuato
- GV-Foto
  #10 (permalink)  
Antiguo 30/09/2009, 19:27
Avatar de enunez810  
Fecha de Ingreso: junio-2003
Ubicación: Caracas, Venezuela
Mensajes: 98
Antigüedad: 20 años, 10 meses
Puntos: 0
Respuesta: como saber el último id 'autoincrement' ??

Cita:
Iniciado por GatorV Ver Mensaje
Puedes usar la función mysql_insert_id.

Saludos.





Que pedazo de funcion no sabes cuantos problemas me ahorro con ella
SUPER THANKS !!!!!
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 21:33.