Allora, per la parte js puoi vedere tutto dai sorgenti. L'ho commentato nei minimi dettagli proprio perchè io nn sono molto bravo i js e se ci devo mettere le mani almeno so dove metterle.
Per la parte php:
Il widget invia al server una richiesta POST via ajax passando i seguenti parametri:
- "jcmSortTable": è l'id della tabella su cui si stanno effettuando le operazioni
- "jcmSortTable_colId": è l'id della colonna da ordinare. Se l'id della tabella è "docs" otterrai dei valori tipo "docs_0", "docs_1", ecc...
- "jcmSortTable_colOrd": è il verso dell'ordinamento "ASC" o "DESC".
- "jcmSortTable_newClass": da nn modificare e da rimandare al widget... serve per evidenziare la classe della tabella ordinata.
A questo punto puoi iniziare a scrivere la query di estrazione e ordinamento.
$sql = 'SELECT * FROM tabella ';
Per il nome del campo di ordinamento dovrai arrangiarti... nel senso che dovrai trovare un'associazione tra l'id della colonna passato dal widget e il nome della colonna nel db:
$col['docs_0'] = 'id';
$col['docs_1'] = 'titolo';
$sql.= ' ORDER BY '.$col[$_POST['jcmSortTable_colId']].' '.$_POST['jcmSortTable_colOrd'];
La query di ordinamento è completa!
Possiamo processarla e visualizzare le righe come output. (Nn so se la sintassi è corretta perchè ormai sono 2 anni che mi sono fatto degli oggetti per manipolare le query e i comandi diretti nn me li ricordo più!)
while ( $row = mysql_fetch(mysql_query($sql))) {
echo '<tr>';
echo '<td>'.$row['id'].'</td>';
echo '<td>'.$row['titolo'].'</td>';
echo '</tr>';
}
Alla fine aggiungi una riga che risulterà nascosta. Questa riga serve per tornare al widget alcune informazioni sulle operazioni eseguite (serve sopratutto per la paginazione che nn ti ho spiegato in questo post):
echo '<tr class="pagerOptionsLine"><td>';
echo '<span class="tableId">'.$_POST['jcmTableList'].'</span>';
echo '<span class="colId">'.$_POST['jcmSortTable_colId'].'</span>';
echo '<span class="colOrd">'.$_POST['jcmSortTable_colOrd'].'</span>';
echo '<span class="newClass">'.$_POST['jcmSortTable_newClass'].'</span>';
echo '</td></tr>';
die();
A questo punto dovrebbe funzionare... Io mi sono costruito un oggetto che permette di riassumere questa cosa in 4 righe di codice... e gestisce pure la paginazione.
Oggi dovrei riuscire a sviluppare il supporto per i filtri... Appena finisco il widget completo posterò l'url della pagina di descrizione con il download.
Comunque ti consiglio seriamente di guardare www.jquery.com che così poi tutto ti diventa più facile... Credimi, sono riuscito a realizzare una bella robetta (e ne sto facendo altre!) pur nn sapendo un caXX di js!
Se hai domande son qui.
Ciao!