29-11-2007, 06:45 PM
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
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