Categoría wiki: PHP
lo que pasa es que necesito insertar un id en una tabla pero cuando el id sea eliminado que me vuelva a mostrar el valor de id.
como es esto!!!!! :
ok pues primero si mi tabla esta vacía que me genere el id 1 si no que continué en el valor que se quedo ejemplo: si ya tengo 55 id ingresados que genere el 56 ocupo un generador porque si lo dejo de auto incremento en mysql al momento de eliminar por ejemplo el id 56 e ingrese otro nuevo este nuevo toma el valor de id 57 y yo quiero que tome el valor de 56. seria mejor si por ejemplo tengo los 55 id ingresados y elimino en id 33 pero después ingreso un id nuevo estaría mejor que este id tomara el lugar del id que se a quedado en blanco osea el 33 y no el 56 osea que hiciera un barrido a la tabla y donde encontrara un lugar en blanco me insertara el nuevo id pero con el valor que corresponde osea el 33 |
Que tal amigo, lo que tienes que hacer es una simple consulta sql para tomar el valor del último id y guardarlo en input hidden
SELECT id FROM tabla ORDER BY id DESC LIMIT 1
el valor de lo que devuelva id, va a ser el último numero que se guardó, luego con una simple variable, la incrementas en uno y listo |
hola Respuesta de Johnmer Bencomo!! GRACIAS por tu repuesta pero ese ejemplo no me sirve o le falta algo para que realiza todo vien te explico el error..
esta es mi tabla
usuarios
id nombre correo pasword
1 eeeeeee eee eeee
2 aaa aa aaa
3 rrrr rrr rrrr
si en este momento elimino el renglon 2 con este codigo
mysql_query("DELETE FROM usuario WHERE id_usuario='2'");
y despues inserto coneste otro codigo
$coneccion=mysql_connect("","","");
mysql_select_db("subasta",$coneccion);
$datos="SELECT id_usuario FROM usuario ORDER BY id_usuario DESC LIMIT 1";
$resultado=mysql_query($datos,$coneccion);
if(mysql_num_rows($resultado)!=0)
{
$fila = mysql_fetch_row($resultado);
echo $fila[0]aqui ba un signo de mas 1;//lo que ago aqui es imprimir el iltimo y le sumo 1
para saber cual id se ba a guardar lo ago nomas para darme cuanta
mysql_query("insert into usuario (id_usuario,nombre,correo,pasword) values('{$fila}','jj','jj@jj','jjj')");
}
lo que hace aquí es que me pone el id 4 lo cual no me sirve porque iria el id 2 en la segunda posición |
Lo unico que debes hacer es darle un valor Autoincrementable en el campo que tu quieras en la tabla de tu base de datos. Automaticamente te genera el numero de id que sigue en su orden respectivo. |
Exactamente como lo comenta ViCtS@Nd se debe de crear un autoincrement en el campo de la tabla para que puedas acceder al campo que necesitas, no se te olvide que puedes obtener de esa manera el id que corresponde, aunque no puedes obtener de manera clara el siguiente número, ejemplo:
id
1
2
3
si trataras de insertar y no se pudiera por algun error de consulta o como es un lote de transacciones se realizo un rollback el siguiente numero a insertar no es 4, pasa a 5, ojo no vayas a querer calcular de esa manera el id. Aun asi si trataras de insertarlo seria de la siguiente manera select id from tu tabla order by id DESC limit 1
Solo le agregas un 1 y listo.
Cualquier cosa no dudes en preguntar |
Desde mi punto de vista lo que quieres hacer está mal yo te recomiendo que mejor cambies el estatus del usuario para desactivarlo.
PERO si quieres continuar yo te diría lo siguiente:
primero un select que te traiga el número de registros en la tabla:
$cmNregistros = "
SELECT
*
FROM
usuario
"
mysql_select_db("subasta",$coneccion);
$rgNregistros = mysql_query($cmNregistros,$coneccion);
$ttNregistros = mysql_num_rows($rgNregistros);
OK con eso tienes el número de registros que hay en la tabla, después saca el número del id más alto del número de registros de la tabla
$cmIdcampo = "
SELECT
*
FROM
usuario
ORDER BY
id DESC
LIMIT 1
mysql_select_db("subasta",$coneccion);
$rgIdcampo = mysql_query($cmIdcampo,$coneccion);
$dtIdcampo = mysql_fetch_assoc($rgIdcampo);
$vrIdcampo = $dtIdcampo['id'];
Ok ahora tomamos los dos valores obtenidos y con eso sacamos el faltante:
$vrRfaltante = $vrIdcampo - $ttNregistros;
y listo la variable $vrRfaltante te dará el id del registro que falta y lo puedes usar al insertar el nuevo registro
la lógica del codigo sería:
Cuando eliminas un registro el id del último registro siempre será mayor al número de registros totales en la tabla, mediante una resta de estos dos datos puedes saber cual te falta, realiza una prueba de escritorio y verás que funciona. |
hola un saludo!! ismaeltorreshdez..
me podrías explicar un poco mas sobre ---cambiar el estatus del usuario para desactivarlo. en que consiste o que es. |