rollerueckwaerts
Erfahrenes Mitglied
Dies ist ein Teil eines Scriptes welches die neuesten registrierten Benutzer der Seite in einer Liste darstellen soll. Das klappt auch, nur möchte ich einige Nutzer herausfiltern.
Die Nutzer sind in verschiedene Usergruppen eingeteilt. Diese Einträge werden in der Datenbank Tabelle #__users Spalte usertype gespeichert.
Mit Where möchte ich nun angeben das nur User der Benutzergruppe user1 angezeigt werden.
Für mich persönlich ist der Code nicht durchschaubar doch sicher gibt es jemanden der das kann
Habe im Code bereits den Eintrag u.usertype, hinzugefügt
und hier hab ich aus >GetFilter("c", "u", "WHERE"); das hier gemacht
führt leider nur zu dem Fehler
Invalid argument supplied for foreach()
Höchstwahrscheinlich bin ich völlig auf dem Holzweg, aber mehr Einfälle habe ich leider als völliger PHP-Newbie nicht *g
Hoffe das Ganze ist vielleicht wieder mit einem kleinen zusätzlichen Codegeschnippsel durchführbar Freue mich auf eure Unterstützung.
Vielen Dank schonmal jetz !
Lg
Tobs
Die Nutzer sind in verschiedene Usergruppen eingeteilt. Diese Einträge werden in der Datenbank Tabelle #__users Spalte usertype gespeichert.
Mit Where möchte ich nun angeben das nur User der Benutzergruppe user1 angezeigt werden.
Für mich persönlich ist der Code nicht durchschaubar doch sicher gibt es jemanden der das kann
PHP:
<?php
function s4jNewUsers( &$params ) {
global $database;
$this->_db = $database;
$this->_s4j = new s4jLibNewUsers( $params, 2, "mod_s4jnewusers" );
$this->_params = & $params;
}
function GetDataRows() {
$max_user_shown = $this->_params->get('max_user_shown', 3);
$sql = "SELECT DISTINCT
u.id, u.username, u.name,
s.userid as s4jonline";
$sql .= $this->_s4j->GetFields();
$sql .= " FROM
( #__users u INNER JOIN #__comprofiler c ON u.id = c.user_id AND u.block =0 AND c.confirmed =1 AND c.approved =1 )
LEFT JOIN #__session s ON s.userid = u.id AND s.guest = 0";
$sql .= $this->_s4j->GetFilter("c", "u", "WHERE");
$sql .= " ORDER BY registerdate DESC
LIMIT 0, " . $max_user_shown;
$this->_db->setQuery( $sql );
$rows = $this->_db->loadObjectList();
return $rows;
}
function Show() {
$columns_count = $this->_params->get('columns_count', 5);
$rows = $this->GetDataRows();
$tr = 1;
$ind = 0;
$rows_count = count($rows); //NOTE: Improve later
$result = "<table border='0'>"; // TODO: Change template
foreach ($rows as $row) {
if( $tr == 1)
$result .= "<tr>";
$result .= "<td valign='top'>".$this->_s4j->GetUser( $row )."</td>";
if($tr == $columns_count) {
$result .= "</tr>";
$tr=1;
} else if( $ind == $rows_count ) {
for($j = $tr; $j < $columns_count; $j++) {
$result .= "<td style='display:none;'> </td>";
}
$result .= "</tr>";
} else {
$tr++;
}
$ind++;
}
$result .= "</table>";
return $result;
}
}
function s4jNewUsersCaching( & $params ){
$s4NewUsers = new s4jNewUsers( $params );
echo $s4NewUsers->Show();
}
}
?>
Habe im Code bereits den Eintrag u.usertype, hinzugefügt
PHP:
$sql = "SELECT DISTINCT
u.id, u.username, u.name, u.usertype,
s.userid as s4jonline";
und hier hab ich aus >GetFilter("c", "u", "WHERE"); das hier gemacht
PHP:
$sql .= $this->_s4j->GetFilter("c", "u", "WHERE usertype = 'user1';");
$sql .= " ORDER BY registerdate DESC
LIMIT 0, " . $max_user_shown;
führt leider nur zu dem Fehler
Invalid argument supplied for foreach()
Höchstwahrscheinlich bin ich völlig auf dem Holzweg, aber mehr Einfälle habe ich leider als völliger PHP-Newbie nicht *g
Hoffe das Ganze ist vielleicht wieder mit einem kleinen zusätzlichen Codegeschnippsel durchführbar Freue mich auf eure Unterstützung.
Vielen Dank schonmal jetz !
Lg
Tobs