Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Como lograr esto?

Estas en el tema de Como lograr esto? en el foro de Mysql en Foros del Web. Hola, tengo una web en la cual se envian datos y quedan guardados por ID Pero cuando se borra un registro, me queda con un ...
  #1 (permalink)  
Antiguo 03/10/2010, 10:33
 
Fecha de Ingreso: mayo-2008
Mensajes: 82
Antigüedad: 16 años
Puntos: 3
Como lograr esto?

Hola, tengo una web en la cual se envian datos y quedan guardados por ID

Pero cuando se borra un registro, me queda con un ID salteado.. por ejemplo al borrar el registro 12...

ID:
10
11
13
14


Yo quiero que al borrar los demas ids, bajen y queden todos seguidos nuevamente ejemplo al borrar el 12, los demas bajen un ID

Nose si me explique bien, si lo entienden por favor ayudenme

Última edición por Grox; 03/10/2010 a las 10:48
  #2 (permalink)  
Antiguo 03/10/2010, 10:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Como lograr esto?

Es una pregunta recurrente. Todo beginner la hace y la respuesta es leer este post: Renumerar un campo auto_increment
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 03/10/2010, 13:27
 
Fecha de Ingreso: mayo-2008
Mensajes: 82
Antigüedad: 16 años
Puntos: 3
Respuesta: Como lograr esto?



Es que necesito hacerlo, porque mi web es una especie de autosurf, que va viendo ID por ID...

Y si un id falta, vuelve desde el principio (lo cual quiero) pero que llegue al ultimo ID


si no puedo hacer esto, como lo logro?
  #4 (permalink)  
Antiguo 03/10/2010, 14:46
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Como lograr esto?

Cita:
Es que necesito hacerlo, porque mi web es una especie de autosurf, que va viendo ID por ID...
Y si un id falta, vuelve desde el principio (lo cual quiero) pero que llegue al ultimo ID
Eso es un proceso mal concebido cuando lo relacionas con una base de datos.
Trato de imaginar como funciona eso y no se me ocurre. Tampoco se me ocurre qué utilidad tendría establecer la secuencialidad de los IDs en 1, si lo que importa es el orden de aparición, que se determina en los subíndices de las listas recorridas. Me explico: Sea en PHO, VB, C# o lo que sea, el recorrer una tabla es recorrer un for/next o foreach/ for each, entre el primero y el último. El subíndice de esa lista es independiente de los valores que tome uno de los campos en cuestión, entonces ¿para qué sirve ver el valor de un ID, si lo que importa para recorrer la tabla es su ubicación en ella?

Sigo sin ver la utilidad.

En defintiva, lo que necesitas es una lista numerada para recorrerla en memoria, más allá de que los ID que lee sean o no PK de la tabla, ¿no es así?.

Bueno, para eso puedes usar este post: ¿Cómo numerar secuencialmente una consulta, sin usar PK?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 03/10/2010 a las 14:57
  #5 (permalink)  
Antiguo 03/10/2010, 16:54
 
Fecha de Ingreso: mayo-2008
Mensajes: 82
Antigüedad: 16 años
Puntos: 3
Respuesta: Como lograr esto?

El autosurf es asi


go.php?id=1 (por ejemplo


y se visualiza lo que fue escrito en ID 1

y redirecciona al siguiente id con un +1


es simple


voy a leer lo que me pasaste y te comento
  #6 (permalink)  
Antiguo 03/10/2010, 17:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Como lograr esto?

Cita:
y redirecciona al siguiente id con un +1
Entonces en lugar de redireccionar a un ID incremental que supuestamente es PK de la tabla, debes hacerlo al subíndice de los registros de la tabla obtenida...
y en todo caso, lo que debes pasar como parámetro es la PK y leer la PK y no un id que no respeta el modelo de la base...

En cualquier caso me paece que tu problema es de programación y no de bases de datos.
Deberías postear el problema en el Foro de PHP y no aquí. Allí te podrán ayudar mejor.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 03/10/2010, 17:35
 
Fecha de Ingreso: mayo-2008
Mensajes: 82
Antigüedad: 16 años
Puntos: 3
Respuesta: Como lograr esto?

Mira te explico bien como es el sistema...

El usuario agrega webs y estas se guardan asi:

ID, URL

Entonces para ver las webs se va a la siguiente direccion

http://acalaweb/go.php?id=1 (por ejemplo)

Con method get, se obtiene el ID, y se muestra el URL...

Este redirecciona al siguiente sumando +1 a go.php?id=2

ejemplo:

Redireccion a http://acalaweb/go.php?id=2

por lo tanto se ve el siguiente link...



El usuario tiene una seccion administrativa la cual puede borrar las webs, lo que sucede es que cuando se borra un URL, el ID queda salteado...


Ejemplo

ID URL
1 http://web1
2 http://web2
3 http://web3


Al borrarse queda

1 http://web1
3 http://web3

Y quiero quede asi:

1 http://web1
2 http://web3



Espero que hayas comprendido!


Saludos!



_______


Editado:

Ah ok, justo me respondiste, voy al foro php, haber si me pueden ayudar...

O con lo que te respondi me podes ayudar?
  #8 (permalink)  
Antiguo 03/10/2010, 17:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Como lograr esto?

y en todo caso, lo que debes pasar como parámetro es la PK y leer la PK y no un id que no respeta el modelo de la base...

En cualquier caso me paece que tu problema es de programación y no de bases de datos.
Deberías postear el problema en el Foro de PHP y no aquí. Allí te podrán ayudar mejor.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 04/10/2010, 08:26
 
Fecha de Ingreso: mayo-2008
Mensajes: 82
Antigüedad: 16 años
Puntos: 3
Respuesta: Como lograr esto?

gnzsoloyo, respondo porque lo he logrado, pensando y pensado jeje

aca esta el codigo por si alguien más lo necesita:

Código PHP:
    <?php 
$n 
0;

while(
$row mysql_fetch_array($resultMYSQL_BOTH)){

$n++;

$cambiaid htmlspecialchars($row['id']);

mysql_select_db ("$database",$link);

$q "update $table set id = '$n' where id = $cambiaid";

mysql_query($q$link) or die ("problema con query");

?>

Saludos y muchas gracias por tus respuestas!
  #10 (permalink)  
Antiguo 04/10/2010, 09:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Como lograr esto?

Te repito el principio de todo: Una PK no se debe cambiar porque quede lindo. Eso es impráctico.
Los campos que MySQL usa como PK tienen sus razones de ser manejados así.

Consulta en el foro de PHP cómo lograr lo que tienes que hacer en la página sin tener que violar el paradigma del modelo relacional ni generarle una recarga innecesaria al sistema por tener que reescribir tablas completas..

Además, el código va a chocar eventualmente con la unicidad de claves.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 04/10/2010 a las 09:16

Etiquetas: Ninguno
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 00:31.