Organiser par id (MySQL)

Splicee -  
Vigli Messages postés 193 Statut Membre -
Bonjour à tous, voilà, j'ai un petit problème avec ma requête SQL pour mon site;
j'ai dans ma table "membres" par exemple, les membres qui sont identifiés par un id unique, commençant par 1 et qui est auto incrémenté.

Le problème c'est lorsque je veut afficher les liste des id, si je fais:
SELECT * FROM membres ORDER BY id
et bien il y a un problème.
Alors je met * car je ne veut pas appeler que les id mais aussi les pseudos, enfin, le problème c'est que à l'affichage, jusque 99 sa va, mais à partir de 100 rien ne va plus.
Voici un exemple de ce que j'ai:
1
2
3
4
5
6
7
8
9
10
101
102
103
...
11
12
13
14
15

Les centaines sont affichés après 10.
En fait MySQL classe mal, il regarde le premier et le deuxième.
Par exemple 11 et 12: le premier 1 est le même, mais ensuite l'un a 1 et l'autre 2, il classe donc d'abord 11 puis 12 mais alors et bien entre 10 et 11, il y a bien un 1 mais dans les 100 comme c'est un zéro après le premier 1 il considère que c'est plus petit que le 1 de 11.

Comment faire pour régler ce problème et bien organiser ?

Merci de votre aide.

6 réponses

Vigli Messages postés 193 Statut Membre 26
 
Bonjour, moi je n'aurais pas fais comme cela, mais plutôt:

$result = mysql_query('SELECT * FROM membres WHERE rang = 2 ORDER BY CAST(id AS SIGNED)') or die ("Erreur requette ".mysql_error());
while ($row =mysql_fetch_array ($result) )
{
echo $row['pseudo'].'<br />';
}
mysql_close()

Voilà, test et dit nous si sa marche ;)
Excellente journée à toi aussi.
1
MedAliMeziane Messages postés 180 Statut Membre 172
 
Salut Splicee ,

Essai cela

SELECT * FROM membres ORDER BY CAST(membres.id AS integer) 
0
Splicee
 
Désolé MedAliMeziane mais sa ne marche pas :(
Merci de vouloir m'aider en tout cas.
Bonne soirée.
0
Splicee
 
Voici l'erreur que j'obtiens:
Erreur requette You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'integer)' at line 1
0
MedAliMeziane Messages postés 180 Statut Membre 172
 
pouvez vous mettre le bloc de code (quelques lignes à partir de la ligne 1) du fichier concerné ici ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coronier
 
C'est normal si tu as ta colonnes de données 'id' enregistrée en VARCHAR ou en TEXT. L'affichage 99 > 100 > 11 est typique d'un encodage en texte.
Change-la, mets le format de colonne en INT.

Puis

SELECT * FROM membres ORDER BY id ASC
0
Splicee
 
Alors d'abord merci à tous pour votre aide.
Alors coronier, non mon champs id est bien en INT, j'ai mis int(11) exactement.
7
Sinon MedAliMeziane voici le bout de code:
$result = mysql_query('SELECT * FROM membres WHERE rang = 2 ORDER BY CAST(id AS integer)') or die ("Erreur requette ".mysql_error());
while ($row =mysql_fetch_array ($result) )
{
echo $row['pseudo'].'<br />';
}
mysql_close()
0