Foros del Web » Programando para Internet » PHP »

saber el próximo id autoincrement

Estas en el tema de saber el próximo id autoincrement en el foro de PHP en Foros del Web. Hola, Tengo una tabla en la cual el id es autoincrement, y todo relacionado se inserta a la vez, pero me gustaría que la carpeta ...
  #1 (permalink)  
Antiguo 23/06/2012, 03:34
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 6
saber el próximo id autoincrement

Hola, Tengo una tabla en la cual el id es autoincrement,
y todo relacionado se inserta a la vez, pero me gustaría que la carpeta de las fotos tendria el mismo nombre que el id que le corrsponde, asi es más práctico.
Asi que antes de meter una propiedad me gustaría saber el id que va a tener en la base, para eso me haria falta saber el último id que hay en la base para asi nombrar la carpeta con ese id antes de meter la propiedad.

Pero no consigo sacar como puedo hacer un select a la base de datos que me diga el último id insertado, y si lo consigo, que pasa si por ejemplo el último id insertado ha sido eliminado que a veces se elimina propiedades.
Gracias y un saludo,
Helena
  #2 (permalink)  
Antiguo 23/06/2012, 04:15
Avatar de jamie_88  
Fecha de Ingreso: abril-2011
Ubicación: Lima
Mensajes: 161
Antigüedad: 12 años, 11 meses
Puntos: 28
Respuesta: saber el próximo id autoincrement

veamos si entendi... quieres saber cual es el ultimo id (osea el mayor siendo un campo autoincrement)...

prueba asi:

$query=mysql_query("SELECT MAX(id) as id FROM tabla");
$id=mysql_fetch_array($query); //$id["id"] = el ultimo id (mayor)
  #3 (permalink)  
Antiguo 23/06/2012, 04:17
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 7 meses
Puntos: 31
Respuesta: saber el próximo id autoincrement

debes de realizar una consulta mostrando los registros de mayor a menor por id, lo limitas a 1 y bueno pues ahi consulta y sabras el ultimo id
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #4 (permalink)  
Antiguo 23/06/2012, 04:24
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 6
Respuesta: saber el próximo id autoincrement

Gracias, el de Jamie ya lo he hecho y funciona, pero lo que ocurre es que por ejemplo me da 116 y si elimino el 116 me da el 115, pero no quiero nombrarlo 116 ya que ya ha existido una vez.

Asi que estoy pensando que lo mas seguro sería hacerlo en dos pasos, primero meter un dato que no influye para la web, para que el id se haga con un campo solo, y despues editar ese id insertando los datos para que aparezca correctamente en la web. De esa manera se 100% el id que corresponde.
  #5 (permalink)  
Antiguo 23/06/2012, 07:13
Avatar de HackGhost  
Fecha de Ingreso: marzo-2012
Ubicación: En la pesadilla de mis enemigos
Mensajes: 114
Antigüedad: 12 años
Puntos: 23
Respuesta: saber el próximo id autoincrement

Podrias utilizar la funcion LAST_INSERT_ID() para tomar el ultimo valor insertado y despues le sumas 1 a eso y ya tienes el siguiente id.. (es lo q hace mysql cuando insertas un nuevo registro)
  #6 (permalink)  
Antiguo 24/06/2012, 04:30
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 6
Respuesta: saber el próximo id autoincrement

Gracias, Hackghost lo tuyo aun no lo he intentado pero estoy intentando y no entiendo porque no va, es primero dar de alta y obtener el last insert id, guardarlo en una variable y actualizar esa entrada, pero no actualiza nada.
esto es lo que tengo:
<?php
ob_start();
?>
if ($_POST['enviar']) {
$query = "insert into backup(text)" .
"VALUES ('')";
mysql_query($query);
$query = mysql_query("SELECT LAST_INSERT_ID() AS myid", $dbh);
$lastid = mysql_fetch_array($query);
$property = $lastid["myid"];
echo "<p>Id2$property</p>";

$zona = $_POST['zona'];
etc.
if ($_POST['enviares'])
{
$sql = mysql_query("UPDATE backup SET
zona='$zona', tipo='$tipo', bedrooms='$bedrooms',
text='$text', text_esp='$text_esp', text_sve='$text_sve',
image='$image', price_eng='$price_eng', ganga='$ganga', fotos='$fotos', fotos_esp='$fotos_esp', fotos_sve='$fotos_sve', title='$title', title_esp='$title_esp', title_sve='$title_sve', descrip='$descrip', descrip_esp='$descrip_esp', descrip_sve='$descrip_sve', carac='$carac', carac_esp='$carac_esp', carac_sve='$carac_sve' WHERE id=$property");
header ("Location: propiedades_ventas.php");

}

<?php
ob_end_flush();
}
?>

Pero no inserta nada, el codigo para actualizar por si sola funciona perfectamente, y no es por la variable porque si cambio la variable property por el numero de un id, tampoco actualiza, alguien ve el fallo?
  #7 (permalink)  
Antiguo 24/06/2012, 12:05
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 4 meses
Puntos: 890
Respuesta: saber el próximo id autoincrement

La consulta que te ha mencionado jamie_88 debe funcionarte.

$query=mysql_query("SELECT MAX(id)+1 as id FROM tabla");

Si no funciona es por que algo mal estas haciendo. En caso de por ejemplo tener 30 items con sus respectiva id (Primary key autoincrement)la query te va mostrar 31, en caso de eliminar por ejemplo el item 20, la query siempre te va a dar 31 asi tengas 1 solo item, ACID , en caso de agregar un nuevo item el valor sera de 32...
__________________
Drupal Argentina
  #8 (permalink)  
Antiguo 24/06/2012, 12:42
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 6
Respuesta: saber el próximo id autoincrement

Cita:
Iniciado por NUCKLEAR Ver Mensaje
La consulta que te ha mencionado jamie_88 debe funcionarte.

$query=mysql_query("SELECT MAX(id)+1 as id FROM tabla");

Si no funciona es por que algo mal estas haciendo. En caso de por ejemplo tener 30 items con sus respectiva id (Primary key autoincrement)la query te va mostrar 31, en caso de eliminar por ejemplo el item 20, la query siempre te va a dar 31 asi tengas 1 solo item, [URL="http://en.wikipedia.org/wiki/ACID"]ACID[/URL] , en caso de agregar un nuevo item el valor sera de 32...
Gracias,
ya lo he probado y lo he vuelto a probar, efectivamente es como tu dices, pero en el caso de que tengo 30 items me da correctamente 31, y si se borra el nº 20 me sigue dando el 31, pero si se borra el nº 30 en vez del 31 me da nº 30.

Y lo de select last insert id llevo todo el dia y no lo saco, mi idea era insertar un valor null, obtener el id y con el id hacer un update, pero parece ser que al enviar el formulario para dar de alta el id, se refresca la pagina y la variable parece perederser creo, en fin, no lo saco.
  #9 (permalink)  
Antiguo 24/06/2012, 15:31
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 6
Respuesta: saber el próximo id autoincrement

Puf, ya lo tengo, he estado de mal camino todo el dia :(
usando esto:$query=mysql_query("SELECT MAX(id)+1 as id FROM tabla");
no me vale para insertar y saber el id antes de meter los datos ya que si se elimina el último puede haber duplicados, uno existente y otro ya no existente.

Por eso intentaba insertar un valor null para dar el id de alta y con el last insert id obtener el id para nombrar los archicos y con un update actualizar ese id, guardando el last insert id en una variable.

Pues la solución, inserto una fila con valor null para dar el id de alta, me imprime el id con el last insert id y puedo nombrar los archivos con ese id.
Y ahora en vez de seguir con el last insert id, pues cambio al max.
uso vuestra sugerencia solo sin el +1
$query=mysql_query("SELECT MAX(id) as id FROM tabla");
hago un select y actualizo el id ultimo que es por supuesto el que acabo de insertar con los datos.
Y funciona...
Gracias
  #10 (permalink)  
Antiguo 25/06/2012, 01:47
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 18 años, 6 meses
Puntos: 84
Respuesta: saber el próximo id autoincrement

Solo por curiosidad, para que quieres ese dato?
Lo necesitas antes de efectuar el insert?


Si no lo necesitas antes de efectuar el insert, si no que lo usas despues ( lo que es la mayoria de los casos ), haz el insert con los datos.

Una vez has realizado el insert, pon

Código PHP:
$id mysql_insert_id() ; 
Y ya tienes en $id , el id asociado a la fila que acabas de insertar.

Un saludo
__________________
» Presupuesto Pagina Web
  #11 (permalink)  
Antiguo 25/06/2012, 02:30
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 6
Respuesta: saber el próximo id autoincrement

Cita:
Iniciado por miSko Ver Mensaje
Solo por curiosidad, para que quieres ese dato?
Lo necesitas antes de efectuar el insert?


Si no lo necesitas antes de efectuar el insert, si no que lo usas despues ( lo que es la mayoria de los casos ), haz el insert con los datos.

Una vez has realizado el insert, pon

Código PHP:
$id mysql_insert_id() ; 
Y ya tienes en $id , el id asociado a la fila que acabas de insertar.

Un saludo
Si lo necesito antes de insertar los datos, necesito saber el id, para mayor organizacion quiero nombrar las carpetas con las fotos con el id de la base en mi ordenador local, asi es mas facil trabajar con la web y para eliminar las fotos que se elimino de la base.
Gracias
  #12 (permalink)  
Antiguo 26/06/2012, 12:25
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 4 meses
Puntos: 890
Respuesta: saber el próximo id autoincrement

Cita:
Iniciado por helenp Ver Mensaje
si se borra el nº 20 me sigue dando el 31, pero si se borra el nº 30 en vez del 31 me da nº 30.
Es por que lo estas haciendo mal o tu campo esta mal definido...
__________________
Drupal Argentina
  #13 (permalink)  
Antiguo 26/06/2012, 13:27
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 18 años, 6 meses
Puntos: 84
Respuesta: saber el próximo id autoincrement

Cita:
Iniciado por helenp Ver Mensaje
Si lo necesito antes de insertar los datos, necesito saber el id, para mayor organizacion quiero nombrar las carpetas con las fotos con el id de la base en mi ordenador local, asi es mas facil trabajar con la web y para eliminar las fotos que se elimino de la base.
Gracias
Y no puedes crear todas las carpetas, fotos, etc.. despues de dar de alta el dato en la base de datos?
__________________
» Presupuesto Pagina Web

Etiquetas: referencia, autoincrementable
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 16:07.