Echanger les id de deux champs

Benito
Invité n'ayant pas de compte PHPfrance

09 août 2007, 16:18

Bonjour,

Je souhaiterai, comme le titre du sujet l'indique, échanger les id de deux champs d'une même table mysql. L'objectif étant ensuite de modifier l'ordre des affichage des éléments de la table (j'utilise une requête du type "select * from table order by id")
Au départ j'avais pensé par modifier un des id pr le remplacer par le 2eme et vice versa. Le problème c'est que je me retrouve provisoirement avec deux champs avec le même id, ce qui est impossible si les id sont des clés primaires (donc uniques). De plus cela me fait 2 requêtes.

Est-ce qq'un aurait une idée pour régler mon problème (quitte à me proposer qqe chose de complètement différent; je suis ouvert à toute autre suggestion :) )
Merci d'avance

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 août 2007, 16:22

Alors, déjà, je vais te donner un peu de lecture sur [url=http://www.phpfrance.com/forums/voir_sujet-27678.phpla modification des id d'une table[/url]

Ensuite, pour préciser dans ton cas, comme dit dans l'article, un id ne devrait pas avoir une notion de présentation.
Si tu veux pouvoir modifier l'ordre de présentation des données de ta table, soit tu dois te baser sur un autre champs, soit créer un champ dédié à cet ordre d'affichage.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Benito
Invité n'ayant pas de compte PHPfrance

09 août 2007, 16:41

En effet la création d'un autre champ semble plus que nécessaire dans mon cas merci du conseil.
Sinon pour en revenir aux modifications proprement dites: y a-t-il une alternative à l'utilisation de 2 requêtes de type update pr modifier les valeurs de ces nouveaux champs dédiés à l'ordre d'affichage? (qqe chose comme une requete update capable d'effectuer les deux modifications simultanément par exemple; je n'a irien trouvé à ce sujet dans aucune doc).
J'ai un petit hébergement donc j'essaie autant que possible de trouver des moyens de réduire un maximum le nombre de mes requêtes, mais vu que je suis débutant ce n'est pas toujours évident...

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 août 2007, 16:51

Non, je pense que dans ton cas, il faut passer par 2 requêtes.

En plus, l'avantage de laisser les identifiants tranquille, c'est que tu peux suivre un algo de ce genre

Code : Tout sélectionner

récupérer id1 récupérer id2 récupérer position de l'enregistrement de id1 récupérer position de l'enregistrement de id2 modifier enregistrement de id1 pour donner position de id2 modifier enregistrement de id2 pour donner position de id1
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Benito
Invité n'ayant pas de compte PHPfrance

09 août 2007, 16:57

Oui voilà je pense que je vais faire quelque chose de ce style.
Merci encore ;)

PS: vous pouvez considérez ce sujet comme "Résolu".

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 août 2007, 17:00

Très bien, je le note comme tel pour toi.

N'hésite pas à ouvrir un autre sujet si tu as des difficultés de mise en place ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer