Foros del Web » Programando para Internet » PHP »

Como mostrar en php el último ID + 1

Estas en el tema de Como mostrar en php el último ID + 1 en el foro de PHP en Foros del Web. Hola, tengo en MySql un campo llamado id_factura... y estoy tratando de buscar la forma de que en PHP al insertar una nueva factura, aparezca ...
  #1 (permalink)  
Antiguo 30/04/2012, 20:40
 
Fecha de Ingreso: febrero-2012
Mensajes: 163
Antigüedad: 12 años, 2 meses
Puntos: 0
Como mostrar en php el último ID + 1

Hola, tengo en MySql un campo llamado id_factura... y estoy tratando de buscar la forma de que en PHP al insertar una nueva factura, aparezca el numero de esa factura.... osea que aparezca el id_factura que aún no se ha creado y que no existe.

creo que puede haber dos opciones para lograrlo:

1. Mostrar el último id_factura ingresado y buscar la forma de sumarle un 1 y así mostrarlo en un input en PHP para conocer que factura es la que voy a crear.

2.- Que exista algún código para mostrar anticipadamente el numero correspondiente pero no tengo idea de alguno....

Les ruego haber si pueden ayudarme por lo menos con la opción 1 ya que creo que puede ser la solución.... como hacerla?

saludos y gracias.
  #2 (permalink)  
Antiguo 30/04/2012, 20:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Como mostrar en php el último ID + 1

Haz un select max:
Código MySQL:
Ver original
  1. SELECT MAX(`id_factura`) + 1 FROM `facturas`
  #3 (permalink)  
Antiguo 30/04/2012, 22:51
 
Fecha de Ingreso: febrero-2012
Mensajes: 163
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Como mostrar en php el último ID + 1

Muchas gracias GatorV

Disculpa me queda una duda, como implemento esta sentencia?? estoy poniendola asi pero no me muestra nada


$Sql = "SELECT MAX(`id_factura`) + 1 AS proxima FROM `factura`";
$resu = mysql_query($Sql, $conexion) or die(mysql_error());

$row = mysql_fetch_array($Sql);


echo $row['proxima'];

¿Como debería hacerlo?


también encontré esta forma de hacerlo pero al implementarla pero no logro que me funcione... como debería ponerlo?


$Sql = “SELECT AUTO_INCREMENT AS LastId FROM information_schema.tables WHERE TABLE_SCHEMA=’$Nombre_mi_base_de_Datos’ AND TABLE_NAME=’$nombre_mi_tabla’”;

Saludos
  #4 (permalink)  
Antiguo 30/04/2012, 23:03
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Como mostrar en php el último ID + 1

Cita:
Iniciado por neveuster Ver Mensaje
Muchas gracias GatorV


$Sql = "SELECT MAX(`id_factura`) + 1 AS proxima FROM `factura`";
$resu = mysql_query($Sql, $conexion) or die(mysql_error());

$row = mysql_fetch_array($Sql);


echo $row['proxima'];
fijate en lo que esta en rojo el mysql_fetch_array espera un resulset no un string, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 30/04/2012, 23:43
 
Fecha de Ingreso: febrero-2012
Mensajes: 163
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Como mostrar en php el último ID + 1

Gracias carlos_belisario, gracias a tu comentario me percaté del error....

y a raiz de lo mismo se me ocurrió un inconveniente..

El motivo de buscar el proximo valor es para que mientras se está llenando la factura aparezca cual va a ser el Numero de esta... entonces así puedo tomar ese numero e incluirlo al mismo tiempo a otra tabla detalles, que es la que contiene los detalles de la factura X....

la duda es... ¿Que pasa si en el momento que yo esté llenando una factura y me diga que la próxima es por ejemplo la 102 y voy y apreto guardar o grabar y mientras yo llenaba la factura otra persona me ganó y creó la 102 antes que yo?? obviamente se me guardará como 103, pero los detalles de la factura se van a ir a la 102...

¿Como se podría solucionar eso??

Existirá la posibilidad de mostrar en tiempo real el valor de la factura? o sea que si se hace un cambio en MySql también se realiza en PHP??

Saludos.
  #6 (permalink)  
Antiguo 01/05/2012, 00:22
 
Fecha de Ingreso: febrero-2012
Mensajes: 163
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Como mostrar en php el último ID + 1

Uf, amigos... no me había percatado de esto....

al utilizar: SELECT MAX(`id_factura`) + 1 FROM `facturas`

me muestra el último registro mas 1 y está bien pero si yo elimino el último me va a mostrar el máximo que quedo mas 1 y no toma en cuenta que se eliminó un registro, por lo tanto no me muestra el próximo id de registro si no solo el último existente mas 1.

como se podría solucionar esto? habrá manera?

saludos
  #7 (permalink)  
Antiguo 01/05/2012, 00:37
 
Fecha de Ingreso: febrero-2012
Mensajes: 163
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Como mostrar en php el último ID + 1

Gracias amigos de todas formas, pero he solucionado el problema buscando el valor de information_schema...

Y aunque lo solucioné aun asi no se como solucionar el problema de que si estoy llenando un registro y alguien se me adelanta me quita el lugar y por lo tanto los detalles quedan equivocados...

en fin seguiré averiguando.

gracias. saludos.
  #8 (permalink)  
Antiguo 01/05/2012, 09:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Como mostrar en php el último ID + 1

Es que ese caso es más complicado, lo que puedes hacer es insertar un registro en blanco, obtienes el id usando SELECT LAST_INSERT_ID(); y cuando haces la factura, en lugar de hacer un INSERT, haces un UPDATE así garantizas que vas a usar ese ID, el problema es si el usuario por cualquier cosa no hace el update, va a quedarse ese registro vació...

Lo que yo hago y siempre he hecho es no mostrar nunca ese número, el id se genera automáticamente al insertar, y uso SELECT LAST_INSERT_ID(); para obtener el último ID y así insertar los detalles.

Saludos.
  #9 (permalink)  
Antiguo 01/05/2012, 11:44
 
Fecha de Ingreso: febrero-2012
Mensajes: 163
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Como mostrar en php el último ID + 1

ohhh... genial, te pasaste GatorV... es la mejor solución que he encontrado... muchas muchas gracias...

Bueno entiendo que esto se podría hacer si es que tuviera las caracteristicas ACID... (Atomicity, Consistency, Isolation and Durability: Atomicidad, Consistencia, Aislamiento y Durabilidad en español)

Pero la duda que me quedó MySQL cuenta o no con ACID?? en un sitio lei que en sus ventajas si estaba y en otro en sus desventajas que no las tenía como otras bases de datos si.

Bueno, la respuesta a mi tema principal ya fué dada y agradezco una vez mas a todos los que participaron, mil gracias.
  #10 (permalink)  
Antiguo 01/05/2012, 12:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Como mostrar en php el último ID + 1

Claro, MySQL incorpora ACID, pero para usar una transacción como tal y evitar que existan esos agujeros, tienes que usar tablas del tipo InnoDB que te permiten usar una transacción y en caso de error revertir todos los cambios.

Saludos.
  #11 (permalink)  
Antiguo 01/05/2012, 15:35
 
Fecha de Ingreso: febrero-2012
Mensajes: 163
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Como mostrar en php el último ID + 1

osea que si incorpora ACID, bueno voy a estudiar bien el tema, pero muchas gracias nuevamente con toda la ayuda..... saludos. adiós.

Etiquetas: mysql
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 17:56.