Ik heb de volgende vraag.

In een database heb ik de volgende filmtitels staan.
Police Academy 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 en 12.
als ik de quiry alphabetisch orden, dan komt ie met
1,10,11,12,2,3,4,5,6,7,8,9

Hoe kan ik dit voorkomen, cq dit gedrag corrigeren.
Ik kan de titels ook wel veranderen in 01, 01 etc, maar dat vind ik er niet netjes uitzien.
Ik gebruik al ASC in de query !
Ik denk dat een volgnummer-veld zinvoller is.
E01, E02 etc... wat voor episode staat. En als iets met seizoenen is ingedeeld noem je het S01E01.
@johan

Dat heeft er niks mee te maken ... hij ordert zo te zien alfabetisch, terwijl in dit geval een natuurlijke sortering gewenst is. Hoe dat in MYSQL werkt, weet ik niet. Ik lees veel oplossingen, maar die schijnen niet echt solide te zijn.

Michel, wellicht kun je de PHP functie natsort gebruiken.

Als het goed is haal je nu gegevens op uit de database en die stop je in een variabele. Vervolgens doe je dan dit:

<?php
natsort($result);
?>

Die $result is dan wat je uit de database ophaalt (misschien noem jij dat anders).

Laat even weten of het is gelukt.

Misschien helpt een extra spatie voor de getallen onder de 10.
De enige correcte oplossing lijkt mij een aanpassing in de structuur van de database waarin in een aparte kolom op een of andere manier een volgnummer/deel wordt opgeslagen (waar je vervolgens op kunt sorteren). Hoe deze wijziging er precies uitziet hangt mede af van de vraagstukken die je de database wilt kunnen stellen.
Of je gebruikt extra metadata, zoals datum dat een film versche, gecombineerd met een serie/franchise oid. Uiteraard gaat dat met iets als star wars de mist in, afhankelijk van hoe je het bekijkt.
De manier met de notatie van series en episodes, die ik eerder in dit topic aangaf, zorgt ook voor een goede volgorde. Je zou er dan zelfs deze metadata uit kunnen extracten.
Ik zie wel wat in het gebruik van natsort($result); maar hoe pas ik die toe op onderstaande code:


$query = "SELECT * FROM movies ORDER BY moviename ASC ";
$result = mysql_query($query) 
<?php
$query = "SELECT * FROM movies ORDER BY moviename ASC ";
$result = mysql_query($query);
natsort($result);
?>

Reageren