4.4 JavaScript zur Steuerung der Sortierung

Doch wie kommt nun die für den Anwender so komfortable Möglichkeit zustande, die Tabelle während der Anzeige im Browser zu sortieren? Dazu werfen wir einen Blick auf die Tabelle, die das Sortierscript ausgibt:

tabsort.gif

Im HTML-Code der von user_sort.php ausgegebenen Tabelle sind neben den Spaltenüberschriften jeweils zwei Links notiert, die durch die Symbole ▲ und ▼ aus dem erweiterten Unicode-Bereich (▲ und ▼) das Sortieren der Tabelle nach der jeweilgen Spalte in der jeweiligen Sortierrichtung ermöglichen. Als Verweisziel ist diesen Links jeweils ein JavaScript-Aufruf zugeordnet, zum Beispiel:
<a href=\"javascript:ajax_user_sort('index_name', 'asc', 'user_list')\">&#x25B2;</a>

Es wird eine JavaScript-Funktion namens ajax_user_sort() aufgerufen. Dieser Funktion werden drei Parameter übergeben. Der erste Parameter ist der Datenbankname der Tabellenspalte, nach der sortiert werden soll. Der zweite Parameter bestimmt die Sortierrichtung, und der dritte Parameter gibt den id-Namen des HTML-Elements an, als dessen Inhalt die fertig erzeugte Tabelle eingefügt werden soll. Im obigen Beispielaufruf soll also nach der Tabellenspalte index_name aufsteigend (asc) sortiert werden. Das Ergebnis soll als Inhalt des Elements mit dem id-Namen user_list ausgegeben werden.

Die Funktion ajax_user_sort() ist im Kopfbereich des Basisdokuments index.php notiert:

function ajax_user_sort(sort_field, sort_order, output_id) {
   if(!document.getElementById)
      return;
   if(sort_order != "asc" && sort_order != "desc") {
          document.getElementById(output_id).innerHTML = 
           "<span class=\"errortext\">Ungültige Angabe 
           zur Sortier-Richtung!</span>";
         return;
   }
   script_url = "http://localhost/ajax-test/user_sort.php";
   param_str = "?field=" + sort_field + "&order=" + sort_order;
   do_http_get_request("text", script_url + paramStr, output_id);
}

Die Funktion prüft zunächst, ob die DOM-Schnittstelle verfügbar ist. Anschließend prüft sie, ob der Parameter sort_order einen der beiden gültigen Werte asc oder desc enthält. Sind alle Prüfungen erfolgreich, wird der Ajax-Aufruf vorbereitet. In script_url wird die URL-Adresse der user_sort.php notiert. Die Angaben zur Tabellensortierung werden user_sort.php ja als GET-Parameter übergeben. Deshalb baut die Funktion den nötigen GET-Parameterstring in der Variablen param_str zusammen. Zuletzt ruft sie die Ajax-Kernel-Funktion do_http_get_request() auf, um user_sort.php auf dem Server auszuführen und entsprechend der übergebenen Parameter eine neue Version der sortierten Tabelle zu erhalten. Der Aufruf sorgt zugleich dafür, dass die von user_sort.php ausgegebene Tabelle im HTML-Code des Basisdokuments platziert wird.

Sofern nicht anders angegeben, steht der Inhalt dieser Seite unter Lizenz Creative Commons Attribution-ShareAlike 3.0 License