Foros del Web » Programando para Internet » PHP »

restaurar id

Estas en el tema de restaurar id en el foro de PHP en Foros del Web. Hola a todos. Ante todo les digo que esta pregunta tambien esta en el foro de base de datos pero no me contestan Tengo una ...
  #1 (permalink)  
Antiguo 03/07/2005, 08:28
 
Fecha de Ingreso: mayo-2003
Mensajes: 544
Antigüedad: 20 años, 10 meses
Puntos: 1
restaurar id

Hola a todos.

Ante todo les digo que esta pregunta tambien esta en el foro de base de datos pero no me contestan

Tengo una base de datos en MYSQL que mantengo desde phpmyadmin.
El problema es el siguiente:
Tengo 10 registros y cada uno con sus respectivos id (que se autoincrementan automaticamente) van del 1 al 10.
Necesito borrar el registro número 5, que le responde el id número 5, claro
Pero la macana es que la base queda asi:
--celda id--
1
2
3
4
6
7
8
9
10

¿Cómo hago para que el valor del id se reestablezca y cambie a esta manera?:

1
2
3
4
5
6
7
8
9
  #2 (permalink)  
Antiguo 03/07/2005, 13:35
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
Hola, mira eso no se puede hacer automaticamente, osea no hay una función o algo asi, asique la unica forma de hacerlo es con un script, que la verdad nose porq preocuparce por este detalle, o que lo hagas a mano, pero nose que ganas haciendo esto...Saludos.
  #3 (permalink)  
Antiguo 03/07/2005, 17:09
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
pues como dice DarioDario, no creo que haya una funcion SQL para eso...

Para hacerlo deberias hacer un while pasando por todos los ID's y haciendo un update de estos, por ejemplo

Código PHP:
<?php
$var 
0;
$SQL mysql_query("SELECT id FROM nombra_tabla");
while(
$row=mysql_fetch_array($SQL)) {
$var++;
$UPDATE mysql_query("UPDATE nombre_tabla SET id = '$var' WHERE id = '$row[id]'"):
$UPDATE "";
}
?>
creo que ese codigo deberia funcionar, pero imaginate si tienes 3000 lineas en la tabla... o 40.000 :S, mas vale dejalos como estan...
__________________
I Love Programming...
  #4 (permalink)  
Antiguo 03/07/2005, 17:29
 
Fecha de Ingreso: enero-2004
Ubicación: Salto
Mensajes: 484
Antigüedad: 20 años, 3 meses
Puntos: 2
Si puedes hacerlo tranquilamente con MySQL, lo q debes de pensar es porq hacerlo.
No se si estas desarrollando un sitio web o q, pero supongamos q un usuario guarda una página de tu sitio o la agrega a favoritos, Por ej: www.tusitio.com/noticias.php?id=2
Si luego modificas el id, el usuario q tenga marcado este link, no irá a donde desea, sino al id 2 de lo q sea que hayas introducido en la base de datos. Igual te digo como hacerlo
Código PHP:
$alterar "ALTER TABLE tu_tabla DROP id";
$q mysql_db_query($dbname,$alterar) or die($alterar."<br>".mysql_error());
$agregar "ALTER TABLE tu_tabla ADD id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY";
$a mysql_db_query($dbname,$agregar) or die($a."<br>".mysql_error()); 
Saludos cuidate
__________________
Dios dira que esto no es justo, pero lo sera...
  #5 (permalink)  
Antiguo 03/07/2005, 18:31
 
Fecha de Ingreso: mayo-2003
Mensajes: 544
Antigüedad: 20 años, 10 meses
Puntos: 1
Gracias fulano: por tu respuesta, pero antes voy a ver si sale la de sebtev. Cualquier cosa vuevlo a preguntar.
GRACIAS A TODOS DE NEUVO"
  #6 (permalink)  
Antiguo 03/07/2005, 18:56
 
Fecha de Ingreso: mayo-2003
Mensajes: 544
Antigüedad: 20 años, 10 meses
Puntos: 1
Hola sebtev.
Tu ejemplo es válido, pero yo tengo por ejemplo esto:
-id-
1
2
4
7
10

y al ejecutar tu script me lo cambia a esto:
-id-
11
12
13
14
15

y lo que necesito es que se vuelva al 1...
o sea....

-id-
1
2
3
4
5
  #7 (permalink)  
Antiguo 03/07/2005, 18:58
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
De nada Flashera, yo tambien voy a probar la solución de sebtev (no necesito para nada restaurar las ID, pero para probar...)

sebtev, entiendo tu inquietud, pero si puede servir si esto se modifica antes de que tenga llegada al usuario, se entiende?, si yo tengo un panel de control en el que acepto o no una noticia, puedo eliminar esta noticia y ejecutar dicho codigo para que la proxima que se suba sea con el mismo id (asi no tener hueco).

Realmente no me interesa si un listado viene 1,2,3,4 ó 1,3,5,14.. pero quizas a alguien si le importe..

Saludos.
__________________
I Love Programming...
  #8 (permalink)  
Antiguo 03/07/2005, 19:06
 
Fecha de Ingreso: mayo-2003
Mensajes: 544
Antigüedad: 20 años, 10 meses
Puntos: 1
Hola Fulano, mira, probe este codigo:
<?
mysql_connect("localhost","xxx","xxx");
$var = 0;
$SQL = mysql_db_query("directorio","SELECT id FROM base");
while($row=mysql_fetch_array($SQL)) {
$var++;
$UPDATE = mysql_query("directorio","UPDATE base SET id='$var' WHERE id='$row[id]'");
$UPDATE = "";
}
?>

y sale el siguiente error:

Warning: Supplied argument is not a valid MySQL-Link resource in c:\foxserv\www\xxx\panel\id.php on line 14

... por cada dato que trata de actualizar.
  #9 (permalink)  
Antiguo 03/07/2005, 19:30
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
.. que es "directorio" ??? y "base" se llama realmente asi?

Código PHP:
<?php 
$_CONEXION
=@mysql_connect ("localhost""usuario""password");
@
mysql_select_db ("nombre_base_de_datos"); 
$var 0
$SQL mysql_query("SELECT id FROM base"); 
while(
$row=mysql_fetch_array($SQL)) { 
$var++; 
$UPDATE mysql_query("UPDATE base SET id = '$var' WHERE id = '$row[id]'"): 
$UPDATE ""

?>
Asi deberia funcionar...
__________________
I Love Programming...
  #10 (permalink)  
Antiguo 04/07/2005, 06:31
 
Fecha de Ingreso: mayo-2003
Mensajes: 544
Antigüedad: 20 años, 10 meses
Puntos: 1
Hola fulano_ ANDA PERFECTO!
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:11.