ma non ti basta mettere un ORDER BY RAND() nella query?
No ha chiesto l'arbitrarietà

Quindi non devo usare $result = mysql_query( "SELECT * FROM ec... questo codice non và bene giusto?
Certo che devi crearti la risorsa altrimenti cosa cicli?
(la risorsa è $result )

Comunque mi sembra chiaro che non hai capito bene la mia soluzione:

$arrComp=array('c'=>0,'s'=>1,'a'=>2,'b'=>3,'k'=>4) ;
//è l'array di comparazione per fare l'ordinamento
//ossia l'ordinamento finale sarà come impostato in questo array

$daOrdinare=array();
while ($row = mysql_fetch_array ($result) )
{

array_push($daOrdinare,$row[0]);

}
// qui cicli il recordset e butti tutto dentro a un array che ho chiamato daOrdinare



function cmp($a, $b)
{

$arrComp=array('c'=>0,'s'=>1,'a'=>2,'b'=>3,'k'=>4) ;

if (($arrComp[$a]) == ($arrComp[$b])) {
return 0;
}
return (($arrComp[$a]) < ($arrComp[$b])) ? -1 : 1;
}

usort($daOrdinare, "cmp");

//con questo blocco fai l'ordinamento vero e proprio dell'array appena creato
//(chiamato daOrdinare) in base all'ordine determinato nell'array arrComp


foreach ($daOrdinare as $key => $value) {
echo "
$key -> $value\n";
}
//qui hai la stampa delle coppie chiave valore dell'array daOrdinare dopo l'usort