24.01.2016, 19:11
Hallo nochmal!
Nein. Das "es sortiert nichts" war schon eine präzise Angabe, weil eben einfach nichts mit dem Klick auf den entsprechenden Link passiert ist und entsprechend nichts sortiert wurde!
Ich habe jetzt noch mal versucht, Schritt für Schritt die Dinge in meiner Datei anzupassen, sodass es nun wie folgt aussieht:
Ausschnitt listen.php
Auschnitt Template "listen_einwohner"
Wenn ich die Dateien so behalte, dann funktioniert mein Link zur Seite mit listen.php&action=einwohner nicht mehr. Vermutlich, weil eine Default-Sortierung fehlt. Laut der Fehlermeldung steht hinter "ORDER BY" nämlich nichts. [Ist ja irgendwie noch verständlich...]. Als Default-Sortierung hatte ich bisher die Sortierung nach dem Nachnamen, dann Vornamen drin - über folgenden Schnippsel:
Wenn ich das drin lasse, dann sortiert es zwar wunderbar unter listen.php?action=einwohner meine ersten beiden Spalten der Tabelle, aber jede weitere Sortierung wird ignoriert. Nehme ich es raus und gehe unter dem Link listen.php?action=einwohner&sortby=u.username&order=desc rein, sortiert er mir ganz fein die Liste nach den Accountnamen/Vornamen. Ersetze ich das u.username allerdings durch eines meiner Profilfelder - bspw. uf.fid13 -, bekomme ich eine Fehlermeldung, dass das nicht in der "order clause" definiert sei oder dergleichen: 1054 - Unknown column 'uf.fid' in 'order clause'
Da die Sortierung über den Usernamen ja funktioniert - mittlerweile... - bin ich komplett ratlos bei dem Rest. Vor allem bei der Default-Sortierung, die mir sehr wichtig ist. [Falls es mit dem Substring nicht klappt, lege ich einfach ein neues Profilfeld an, daran soll es letztlich nicht scheitern. Aber auch das muss ja als Default-Wert irgendwo festgelegt sein.]
Vielleicht kriegen wir das ja zusammen auf die Reihe.
Nein. Das "es sortiert nichts" war schon eine präzise Angabe, weil eben einfach nichts mit dem Klick auf den entsprechenden Link passiert ist und entsprechend nichts sortiert wurde!
Ich habe jetzt noch mal versucht, Schritt für Schritt die Dinge in meiner Datei anzupassen, sodass es nun wie folgt aussieht:
Ausschnitt listen.php
PHP-Code:
if($mybb->input['action']=="einwohner")
{
$order = my_strtolower(htmlspecialchars($mybb->input['order']));
$sortby = my_strtolower(htmlspecialchars($mybb->input['sortby']));
switch($order)
{
case "desc":
$order = "asc";
$order_by = "desc";
$oppsortnext = "asc";
break;
default:
$order = "desc";
$order_by = "asc";
$oppsortnext = "desc";
break;
}
switch($sortby)
{
case "u.username":
$sort_field = "u.username";
break;
case "uf.fid9":
$sort_field = "uf.fid9";
break;
case "uf.fid13":
$sort_field = "uf.fid13";
break;
case "uf.fid11":
$sort_field = "uf.fid11";
break;
case "uf.fid14":
$sort_field = "uf.fid14";
break;
case "uf.fid8":
$sort_field = "uf.fid8";
break;
}
eval("\$orderarrow['$sortby'] = \"".$templates->get("listen_orderarrow")."\";");
$bit = "";
$registered = $db->query("
SELECT *
FROM mybb_users u
LEFT JOIN mybb_userfields uf ON(u.uid=uf.ufid)
WHERE (u.usergroup > '7') OR (u.additionalgroups > '7')
ORDER BY {$sortby}
");
while($row=$db->fetch_array($registered))
{
$namen = explode(" ", $row[username]);
$nachname = "$namen[1]";
if(count($namen) == "3") $nachname = "$namen[1] $namen[2]";
$altbg = alt_trow();
eval("\$einbit .= \"".$templates->get("listen_einwohner_bit")."\";");
}
eval("\$menu .= \"".$templates->get("listen_nav")."\";");
eval("\$page = \"".$templates->get("listen_einwohner")."\";");
output_page($page);
}
Auschnitt Template "listen_einwohner"
Code:
<tr class="thead">
<td align="center">Nachname</td>
<td align="center"><a href="listen.php?action=einwohner&sortby=u.username&order={$order}">Vorname</a></td>
<td align="center"><a href="listen.php?action=einwohner&sortby=uf.fid9&order={$order}">Alter</a></td>
<td align="center">Geburtstag</td>
<td align="center">Beruf</td>
<td align="center">Wohnort</td>
<td align="center">Beziehung</td>
<td align="center">Abschlussklasse</td>
</tr>
Wenn ich die Dateien so behalte, dann funktioniert mein Link zur Seite mit listen.php&action=einwohner nicht mehr. Vermutlich, weil eine Default-Sortierung fehlt. Laut der Fehlermeldung steht hinter "ORDER BY" nämlich nichts. [Ist ja irgendwie noch verständlich...]. Als Default-Sortierung hatte ich bisher die Sortierung nach dem Nachnamen, dann Vornamen drin - über folgenden Schnippsel:
PHP-Code:
ORDER BY SUBSTRING_INDEX(username, ' ', -1), u.username ASC
Wenn ich das drin lasse, dann sortiert es zwar wunderbar unter listen.php?action=einwohner meine ersten beiden Spalten der Tabelle, aber jede weitere Sortierung wird ignoriert. Nehme ich es raus und gehe unter dem Link listen.php?action=einwohner&sortby=u.username&order=desc rein, sortiert er mir ganz fein die Liste nach den Accountnamen/Vornamen. Ersetze ich das u.username allerdings durch eines meiner Profilfelder - bspw. uf.fid13 -, bekomme ich eine Fehlermeldung, dass das nicht in der "order clause" definiert sei oder dergleichen: 1054 - Unknown column 'uf.fid' in 'order clause'
Da die Sortierung über den Usernamen ja funktioniert - mittlerweile... - bin ich komplett ratlos bei dem Rest. Vor allem bei der Default-Sortierung, die mir sehr wichtig ist. [Falls es mit dem Substring nicht klappt, lege ich einfach ein neues Profilfeld an, daran soll es letztlich nicht scheitern. Aber auch das muss ja als Default-Wert irgendwo festgelegt sein.]
Vielleicht kriegen wir das ja zusammen auf die Reihe.