Seite 1 von 1

Template-Array in memberlist.php sortieren?

Verfasst: 28.07.2008 12:02
von langerxxx
Hallo zusammen,

folgende Frage:

In der memberlist.php wird die User-Liste aus der SQL-Abfrage via

Code: Alles auswählen

$template->assign_block_vars('memberrow', array(
in ein Array geschrieben.

Wie kann ich diese Ergebnisliste bzw. dieses Array nachträglich nach einem bestimmten Feld sortieren, ohne die SQL-Abfrage zu ändern bzw. erneut auszuführen?

Die Befehle usort() und ksort() sind mir grundsätzlich bekannt, ich schaffe es aber nicht, das Array mit der User-Liste anzusprechen.

Danke im Voraus für eure Bemühungen!

Viele Grüße
Dan

Verfasst: 29.07.2008 15:00
von cYbercOsmOnauT
Hallo Dan,
was spricht dagegen, die SQL anzupassen? Es gibt doch nicht umsonst das ORDER BY. Wenn Du mal ein konkretes Beispiel geben würdest, nach was z.B. sortiert wird, wäre die Hilfestellung erheblich einfacher. :)

Grüße,
Tekin

Verfasst: 29.07.2008 16:37
von langerxxx
Hallo Tekin,

ich verändere die aus der SQL-Query gezogenen Daten bevor sie in das Template-Array geschrieben werden.

Konkret: Ich berechne auf Basis der Koordinaten die Entfernung der Mitglieder zu dem aktuell eingeloggten Mitglied. Dies kann ich m.E. nicht im Rahmen der SQL-Query lösen.

Jetzt möchte ich diese Ergebnisliste auch nach der Entfernung sortieren können. Daher suche ich nach einer Option, wie das Array memerrow nachträglich sortiert werden kann.

Any idea?

Danke und viele Grüße
Dan

Verfasst: 29.07.2008 17:15
von S2B
So in der Art könnte es funktionieren:

Code: Alles auswählen

$userrow = $db->sql_fetchrowset($result);
$db->sql_freeresult($result);

// Entfernung für jeden Benutzer berechnen

usort($userrow, 'sort_entfernung');

function sort_entfernung($a, $b)
{
  if ($a['entfernung'] == $b['entfernung'])
  {
    return 0;
  }

  return ($a['entfernung'] < $b['entfernung']) ? 1 : -1;
}