ilch Forum » Ilch Clan 1.1 » Allgemein » Suchfunktion in user fehlerhaft

Geschlossen
  1. #1
    User Pic
    ---Doc--- Mitglied
    Registriert seit
    05.08.2011
    Beiträge
    218
    Beitragswertungen
    4 Beitragspunkte
    Hallo zusammen,

    meine Userliste zeigt seltsame Ergebnisse an wenn ich am Ende der Userliste die SUchfunktion verwende. Zum einen werden manche User gar nicht gefunden selbst wenn man den Namen kopiert oder aber folgendes:
    3 Nutzer mit Namen Test, Tester und Doctest. Suche nach Test liefert als Ergebnis nur Doctest. Was kann die Ursache sein?

    Vielen Dank für Tipps.

    Anbei der Code der entsprechenden userlist.php (Code ist etwas modifziert):

    <?php
        #   Copyright by: Manuel Staechele
        #   Support: www.ilch.de
         
         
        defined ('main') or die ( 'no direct access' );
         
        $title = $allgAr['title'].' :: User :: '.$lang['listofmembers'];
        $hmenu = $extented_forum_menu.'User <b> &raquo; </b> '.$lang['listofmembers'].$extented_forum_menu_sufix;
        $design = new design ( $title , $hmenu, 1);
        $design->header();
        $tpl = new tpl ( 'userlist.htm' );
        # für die geordnete memberliste gibts keine sites!
         
        $limit = 30;  // Limit
        $page = ($menu->getA(1) == 'p' ? $menu->getE(1) : 1 );
        $MPL = db_make_sites ($page , "" , $limit , '?userlist' , 'user' );
        $anfang = ($page - 1) * $limit;
         
         
        $tpl->set_out ( 'SITELINK', $MPL, 0);
         
        $filtername = isset($_GET['filtername']) ? " AND prefix_user.name LIKE '%".escape($_GET['filtername'],'string')."%'" : "";
         
        $tpl->out(0);
        # alle anzuzeigenden rechte holen:
        $qry = db_query('SELECT `id`, `name` FROM `prefix_grundrechte` WHERE `show` = 1 AND `id` >= -1 ORDER BY `name` ASC');
        while ($gr = db_fetch_assoc($qry)) {
        $erg = db_query("SELECT
        posts,
        icq,
        staat,
        email,
        llogin,
        prefix_user.id,
        prefix_grundrechte.name as recht_name,
        regist,
        prefix_user.name,
        recht
        FROM prefix_user
        LEFT JOIN prefix_grundrechte ON prefix_user.recht = prefix_grundrechte.id
        WHERE recht = ".$gr['id'].$filtername."
        ORDER by prefix_user.spezrank ASC LIMIT ".$anfang.",".$limit);
         
        # wenn die gruppe leer ist, wird sie automatisch ausgeblendet:
        if(db_num_rows($erg)==0) continue;
        $tpl->set('group_id', $gr['id']);
        $tpl->set('group_name', $gr['name']);
        $tpl->out(1);
         
        $class = '';
        while ($row = db_fetch_object($erg)) {
        if($row->icq == ""){
            $icq = "";
            } else {
            $icq = "<a href=\"http://wwp.icq.com/scripts/search.dll?to=".str_replace("-","",$row->icq)."\" target=\"_blank\"><img src=\"http://status.icq.com/online.gif?web=".str_replace("-","",$row->icq)."&img=5\" border=\"0\" title=$row->icq></a>";
            }
            if ($class == 'Cmite') { $class = 'Cnorm'; } else { $class = 'Cmite'; }
            $ar = array ( 'NAME' => $row->name,
                            'RANG' => userrang($row->posts,$row->id),
                                            'CLASS' => $class,
                                            'POSTS' => $row->posts,
                                            'ICQ' => $icq,
                                            'UID'   => $row->id,
                                            'DATE' => date('m/d/Y',$row->regist),
                                            'GRUPE' => $row->recht_name,
                                            'STAAT' => ($row->staat!="" ? $row->staat : "na.gif"),
                                            'EMAIL' => $row->email,
                                            'LLOGIN' => date('m/d/Y <b\r> H:i',$row->llogin).' Uhr'
            );
            $tpl->set_ar_out($ar,2);
        }
        }
        $tpl->set_out('filtername',escape(isset($_GET['filtername'])?$_GET['filtername']:'','string'),3);
         
         
         
        $design->footer();
        ?>
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Forcey Mitglied
    Registriert seit
    19.09.2010
    Beiträge
    411
    Beitragswertungen
    66 Beitragspunkte
    Warum modifiziert?

    Und warum den Filter gemoddet? Der Standard funkt doch! :o
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    ---Doc--- Mitglied
    Registriert seit
    05.08.2011
    Beiträge
    218
    Beitragswertungen
    4 Beitragspunkte
    Modifiziert:
    Es sollten nur User, keine Clanmitglieder angezeigt werden.

    Am Filter habe ich nichts verändert. Nur Zeile 27 wurde verändert. Wenn das den Standard nicht beeinträchtigt, funktioniert dieser eben nicht bei mir. (edit: sagen wir besser so, am Filter wurde von mir nichts wissentlich verändert).


    Zuletzt modifiziert von ---Doc--- am 29.12.2011 - 20:33:01
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Forcey Mitglied
    Registriert seit
    19.09.2010
    Beiträge
    411
    Beitragswertungen
    66 Beitragspunkte
    Das die memb_list.php richtig?
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    ---Doc--- Mitglied
    Registriert seit
    05.08.2011
    Beiträge
    218
    Beitragswertungen
    4 Beitragspunkte
    Sorry, nein. Also ist es auch nicht die Standardsuchfunktion logischerweise.

    Es sollte auf
    externer Link basieren, also der erweiterten Memberliste.
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Forcey Mitglied
    Registriert seit
    19.09.2010
    Beiträge
    411
    Beitragswertungen
    66 Beitragspunkte
    Nun

    Die standard suche funkt hier nach:

    if(isset($_GET['filtername']) AND !empty($_GET['filtername'])){
      $filtername = escape($_GET['filtername'], 'string');
    }
    
    if(!empty($filtername)){
      $sql_search=" WHERE prefix_user.name LIKE '%".$filtername."%'";
      $MPL = db_make_sites ($page , $sql_search , $limit , '?user-filtername-'.$filtername , 'user' );
    }else{
      $sql_search="";
      $MPL = db_make_sites ($page , "" , $limit , '?user' , 'user' );
    }


    Deins:

     $filtername = isset($_GET['filtername']) ? " AND prefix_user.name LIKE '%".escape($_GET['filtername'],'string')."%'" : "";



    Ansätze sind schon ähnlich wie zu sehen, kannst dir sicher was mit basteln :p

    Schick mal auch nochmal bitte deine Seite. Möchte das mal Live sehen, damit ich den Code verstehen kann zwinker
    Dann kann ich sicher auch basteln mit dir.
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    ---Doc--- Mitglied
    Registriert seit
    05.08.2011
    Beiträge
    218
    Beitragswertungen
    4 Beitragspunkte
    Leider kenne ich mich mit php nicht aus, ich hoffe Du kannst mir da helfen.
    Per PM habe ich Dir den Link geschickt.

    Vielen Dank.
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    ---Doc--- Mitglied
    Registriert seit
    05.08.2011
    Beiträge
    218
    Beitragswertungen
    4 Beitragspunkte
    Nochmal nachgehakt. Was mir aufgefallen ist, wenn ich den Filter z.B. auf userlist verwende, wird das Ergebnis in omember angezeigt, nach den Anzeigedefinitionen, die dort festgelegt sind (also von Trialmember bis Co-admin), was die fehlerhafte Darstellung erklärt. Eine Lösung habe ich aber noch nicht gefunden.
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Allgemein

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten