Spalten sortieren, wie die Mitgliederliste

Didito
Habe mir eine Tabelle gebastelt mit paar Spalten.

User Id, Username, E-Mail, Registrierdatum, letzte aktivität, Status (frei/gesperrt) usw.

Also fast wie die Mitgliederliste.

Es wird auch alles angezeigt.

Nur kann mir jemand zeigen wie ich die Spalten so sortieren kann wie es in der Mitgliederliste möglich ist.

Also Zeige XX Benutzer und Sortiere nach XX in XX Reihenfolge. Button


Hat jemand so etwas schon mal vorgefertigt?

Wollte das von der Mitgliederliste umbauen, aber bekomme ich leider nicht hin.

Ist viel zu viel.


Das Script fürs Template habe ich ja schon nur in der php Datei bekomme ich das nicht hin.

Es muss nichts mit Seitenzahlen sein.
Kann einfach so angezeigt werden auch wenn man Meterweit Scrollen muss.


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
 <tr>
  <td class="tableb" align="left" colspan="8"><span class="normalfont">Zeige <select name="letter">
 <option value="">alle</option>
 <option value="#">#</option><option value="A">A</option><option value="B">B</option><option value="C">C</option><option value="D">D</option><option value="E">E</option><option value="F">F</option><option value="G">G</option><option value="H">H</option><option value="I">I</option><option value="J">J</option><option value="K">K</option><option value="L">L</option><option value="M">M</option><option value="N">N</option><option value="O">O</option><option value="P">P</option><option value="Q">Q</option><option value="R">R</option><option value="S">S</option><option value="T">T</option><option value="U">U</option><option value="V">V</option><option value="W">W</option><option value="X">X</option><option value="Y">Y</option><option value="Z">Z</option>
</select> Benutzer und Sortiere nach <select name="sortby">
 <option value="userid">User ID</option><option value="username">Username</option><option value="email">E-Mail</option><option value="block" selected="selected">Status</option>
</select> in <select name="order">
 <option value="ASC">aufsteigender</option>
 <option value="DESC" selected="selected" >absteigender</option>
</select> Reihenfolge.
  <input src="images/go.gif" type="image" />
</span></td>
 </tr>
[kamui]
Der MySQL-Begriff hierzu nennt sich " ORDBER BY fieldname " (ASC oder DESC). Den kannst du nach dem bekannten Query einfügen.
Didito
Habe das so hinbekommen wie bei der Mitgliederliste nun habe ich ein Problem bis auf User nach Buchstaben auflisten funktioniert alles.

Das heißt es funktioniert:

User suchen
Alle User
# User

A, B, C usw. funktioniert leider nicht. Kommt immer eine Fehlermeldung.

Könnte jemand mal meinen Quellcode ansehen und die if und die { } richtig setzen so das alles funktioniert.

Mein Quellcode:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
$adminuserid = 8;

if($wbbuserdata['userid'] == $adminuserid) {

	$showadmin = 1;

	list($alle_count) = $db->query_first("SELECT COUNT(*) FROM bb1_users");


         if (isset($_POST['do']) && $_POST['do'] == 'send') {
	$alle = $db->query("SELECT userid, username, email FROM bb1_users WHERE username = '$suche'");
	}

         if (isset($_POST['auflisten']) && $_POST['auflisten'] == 'send') {
         if ($letter == "alle_user") $alle = $db->query("SELECT userid, username, email FROM bb1_users ORDER BY $sortby $order LIMIT 0,5000");
         }
         if ($letter == "#") $alle = $db->query("SELECT userid, username, email FROM bb1_users WHERE SUBSTRING(username,1,1) NOT IN ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z') ORDER BY $sortby $order");
         }
         else $alle = $db->query("SELECT userid, username, email FROM bb1_users WHERE SUBSTRING(username,1,1) = '$letter' ORDER BY $sortby $order");

	$kauz_a_trtd = '';

	while($einer = $db->fetch_array($alle)) {
         $kauz_a_trtd .= "<tr class=\"normalfont\">
           				       		<td class=\"tablea\" align=\"left\">".htmlconverter($einer['userid'])."</td>
	                     				<td class=\"tablea\" align=\"left\">".htmlconverter($einer['username'])."</td>
						 	<td class=\"tablea\" align=\"left\">".htmlconverter($einer['email'])."</td>
					   </tr>";
         }
Rippe
Habe das Problem mit if und { } auch immer.

Bin mal gespannt wie es richtig ist.


Weiß das man mit } eine Funktion schließt aber nicht was in der Funktion alles drinne stehen muss. Also bei deinem Beispiel.

Mal gucken wenn jemand die Lösung dazu postet.
[kamui]
Didito, du rückst auch ein, wie es dir gerade gefällt fröhlich Heute nachmittag kann ich dir da versuchen weiterzuhelfen, muss jetzt los ...
Didito
OK alles klar. Danke
[kamui]
So ist es schöner & einfacher zu lesen Augenzwinkern Ich hab mir erlaubt bei der while-Schleife etwas zu verändern, hoffe das stört dich nicht. Was genau ist jetzt das Problem bei diesem Code?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
$adminuserid = 8;

if($wbbuserdata['userid'] == $adminuserid) {
    $showadmin = 1;
    list($alle_count) = $db->query_first("SELECT COUNT(*) FROM bb1_users");

    if (isset($_POST['do']) && $_POST['do'] == 'send') {
        $alle = $db->query("SELECT userid, username, email FROM bb1_users WHERE username = '$suche'");
    }
    
    if (isset($_POST['auflisten']) && $_POST['auflisten'] == 'send') {
        if ($letter == "alle_user") $alle = $db->query("SELECT userid, username, email FROM bb1_users ORDER BY $sortby $order LIMIT 0,5000");
    }
    if ($letter == "#") {
        $alle = $db->query("SELECT userid, username, email FROM bb1_users WHERE SUBSTRING(username,1,1) NOT IN ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z') ORDER BY $sortby $order");
    } else $alle = $db->query("SELECT userid, username, email FROM bb1_users WHERE SUBSTRING(username,1,1) = '$letter' ORDER BY $sortby $order");
    
    $kauz_a_trtd = '';
    
    while($einer = $db->fetch_array($alle)) {
        foreach ($einer as $key=>$value) {
            if (!is_array($key)) ${$key} = htmlconverter($value);
        }
        $kauz_a_trtd .= "<tr class=\"normalfont\">
           				       		<td class=\"tablea\" align=\"left\">{$userid}</td>
	                     				<td class=\"tablea\" align=\"left\">{$username}</td>
						 	<td class=\"tablea\" align=\"left\">{$email}</td>
					   </tr>";
    }
}
Didito
An der Zeile soll was falsch sein.

Database error in WoltLab Burning Board (2.3.6): Invalid SQL: SELECT userid, username, email, password FROM bb1_users WHERE SUBSTRING(username,1,1) = '' ORDER BY
mysql error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

code:
1:
2:
3:
} else $alle = $db->query("SELECT userid, username, email FROM bb1_users WHERE SUBSTRING(username,1,1) = '$letter' ORDER BY $sortby $order");
[kamui]
Laut Fehlerausgabe sind die Variablen in dem Query nicht definiert, sind sie das denn?
Didito
Also im template steht doch bei dem Drop Down Menu

<select name="letter">
[kamui]
global_register = ON oder OFF? Probier mal alles mit der Superglobalen $_POST['var'].
Didito
Habe alles hinbekommen.