Inverser 2 ID

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Inverser 2 ID

par pascaltje » 10 août 2006, 13:12

je passais par là alors...

un id doit servir uniquement à identifier de manière unique un enregistrement. ça veut dire qu'il ne doit pas avoir le rôle supplémentaire de gerer un ordre.

il peut être un indice sur quand a été créé un certain enregistrement, mais ça reste vague.

ajoute un champ ordre et utilise le pleinement!

A+

Pascal

par zeus » 10 août 2006, 11:52

Juste histoire que ce soit clair, pour une fois je vais être un petit peu moins mesuré que mes collègues pour te dire que
Merci Hubert :langue:
ça soulage, même si c'est quelqu'un d'autre ;)

par Hubert Roksor » 10 août 2006, 11:50

Juste histoire que ce soit clair, pour une fois je vais être un petit peu moins mesuré que mes collègues pour te dire que

ON NE MODIFIE JAMAIS JAMAIS JAMAIS UN ID DANS UNE TABLE !!

Désolé de ne pas détailler toutes les raisons de la choses, mais crois-nous sur parole il y a un jour où tu seras heureux de ne pas avoir touché à ce champs :]

Le mieux je pense est de suivre les conseils de leakcim51 et ajouter un champs de type DATETIME, ou encore un simple timestamp (que l'on peut obtenir en PHP avec la fonction time()) et de se servir de ce champs pour trier les résultats. En plus, ça te servira peut-être un de ces jours de savoir à quel moment tes enregistrements ont été postés. Voilà, bonne continuation ;)

par zeus » 10 août 2006, 09:56

Tu ne peux pas dupliquer la ligne SQL tu obtiendra un nouvel ID et effacer l'ancienne ?

C'est une idée.... :idea:
Ce que nous disons, avec Albat, c'est que c'est une mauvaise idée de changer les ID des lignes. Pas que c'est impossible ;)

par Dom! » 10 août 2006, 09:50

Tu ne peux pas dupliquer la ligne SQL tu obtiendra un nouvel ID et effacer l'ancienne ?

C'est une idée.... :idea:

par leakcim51 » 09 août 2006, 17:14

Salut.

Ou alors tu ajoute un champ de type date et tu obtiens ton ordre directement en faisant un ORDER BY dans ta requete.

@+

par albat » 09 août 2006, 16:03

Modifier les valeurs du champ id est une mauvaise solution.

Créer un nouveau champ ordre est une bonne solution.

par qmeuh » 09 août 2006, 14:52

Pour faire moins barbare il me suffit de créé une colone supplémentaire en utilisant la technique de Tictac si je comprend bien ?
Si c'est ça merci beaucoup :D mais c'est vrai que j'aurais du penser que je vais utiliser mes id ultérieurement ...

Encore merci :D

par zeus » 09 août 2006, 14:48

Il s'agissait donc d'une erreur de conception

Pour t'expliquer pourquoi je suis contre modifier les id, il se trouve que si tu utilise ces id dans d'autres tables, dès que tu modifies un id à un endroit, il faut les modifier dans toutes les tables dans lequel il apparait.

Même si aujourd'hui tu n'a pas de dépendance de ce type, rien ne te dit que ça ne sera pas le cas demain ...

par Tictac » 09 août 2006, 14:48

Sauve les infos d'une des lignes puis efface là
change l'id de l'autre puis recrée celle sauvée en changeant son id !!

Barbare mais efficace

par qmeuh » 09 août 2006, 14:43

Je les trie du plus récent au plus ancien grace à l'id ... c'est pour cela que ça me paraissait facil de simplement modifier les id :(

par zeus » 09 août 2006, 14:40

Je suis un grand partisant de ne pas modifier les id d'une table.

Pour simplifier les choses, j'aimerais savoir comment sont triées tes enregistrements à l'affichage et je te conseille de plus chercher dans cette direction là ;)

Inverser 2 ID

par qmeuh » 09 août 2006, 14:37

Bonjour à tous !

J'ai une liste d'article dans une base de données et je voudrais pouvoir faire "monter" un article dans ma liste.
En pratique cela consisterai à inverser les id de deux lignes dans MySQL :?

Cela est-il possible simplement ?
Sinon y a-t-il un autre moyen ?

Merci d'avance