tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
213
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    rollerueckwaerts rollerueckwaerts ist offline Mitglied Gold
    Registriert seit
    Jun 2007
    Ort
    Berlin Fhain
    Beiträge
    225
    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

    PHP-Code:
    <?php

            
    function s4jNewUsers( &$params ) {
                global 
    $database;
                
    $this->_db         $database;
                
    $this->_s4j        = new s4jLibNewUsers$params2,  "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;'>&nbsp;</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-Code:
    $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-Code:
    $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
     

  2. #2
    Avatar von Igäl
    Igäl Igäl ist offline Mitglied Brokat
    Registriert seit
    Aug 2007
    Ort
    Winterthur
    Beiträge
    280
    Gibt er dir keine SQL-Fehlermeldung aus? Ist das von dir programmierter Code? Wenn nein, schau ob die Fehler vielleicht unterdrückt und in ein Log-File gespeichert werden. So spontan sehe ich nur:

    PHP-Code:
    //Hier muss vor usertype vermutlich noch der Tabellenbezeichner vom  Join (u.) angehängt werden
    $sql .= $this->_s4j->GetFilter("c""u""WHERE u.usertype = 'user1';"); 
    Der Fehler der foreach-Schleife weist darauf hin, dass der Datentyp der Variable, über die du die Schleife laufen lassen willst, kein Datentyp ist, der von foreach verwendet werden kann. Foreach funktioniert nur mit Arrays.

    Lass dir mal $rows ausgeben und schaue was für ein Datentyp es ist. mit der Funktion is_array() kannst du prüfen, ob es sich dabei um ein Array handelt.
     

Ähnliche Themen

  1. Fehler in Where Clause
    Von dsNDesign im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 16.08.10, 10:40
  2. WHERE Clause
    Von grünes-huhn im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 01.12.08, 13:22
  3. SQL Expression in Where Clause
    Von mario1234 im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 06.08.08, 16:17
  4. Where-Clause beim Datum
    Von bergonline im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 14.05.08, 17:00
  5. Expr IN(value,...) in WHERE-Clause
    Von polarbear11 im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 15.06.05, 09:55