Renseignement ID

Eléphant du PHP | 69 Messages

23 déc. 2012, 19:33

Bonjour,

J'aimerai avoir un renseignement et savoir si cela est possible par la même occasion.

Je prend exemple avec les news.

Dans une base de donnée, il y a une liste de news :

1. ouverture du site
2. voici une news
3. une autre news
4. encore une news
5. et paf une news

Si je supprime une news (depuis mon panel admin).

Exemple la 4

Sa me fera sa :

1. ouverture du site
2. voici une news
3. une autre news
5. et paf une news

Et moi j'aimerai savoir si la 5 peut-avoir comme ID 4 afin qu'il y est une suite logique et pas un trou...

De plus si j’insère une news, elle prendra comme ID 6 et non pas 4 et c'est bien dommage :(

Y a t-il une solution à ceci ?

Cordialement,

ViPHP
ViPHP | 2287 Messages

23 déc. 2012, 23:36

Et moi j'aimerai savoir si la 5 peut-avoir comme ID 4 afin qu'il y est une suite logique et pas un trou...

De plus si j’insère une news, elle prendra comme ID 6 et non pas 4 et c'est bien dommage :(

Y a t-il une solution à ceci ?

Cordialement,
Salut,

comme beaucoup de débutants tu prends le problème à l'envers :-) Demande toi pourquoi le "trou" te gêne concrètement, et tu trouveras dans la réponse à cette question ton véritable souci. La solution, la plupart du temps, consiste à se baser pour ce besoin sur autre chose que l'ID autoincrémenté (et là ça dépend de ta table en base et de ce que tu y fais).

Un id autoincrémenté a beaucoup d'avantages mais tu n'es pas censé lui donner un sens (l'id 5 est l'id "5", et tu ne peux pas préjuger qu'il est plus récent, ou suivant, ou plus important que l'id 4 - qui n'existe pas forcément - etc... C'est comme le numéro que tu peux avoir dans les tickets d'une file d'attente dans un service public par exemple, si tu tires le numéro 13 ce n'est pas forcément une mauvaise nouvelle... Surtout si le numéro qui passe actuellement est le 12 :D ).
Tu peux t'en passer et gérer l'incrémentation toi-même dans ton programme, mais c'est dans presque tous les cas une source de complications inutile, en plus de poser d'autres problèmes si c'est mal fait (concurrence, etc).
if(!@work()){ Nespresso(); } else { what(); }
______________________________