non ha senso che esista una funzione standard per fare questa cosa.... è troppo personalizzato
nella pagina hai una lista di record estratti da un database e organizzati in colonne e righe? se è così, sull'intestazione della colonna puoi mettere un link (su ogni intestazione per la quale vuoi permettere l'odinamento); questo link porta alla stessa pagina passando due parametri da usare per l'ordinamento.
chiamiamoli ad esempio "order_id" e "order_type", dove il primo può essere un numero che dice al tuo programma che stai ordinando per quel campo particolare (ad esempio, assegni a "nome" l'id 1 e a "data" l'id 2, per distinguerli internamente). "order_type" invece può valere "ASC" oppure "DESC" in modo da decidere se ordinare secondo un campo particolare in modo crescente o decrescente.
all'apertura della pagina leggi questi due campi:
Codice PHP:
$order_id = $_GET['order_id'];
$order_type = $_GET['order_type'];
e fai qualche controllo... se i campi sono nulli vuol dire che è la prima volta che l'utente apre questa pagina del sito e non ha ancora impostato nessun ordinamento personalzzato, quindi in tal caso gli assegni dei valori di default.
se invece i due valori esistono, costruisci la query in modo da ordinare i record come vuole l'utente. tramite il campo "order_id" ricavi il nome del campo della tabella per il quale devi fare l'ordinamento, e tramite il campo "order_type" imposti il senso.
Codice PHP:
// assegnazione valori di default se campi vuoti
if (empty($order_id))
$order_id = 1;
if (empty($order_type))
$order_type = 'DESC';
// recupero del campo di ordinamento
if ($order_id==1)
$order_field = 'nome';
elseif ($order_id==2)
$order_field = 'data';
// costruzione della query
$rs=mysql_query("SELECT lista_di_campi FROM tabella ".
ORDER BY ".$order_field.$order_type, $dbLink);