2012-04-15 3 views
-1

J'ai un site Web qui héberge des données pour une application iOS via mysql et il a quelques numéros ascendants et descendants et ils affichent comme 1,11,12,13, etc, 2,20,21 , 22, etc.MYSQL numéro de tri

Ceci est la fonction de tri sur le site d'administration et devrait se traduire par la réponse JSON pour l'application iOS ...

function sortPage($pageName,$sortBy,$sortOrder, $qry = ''){ 
    $getParameters = "$pageName?sortBy=$sortBy&sortOrder=$sortOrder"; 
    if($catID!=''){ 
     $getParameters .="&catID=$catID"; 
    } 

    if($extraParams!=''){ 
     $getParameters .='&'.$extraParams; 
    } 

    if($qry != '') 
     $getParameters .= $qry ; 

    $url ="<a href='$getParameters' style='text-decoration:none'>"; 
    if($sortOrder=='ASC'){ 
     $url .="<img src='".HOST."images/up-arrow.gif' width='8' height='4' border='0' />"; 
    }else{ 
     $url .="<img src='".HOST."images/down-arrow.gif' width='8' height='4' border='0'/>"; 
    } 
    $url .="</a>"; 
    return $url; 
} 

Dois-je changer le type de structure pour le rendre pas commander de cette façon? C'est actuellement int (11).

+3

le tri se passe comme s'il s'agissait d'un texte. donc quelque chose à la base de données. Il pense qu'il s'agit de trier un champ de texte. – xQbert

+2

Vous avez dit qu'il est défini comme 'int (11)'. Lorsque vous interrogez directement la base de données, obtenez-vous les résultats correctement commandés? –

+0

Il n'est pas correctement commandé lorsque je fais une requête pour cela. Je ne suis pas sûr que ce soit la base de données ou la façon dont la fonction PHP l'ordonne. –

Répondre

2

De la capture d'écran, je peux voir que ce n'est pas une colonne int(11) mais plutôt un type de chaîne.

Avec cette requête, vous pouvez tromper MySQL pour commander ceux avec le numéro en premier, si c'est ce que vous voulez. Cela fonctionnera lorsque le nombre est sur la partie gauche de la valeur:

select * from sections 
order by 0+name, name 
+0

Cependant, cela détruira toute augmentation de vitesse que vous obtiendriez des index –

+0

Faire cela semble toujours avoir le même ordre étrange ... http: //d.pr/eFm7 –

+1

@joeframbach True. En fait, cela signifie: "J'ai choisi le mauvais type de données ou je n'ai pas conçu le schéma correctement" –