Problem mit Memberlist

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit Memberlist

    Hoi Leute,

    hab mal wieder ein kleines problem. Und zwar habe ich eine Mitgliederliste geschrieben. Diese holt zuerst die "online" user aus der tabelle,vergleicht diese mit den gereggten usern und gibt dann die zuerst die user aus die online sind.

    Dann vergleicht das script nochmal die online user mit den gereggten und gibt dann die leute aus die NICHT online sind.

    memberlist.php
    PHP-Code:
    <?
    session_save_path("./admin/sess/temp");
    session_start();
    ###############
    if (session_is_registered('name'))
    {
       echo "<center>".
            "<h3>Mitglieder Liste</h3>";
       echo "<table border=0 align=center bgcolor=\"$newsbg\">";
       echo "<tr bgcolor=\"$newsa\"> <td>Username</td>";
       echo "<td>User Level</td> <td>Postings</td>";
       echo "<td>Letzter Login</td> </tr>";
       $verbind = mysql_connect($server, $user, $pass);          
       $sele = "SELECT oname, zeit, col FROM $ondb ORDER BY oname";
       $erg = mysql_query($sele, $verbind);

       while ($zeileholen = mysql_fetch_array($erg))  
       { 
       $oname = $zeileholen["oname"];

            $db = mysql_connect("$server", "$user", "$pass");
            $res = mysql_db_query("$datenbank",
                                  "select * from $userdb WHERE nick = '$oname' ORDER BY nick");
            $num = mysql_num_rows($res);
       for ($i=0; $i<$num; $i++)
       {
          $nick = mysql_result($res, $i, "nick");
          $level = mysql_result($res, $i, "level");
          $postings = mysql_result($res, $i, "postings");

          // Tabellenzeile mit -zellen
          echo "<tr bgcolor=\"$newsb\"> <td><a href=\"news.php?action=user&value=$nick\">$nick</a>";
          echo "</td> <td>$level</td> <td>$postings</td>";
          echo "<td><font color=\"#32CD32\">ONLINE</font></td></tr>";
             mysql_close($db);
    }
    }
       $verbin = mysql_connect($server, $user, $pass);          
       $selec = "SELECT oname FROM $ondb";
       $erge = mysql_query($selec, $verbin);

       while ($zeileholen = mysql_fetch_array($erge))  
       { 
       $onname = $zeileholen["oname"];


            $dbs = mysql_connect("$server", "$user", "$pass");
            $res = mysql_db_query("$datenbank",
                                  "select * from $userdb WHERE nick <> '$onname'");
            $num = mysql_num_rows($res);
       for ($i=0; $i<$num; $i++)
       {
          $nickl = mysql_result($res, $i, "nick");
          $levell = mysql_result($res, $i, "level");
          $postingsl = mysql_result($res, $i, "postings");
          $llogin = mysql_result($res, $i, "llogin");

          // Tabellenzeile mit -zellen
          echo "<tr bgcolor=\"$newsb\"> <td><a href=\"news.php?action=user&value=$nickl\">$nickl</a>";
          echo "</td> <td>$levell</td> <td>$postingsl</td>";
          echo "<td>$llogin</td></tr>";
    }
    }

             // Tabellenende
       echo "</table>";
       mysql_close($verbind);
       mysql_close($dbs);
       }
       
         else
       {
           echo"<center>Du bist nicht eingeloggt.</center>";
       }
       ?>
    Nu zu meinem problem. Das script listet mir einmal die online user auf, aber auch die online user mit dem letzten login. So das doppelnennungen erscheinen. Das sollte nicht so sein.
    Beispiel
    Karsten ONLINE
    Gustav ONLINE
    Karsten 08.12.2002 20:50
    Gustav 06.12.2002 12:45

    Sorry wenns hier falsch gepostet ist, konnte mich nicht entscheiden wo es hingehört. Wenn es hier falsch ist dann bitte verscheiben.

  • #2
    1. Versuchs mit JOIN
    2. Falsches Forum!

    *VERSCHIEB*

    Kommentar


    • #3
      so habs nochmal umgebaut.

      PHP-Code:
              $db mysql_connect("$server""$user""$pass");
              
      $res mysql_db_query("$datenbank",
                                    
      "select * from $userdb JOIN $ondb WHERE nick = oname ORDER BY nick");
              
      $num mysql_num_rows($res);

      ---------------------------------------
              
      $dbs mysql_connect("$server""$user""$pass");
              
      $rest mysql_db_query("$datenbank",
                                    
      "select * from $userdb JOIN $ondb WHERE nick <> oname ORDER BY nick");
              
      $num mysql_num_rows($rest); 
      das funktioniert soweit ganz gut. Aber nur(!) wenn ein user eingeloggt ist. kommt ein zweiter hinzu dann erscheinen wieder die doppeleinträge. *schulterzuck* was mache ich nur falsch ?!

      Kommentar


      • #4
        wenn in beiden tabellen das feld nick heisst, sollte es funktionieren.

        Code:
        select * from $ondb
                        LEFT OUTER JOIN $userdb USING(nick)
        ORDER BY nick
        übrigens ist ein normaler JOIN sinnlos. schliesslich ist das das gleiche....

        .... FROM tab1,tab2 ....
        oder
        .... FROM tab1 JOIN tab2 ....
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar

        Lädt...
        X