8768 sujets

Développement web côté serveur, CMS

Bonjour,
Voici mon problème :
Je souhaiterais trier les données d'une colonne aléatoirement dans une table MySQL mais je ne sais pas comment faire.
Merci d'avance.
Modifié par b3f3 (03 Mar 2010 - 01:14)
J'ai effectivement pris connaissance de cette fonctionnalité php mais cela ne correspond pas à ce que j'attend.
J'ai une table Clients dans laquelle chaque client se voit affecté d'un numero unique. Pour l'instant, ces numéros sont triés dans l'ordre croissant.
Ce que je souhaite, c'est modifier ma table pour que la colonne Numeros de client ne soit plus triée mais que les numeros se suivent dans un ordre aléatoire.
Salut,

b3f3 a écrit :
Ce que je souhaite, c'est [...] que les numeros se suivent dans un ordre aléatoire.
Du coup les numéros ne se "suivraient" plus ! Smiley cligne

Je ne vois vraiment pas le but du jeu puisque s'il s'agit d'un identifiant cela a du sens d'utiliser l'auto-increment pour de multiples raisons comme la possibilité de récupérer le dernier id créé ou l'assurance de l'unicité d'un identifiant.

Donc la question est : pour quoi faire ?
Heyoan a écrit :
Salut,

Du coup les numéros ne se "suivraient" plus ! Smiley cligne

Je ne vois vraiment pas le but du jeu puisque s'il s'agit d'un identifiant cela a du sens d'utiliser l'auto-increment pour de multiples raisons comme la possibilité de récupérer le dernier id créé ou l'assurance de l'unicité d'un identifiant.

Donc la question est : pour quoi faire ?


Effectivement, je ne suis pas très judicieux dans le choix des termes à employer.
Mais j'ai quand même trouvé une solution à mon problème.

Donc je vais essayer de vous réexpliquer mon problème et la solution que j'ai utilisée :

A la base, j'ai intégré dans une table le contenu d'un fichier excel contenant un grand nombre de lignes. Ces lignes étaient classées par ordre alphabétique du champ "nom". Un numero (champ id) correspondait à chaque ligne. Cet id était croissant au fil des lignes du tableau.
Mon but était de mélanger les ids pour qu'ils ne se suivent pas lorsqu'on fait un tri sur le champ nom.
J'ai tout de même conservé l'auto-increment sur le champ id. De cette manière, lorsqu'on ajoute une fiche, un nouvel id est automatiquement ajouté avec la valeur dernier_id+1

Pour ce faire j'ai utilisé php.

J'ai tout d'abord dupliqué la colonne id et je l'ai appellé temp.
J'ai déclaré une clé primaire sur temp.
J'ai fait une requete SELECT avec ORDER BY RAND() pour récupérer les valeurs de id et les ranger dans un ordre aléatoire.
J'ai mis ces données dans un Array php.
Puis avec une boucle for, j'ai fait une requete UPDATE sur ma table pour remplacer les id (qui jusque là sont classés dans un ordre croissant) par les id stockés dans mon Array (qui, eux, ne respectent aucun classement particulier).

J'ai ensuite supprimé la colonne temp de la table puis réactivé l'auto-increment sur la colonne id.

Voila voila.

merci.
Donc merci à HammHetfield qui avait, même si je ne le savais pas encore, une partie de la solution qui m'a permi d'arriver à mes fins.
Modifié par b3f3 (03 Mar 2010 - 01:15)