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);