Foros del Web » Programando para Internet » PHP »

una función que devuelve el último id introducido de una db

Estas en el tema de una función que devuelve el último id introducido de una db en el foro de PHP en Foros del Web. Hola, estoy buscando alguna funcion de php para saber el ultimo numero de id ingresado, la base de datos es Mysql. gracias....
  #1 (permalink)  
Antiguo 03/07/2006, 01:30
 
Fecha de Ingreso: febrero-2005
Mensajes: 183
Antigüedad: 12 años, 9 meses
Puntos: 0
una función que devuelve el último id introducido de una db

Hola, estoy buscando alguna funcion de php para saber el ultimo numero de id ingresado, la base de datos es Mysql.
gracias.
  #2 (permalink)  
Antiguo 03/07/2006, 01:46
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 13 años, 9 meses
Puntos: 7
me parece que lo que buscas es mysql_insert_id
__________________
Blogzote.com :-) Mi blog
  #3 (permalink)  
Antiguo 03/07/2006, 01:52
 
Fecha de Ingreso: febrero-2005
Mensajes: 183
Antigüedad: 12 años, 9 meses
Puntos: 0
nop, eso muestra si se inserto un id en ese momento, yo necesito crear o encontrar una funcion que muestre el id mas alto
  #4 (permalink)  
Antiguo 03/07/2006, 01:59
 
Fecha de Ingreso: febrero-2005
Mensajes: 183
Antigüedad: 12 años, 9 meses
Puntos: 0
yo hice esto como ejemplo para que me entiendam mas:

Código:
$var1 =  $row_Recordset1['id'];
$var2 =  funcion_muestra_ultimoID;
if(var1==var2){
echo $var2."es igual ".$var1;
echo "muestra imagen";
} else if (var1<var2){
echo $var2."es menor ".$var1;
echo "no muestra imagen";
}
  #5 (permalink)  
Antiguo 03/07/2006, 02:48
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 13 años
Puntos: 1
si la id la tienes autoincremental bastaría con que hicieras un select max(id) from la_tabla_que_sea.

Nota: yo sugiero que si no la tienes autoincremental la pongas, lo veo una solucion bastante util y que te puede evitar problemas si en alguna consulta no incrementas la id anterior.
__________________
ALOZORRO v5.0 (ahora en .es)
  #6 (permalink)  
Antiguo 03/07/2006, 03:07
 
Fecha de Ingreso: febrero-2005
Mensajes: 183
Antigüedad: 12 años, 9 meses
Puntos: 0
Si la id ya esta asi.
cual seria la sintaxis¿?
  #7 (permalink)  
Antiguo 03/07/2006, 03:10
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 13 años
Puntos: 1
function ultimoid($tabla)
{
$sql="SELECT max(id) FROM ".$tabla;
$resultado=mysql_query($sql)or die ("ERROR obteniendo respuestas de la base de datos, ".mysql_error());
$row = mysql_fetch_row($resultado);
return $row[0];
}


algo asi, le pasarias el nombre de la tabla de la que quieres obtener la maxima id, no la he probado pero supongo que funcionara, pruebalo a ver y ya me comentas, si hay fallos ya lo depuramos jajaja.
__________________
ALOZORRO v5.0 (ahora en .es)
  #8 (permalink)  
Antiguo 03/07/2006, 03:19
 
Fecha de Ingreso: febrero-2005
Mensajes: 183
Antigüedad: 12 años, 9 meses
Puntos: 0
Fatal error: Cannot redeclare ultimoid() (previously declared in C:\Archivos de programa\Apache Group\Apache2\htdocs\ho\index.php:289) in C:\Archivos de programa\Apache Group\Apache2\htdocs\ho\index.php on line 289
  #9 (permalink)  
Antiguo 03/07/2006, 03:24
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 13 años
Puntos: 1
Cita:
Cannot redeclare ultimoid() (previously declared in
nunca me salió ese error...ya tienes una funcion ultimoid() ?

por si acaso llamala de otra manera: ultimo_ide() o algo asi...
__________________
ALOZORRO v5.0 (ahora en .es)
  #10 (permalink)  
Antiguo 03/07/2006, 03:27
 
Fecha de Ingreso: febrero-2005
Mensajes: 183
Antigüedad: 12 años, 9 meses
Puntos: 0
como deberia ser la funcion?
  #11 (permalink)  
Antiguo 03/07/2006, 03:29
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 13 años
Puntos: 1
no.. si la funcion seguiria siendo la misma, solo que con otro nombre:

function ultimo_ide($tabla)
{
$sql="SELECT max(id) FROM ".$tabla;
$resultado=mysql_query($sql)or die ("ERROR obteniendo respuestas de la base de datos, ".mysql_error());
$row = mysql_fetch_row($resultado);
return $row[0];
}

prueba a ver si es por eso (que ya tengas otra funcion con ese nombre) por lo que te da el fallo...
__________________
ALOZORRO v5.0 (ahora en .es)
  #12 (permalink)  
Antiguo 03/07/2006, 03:30
 
Fecha de Ingreso: febrero-2005
Mensajes: 183
Antigüedad: 12 años, 9 meses
Puntos: 0
Mismo error:
Y revise y es la unica funcion en el script, la funcion anterior la saque
Fatal error: Cannot redeclare ultimo_ide() (previously declared in C:\Archivos de programa\Apache Group\Apache2\htdocs\este\index.php:290) in C:\Archivos de programa\Apache Group\Apache2\htdocs\este\index.php on line 290

Última edición por index000; 24/09/2006 a las 16:07
  #13 (permalink)  
Antiguo 03/07/2006, 03:36
 
Fecha de Ingreso: febrero-2005
Mensajes: 183
Antigüedad: 12 años, 9 meses
Puntos: 0
ups lo tenia dentro de un do while y por eso generaba problemas, el tema es como tomo el dato, osea, como imprimo esa variable?
  #14 (permalink)  
Antiguo 03/07/2006, 03:38
 
Fecha de Ingreso: febrero-2005
Mensajes: 183
Antigüedad: 12 años, 9 meses
Puntos: 0
asi esta bien?
como imprimo el resultado?

function ultimo_ide($tabla){
$sql2="SELECT max(id) FROM noticias ORDER BY id ASC";
$resultad2o=mysql_query($sql)or die ("ERROR obteniendo respuestas de la base de datos, ".mysql_error());
$row = mysql_fetch_row($resultado);
return $row[0];
}
  #15 (permalink)  
Antiguo 03/07/2006, 04:07
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 13 años
Puntos: 1
mejor asi:

function ultimo_ide($tabla){
$sql2="SELECT max(id) FROM ".$tabla." ORDER BY id ASC";
$resultad2o=mysql_query($sql)or die ("ERROR obteniendo respuestas de la base de datos, ".mysql_error());
$row = mysql_fetch_row($resultado);
return $row[0];
}

asi te vale para cualquier tabla, y lo llamas asi:

$ultimoide=ultimo_ide("noticias"); //noticias o cualquier otra tabla que quieras

en la variable $ultimoide ya tendrías ese valor.
para mostrarlo:

echo $ultimoide;
__________________
ALOZORRO v5.0 (ahora en .es)
  #16 (permalink)  
Antiguo 03/07/2006, 04:23
 
Fecha de Ingreso: febrero-2005
Mensajes: 183
Antigüedad: 12 años, 9 meses
Puntos: 0
Si!!! funciono perfecto, muchisimas gracias, no sabes lo bien que me viene, si bien aprendi mucho estos ultimos tiempos nunka iba a llegar a hacer esto solo, muchas gracias.

Pd: ya aprendi a definir una variable, je, todos los dias se aprenden cosas.
Grax.
  #17 (permalink)  
Antiguo 03/07/2006, 04:28
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 13 años
Puntos: 1
jeje.. de nada.. para eso estamos (ademas asi tambien aprendo yo si no se algo.. jajaja)
__________________
ALOZORRO v5.0 (ahora en .es)
  #18 (permalink)  
Antiguo 03/07/2006, 18:32
 
Fecha de Ingreso: febrero-2005
Mensajes: 183
Antigüedad: 12 años, 9 meses
Puntos: 0
Es cierto, yo se bastante de flash o por lo menos mucho mas que php y siempre estoy ayudando, y es como vos decis, se aprende mucho enseñando.
  #19 (permalink)  
Antiguo 03/07/2006, 20:58
Avatar de bistoco  
Fecha de Ingreso: marzo-2006
Mensajes: 141
Antigüedad: 11 años, 9 meses
Puntos: 0
la forma correcta de hacerlo es mysql_insert_id($conexion) , la forma ke dice azrael666 aunke es valida, no es del todo precisa , ya ke tenemos ke tener en cuenta ke no somos los "unicos" usando la base de datos

imaginate ke hay dos usuarios en la pagina al mismo tiempo , tu ingresas el id= 5 y el ingresa el id=6 antes de ke tu puedas preguntar por el max(id) , te entregaria el 6 siendo ke tu ingresaste el 5 , siempre hay ke tener en cuenta ke es un ambiente donde muchos interactuan al mismo tiempo con la base de datos por lo ke hay ke tener cuidado en hacer consultas

la funcion mysql_insert_id , te entrega el ultimo id ingresado por la conexion establecida por ti , lo ke es totalmente correcto , a menos ke la conexion este en ambiente global y sea compartida por muchos usuarios, en ese caso es necesario poner un campo unico generable por proceso en php y ke luego se pregunte por el , yo en este caso hacia una fecha con microdate, lo ke da una millonesima de segundo , ke es practicamente unica e irrepetible

saludos
__________________
Share what you know...learn what you don't :si:
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 04:10.