JeuWeb - Crée ton jeu par navigateur
[Résolu] Trier les entrées d'une table. - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Trier les entrées d'une table. (/showthread.php?tid=2079)



[Résolu] Trier les entrées d'une table. - TiliN - 29-11-2007

Voilà, je patauge dans la soupe depuis 2 jours. je vous explique mon problème :

je voudrais créer un système de construction en fonction d'un ordre de priorité. Je stock ces info dans une base nommée structureprio ou se trouve pour chaque bâtiment une case avec son nombre de priorité, voilà la base en question :

Code PHP :
<?php 
CREATE TABLE
`structureprio` (
`
idj` int(11) NOT NULL default '0',
`
priorM` int(11) NOT NULL default '3',
`
priosM` int(11) NOT NULL default '4',
`
priorH` int(11) NOT NULL default '5',
`
priosH` int(11) NOT NULL default '6',
`
priorC` int(11) NOT NULL default '7',
`
priosC` int(11) NOT NULL default '8',
`
priorNg` int(11) NOT NULL default '9',
`
prior2Ng` int(11) NOT NULL default '10',
`
priosNg` int(11) NOT NULL default '11',
`
priorNt` int(11) NOT NULL default '12',
`
priosNt` int(11) NOT NULL default '13',
`
priorWz` int(11) NOT NULL default '14',
`
priosWz` int(11) NOT NULL default '15',
`
priorHab` int(11) NOT NULL default '1',
`
priosHab` int(11) NOT NULL default '2',
`
priocaserne` int(11) NOT NULL default '16',
`
priohangar` int(11) NOT NULL default '17',
`
priobouclier` int(11) NOT NULL default '18',
PRIMARY KEY (`idj`)
)
ENGINE=MyISAM DEFAULT CHARSET=latin1;

Or, j'aimerais faire une requête rangeant par ordre croissant les bâtiments.

par exemple priosNt contient la valeure une, je voudrais qu'il soit le premier à venir, et le deuxième serait le bâtiment comportant la valeur 2 etc ....

Et je ne vois pas comment faire du tout, si quelqu'un pourrait m'aider Tongue


RE: demande d'aide.... - Sephi-Chan - 29-11-2007

TiliN a écrit :Voilà, je patauge dans la soupe depuis 2 jours. je vous explique mon problème :

je voudrais créer un système de construction en fonction d'un ordre de priorité. Je stock ces info dans une base nommée structureprio ou se trouve pour chaque bâtiment une case avec son nombre de priorité, voilà la base en question :

Code PHP :
<?php 
CREATE TABLE
`structureprio` (
`
idj` int(11) NOT NULL default '0',
`
priorM` int(11) NOT NULL default '3',
`
priosM` int(11) NOT NULL default '4',
`
priorH` int(11) NOT NULL default '5',
`
priosH` int(11) NOT NULL default '6',
`
priorC` int(11) NOT NULL default '7',
`
priosC` int(11) NOT NULL default '8',
`
priorNg` int(11) NOT NULL default '9',
`
prior2Ng` int(11) NOT NULL default '10',
`
priosNg` int(11) NOT NULL default '11',
`
priorNt` int(11) NOT NULL default '12',
`
priosNt` int(11) NOT NULL default '13',
`
priorWz` int(11) NOT NULL default '14',
`
priosWz` int(11) NOT NULL default '15',
`
priorHab` int(11) NOT NULL default '1',
`
priosHab` int(11) NOT NULL default '2',
`
priocaserne` int(11) NOT NULL default '16',
`
priohangar` int(11) NOT NULL default '17',
`
priobouclier` int(11) NOT NULL default '18',
PRIMARY KEY (`idj`)
)
ENGINE=MyISAM DEFAULT CHARSET=latin1;

Or, j'aimerais faire une requête rangeant par ordre croissant les bâtiments.

par exemple priosNt contient la valeure une, je voudrais qu'il soit le premier à venir, et le deuxième serait le bâtiment comportant la valeur 2 etc ....

Et je ne vois pas comment faire du tout, si quelqu'un pourrait m'aider Tongue

Pour commencer, tu devrais renommer ton sujet pour avoir un nom qui exprimer ton problème en quelques mots.

Ensuite, pourquoi utiliser des int(11) pour stocker de si petits chiffres ? Si le chiffre ne dépasse pas 255, utilises un TINYINT avec l'attribut UNSIGNED (puisque tu n'a pas besoin des valeurs négatives), si 255 n'est pas suffisant, tu peux passer à SMALLINT UNSIGNED qui te permetra de stocker des nombres allant de 0 à 65535. Largement suffisant en général.

Troisièmement, et pour faire le tri avec ta requête, tu ne pourras pas puisque tu ne peux donner aucun champ dans la clause ORDER BY puisqu'ils ont tous un nom différent.

Je pense que c'est la conception de ta table qui est à remettre en cause.

À voir :


Sephi-Chan


RE: demande d'aide.... - TiliN - 29-11-2007

en fait, je viens de modifier ma table en mettant non pas en nom la batiment mais le numéro de priorité.
dans la case 1, c'est le bat rhab et comme ça je m'en sort.

Merci, on peut clore le sujet Smile


RE: demande d'aide.... - TiliN - 29-11-2007

oui, ce sera mieux, je vais utiliser ta méthode. Merci Wink


RE: demande d'aide.... - Sephi-Chan - 29-11-2007

Merci d'éditer le titre du sujet pour quelque chose d'explicite (et éventuellement ajouter la balise [Résolu]).

oxman a écrit :Sephi où l'art de ne pas répondre à la question :p
Tu ne réponds pas à la question, mais donne des informations intéressantes qui le concerne : +1
Ensuite tu dis que c'est la conception de la table qui est à remettre en cause, mais en donnant des arguments erronées qui le mettent donc sur une mauvaise piste : -1
Ensuite tu donnes des liens intéressants relatif à ta première remarque, mais n'explique pas clairement que ça ne résoudra pas son problème : +1-1

Score finale : 0
C'est pas négatif, c'est pas positif, courage Wink
  • Pourquoi répondre à la question puisque tu l'as très bien fait ? Je ne fais que confirmer qu'il faut revoir l'organisation. Tu aurais par contre pu expliquer pourquoi la structure était foireuse (ce que j'ai expliqué).
  • Aucun conseil donné n'est erroné (démontre le contraire), difficile donc de le mettre sur une mauvaise piste. Les deux conseils : revoir les champs pour les adapter aux besoins de l'application (et donc optimiser) et revoir la conception de la table (en suivant ces conseils d'optimisation).
  • Les liens sont la en annexe, je ne reviens pas dessus c'est à la personne de faire les démarches pour se renseigner. Les intitulés sont suffisamment explicites pour faire le lien avec les points que j'ai soulevé dans le message.

Voilà, voilà, quand tu voudras rejouer aux notes, fais-le mieux. Confusediffle:
Comme je le disais, j'essaye d'inciter les gens à être un peu plus autonomes.


Sephi-Chan


RE: demande d'aide.... - Sephi-Chan - 29-11-2007

oxman a écrit :Tu sais pas communiquer c'est tout :p
smallint, int, patati patata, ça règle pas son problème, donc tu lui expliques pas en quoi sa structure est foireuse.
Je te classe à la deuxième place de ma liste des personnes de mauvaise foi : juste après ma maman, bien que je ne sois pas loin pas loin derrière dans ce classement. Smile

Tu as donné une solution, tu n'as pas expliqué le problème. Alors que moi, oui :
Sephi-Chan a écrit :Troisièmement, et pour faire le tri avec ta requête, tu ne pourras pas puisque tu ne peux donner aucun champ dans la clause ORDER BY puisqu'ils ont tous un nom différent.


Sephi-Chan, tu sais ce qu'on dit de la paille dans l'œil du voisin ? Confusediffle:


RE: [réglé, merci ]demande d'aide.... - Sephi-Chan - 30-11-2007

Honte sur toi. Maintenant incline toi et implore mon pardon.


@ TiliN >
Le titre bordel !

C'est si difficile de mettre un titre évocateur ? Comment un mec qui feuillette les pages du forum peut savoir que ton sujet va l'aider avec un titre inutile comme celui-ci !? Tu veux pas mettre quelque chose comme : [Résolu] Trier les entrées d'une table.


Sephi-Chan, qui notifie avant d'insulter


RE: [réglé, merci ]demande d'aide.... - Sephi-Chan - 30-11-2007

oxman a écrit :Toutes mes excuses Sephi-Chan d'avoir lut trop vite, d'avoir mal lut.
ENCORE s'il te plaît !


Sephi-Chan, Big Grin


RE: [réglé, merci ]demande d'aide.... - Mysterarts - 01-12-2007

Tu t'en fiche Oxman, il a dit "s'il te plait", donc si ça te plais pas, ne le fais pas...
Il va prendre la (encore plus) grosse tête Smile

Je voulais justement dire à TiliN de faire gaffe au titre, mais ça déjà était fait... snif

Mysterarts


RE: [Résolu] Trier les entrées d'une table. - TiliN - 01-12-2007

voilà, j'ai changé le nom, désolé de vous avoir dérangé ....