Userfilter

Fragen zur Implementierung und/oder Anpassung von ConPresso 4 werden in diesem Forum diskutiert.
Antworten
Ralf
ConPresso-Checker
Beiträge: 205
Registriert: 25.08.2005 10:58
Hat sich bedankt: 65 Mal
Danksagung erhalten: 14 Mal

Userfilter

Beitrag von Ralf »

Hallo zusammen,

nachdem MarkusR leider noch keinen Auftrag bekommen hat und mein Auftraggeber sich noch nicht sicher ist, ob er dies haben möchte dachte ich komm Ralf, das kann doch nicht sooo schwer sein versuche es doch mal.
Wenn du nicht weiterkommst dann hilft dir bestimmt auch die Community??!

Gesagt getan, mit der tollen Vorlage von MarkusR hier beim Artikelfilter

Habe ich folgenden Code zustande gebracht:
ACHTUNG dieser Code hat noch folgendes Probleme:
- 1. Die Ausgabe der richtigen Seitennavigation stimmt noch nicht, da das Limit noch nicht richtig ermittelt wird
- 2. ... (gelöst)

Aber erst mal zum Code und dann zu meinen Fragen an euch.

Öffne _admin/users.php

SUCHE

Code: Alles auswählen

        // make sure we are not behind the last entry
        if ($max_data<=$_SESSION['SID_pagers']['users']) {
            $_SESSION['SID_pagers']['users'] = $max_data-1;
        }
FÜGE DANACH EIN

Code: Alles auswählen

        // Start Userfilter Teil 1 *****************
        switch ($_REQUEST['action']) {
        case 'togglefilter':
            $_SESSION['filter_users']['enabled'] = !$_SESSION['filter_users']['enabled'];
            break;
        case 'setfilter':
            $_SESSION['SID_pagers'][$pager] = 0;
            $_SESSION['filter_users']['phrase'] = $_POST['phrase'];
            break;
        }
        if (!$_SESSION['filter_users']['enabled']) {
            $_SESSION['filter_users']['phrase'] = '';
        }

        $join_phrase = '';
        $q_phrase = '';
        $limit_phrase = '';
        if ($_SESSION['filter_users']['phrase']) {
		$join_phrase .= "LEFT JOIN ".CPO_USERGROUPS." AS g ON u.usergroups_id = g.id ";

        $q_phrase .= "AND (u.id LIKE '%".addslashes($_SESSION['filter_users']['phrase'])."%' "
                  ."OR user LIKE '%".addslashes($_SESSION['filter_users']['phrase'])."%' "
                  ."OR admin LIKE '%".addslashes($_SESSION['filter_users']['phrase'])."%' "
                  ."OR name LIKE '%".addslashes($_SESSION['filter_users']['phrase'])."%' "
                  ."OR email LIKE '%".addslashes($_SESSION['filter_users']['phrase'])."%' "
                  ."OR g.usergroup LIKE '%".addslashes($_SESSION['filter_users']['phrase'])."%') ";
        }
		
        if ($_SESSION['filter_users']['phrase']=='') {
            $limit_phrase .= "LIMIT ".$_SESSION['SID_pagers']['users'].", ".$anzahl."";	
        }
        // Ende Userfilter Teil 1 *****************
SUCHE CODE

Code: Alles auswählen

        $db->query('SELECT id, user, admin, name, email, usergroups_id '
                  .'FROM '.CPO_USER.' '
                  .'WHERE id>=0 '
                  .'ORDER BY user '
                  .'LIMIT '.$_SESSION['SID_pagers']['users'].', '.$anzahl);
ERSETZE IHN DURCH

Code: Alles auswählen

		// Start Userfilter Teil 2 *****************
        $db->query('SELECT u.id, user, admin, name, email, usergroups_id '
                  .'FROM '.CPO_USER.' AS u '
				  .$join_phrase
                  .'WHERE u.id>=0 '
				  .$q_phrase
                  .'ORDER BY user '
				  .$limit_phrase);
        // Ende Userfilter Teil 2 *****************
SUCHE CODE

Code: Alles auswählen

        printPageHeader(
            __('Work on users'),
            __('In this view you can choose a user for editing or delete it.'),
            'users-workonusers.html#users-workonusers'
        );
FÜGE DANACH EIN

Code: Alles auswählen

      // Start Userfilter Teil 3 *****************
      if (!$_SESSION['filter_users']['enabled']) {
         print('<table style="width: 100%;" class="colored filter"><thead>');
         print('<tr>');
         printf('<th><span><a href="%1$s">'
              .'<img src="'.SKIN_URL.'sym_filteron.gif" width="13" height="13" style="vertical-align: text-bottom;" alt="%2$s" title="%2$s" ></a>'
              .'&nbsp;<a href="%1$s">%2$s</a>'.help('').'</span></th>',
            $_SERVER['PHP_SELF'].'?action=togglefilter',
            htmlspecialchars(__('Enable filter')));
         print('</tr></table>');
      } else {
         print('<table style="width: 100%;" class="colored"><thead>');
         print('<tr>');
         printf('<th colspan="3"><span><a href="%1$s">'
              .'<img src="'.SKIN_URL.'sym_filteroff.gif" width="13" height="13" style="vertical-align: text-bottom;" alt="%2$s" title="%2$s" ></a>'
              .'&nbsp;<a href="%1$s">%2$s</a>'.help('').'</span></th>',
            $_SERVER['PHP_SELF'].'?action=togglefilter',
            htmlspecialchars(__('Disable filter')));
         print('</tr></thead><tbody><tr>');

         print('<form method="post" action="'.$_SERVER["PHP_SELF"].' " name="newsentry">');
         print('<td class="leftrow">');
            print(__('Filter by phrase:').'</td><td>');
            printf('<input type="text" name="%s" value="%s" class="inputwidth">'.help(''),
               'phrase',
               htmlspecialchars($_SESSION['filter_users']['phrase']));
         print('</td></tr><td>&nbsp;</td><td>');
            print('<input type="hidden" name="action" value="setfilter">');
            print('<input type="submit" class="button" value="'.htmlspecialchars(__('Set filter parameters')).'">');
         print('</td>');
         print('</form>');
         print('</tr></tbody></table>');
      }
      // Ende Userfilter Teil 3 *****************
So dies war es, nun zu meinen Problemen bei den ihr mir evtl. helfen könnt?!

1. Im Teil 1 habe ich ja folgenden Code

Code: Alles auswählen

$limit_phrase .= "LIMIT ".$_SESSION['SID_pagers']['users'].", ".$anzahl."";
und da wird ja das Limit der maximal anzuzeigenden User mit einbezogen, wie kann ich dies auf das Suchergebnis beschränken??
OK ich habe gesehen vor meinem Code 1 wird in der Datei diese Variable neu belegt mit der Summe der GESAMTEN User die in der DB stehen ... wie kann ich das ändern??

2. :oops: :? bekomme ich im ersten Codeteil die Auskommentierten Zeilen so nicht wirklich hin??!! wenn ich das so mache, bekomme ich immer den Fehler:
Database error:
Invalid SQL: SELECT id, user, admin, name, email, usergroups_id FROM cpo405_user LEFT JOIN cpo405_usergroups u ON cpo405_user.usergroups_id = u.id WHERE id>=0 AND (id LIKE '%123%' OR user LIKE '%123%' OR admin LIKE '%123%' OR name LIKE '%123%' OR email LIKE '%123%' OR u.usergroup LIKE '%123%') ORDER BY user
Column: 'id' in field list is ambiguous (1052)
OK irgendetwas ist unklar/ doppeldeutig aber wie heißt es richtig??
Tja wie gesagt, meine SQL Kenntnisse gehen gegen Null :roll:
EDIT: --> gelöst!!!

So dies war es mal von meiner Seite aus, wäre schön was von euch zu hören, evtl. ist dann in der nächsten Version dies ja enthalten?

@ MarkusR
Sorry das du keinen Auftrag von mir bekommen hast, aber ich dachte ich versuche mich mal selber dran ... es hat mich eben irgendwie der Ehrgeiz gepackt 8)

cu Ralf
Zuletzt geändert von Ralf am 10.10.2006 22:45, insgesamt 2-mal geändert.
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Re: Userfilter

Beitrag von MarkusR »

Ralf hat geschrieben:2. :oops: :? bekomme ich im ersten Codeteil die Auskommentierten Zeilen so nicht wirklich hin??!! wenn ich das so mache, bekomme ich immer den Fehler:
Database error:
Invalid SQL: SELECT id, user, admin, name, email, usergroups_id FROM cpo405_user LEFT JOIN cpo405_usergroups u ON cpo405_user.usergroups_id = u.id WHERE id>=0 AND (id LIKE '%123%' OR user LIKE '%123%' OR admin LIKE '%123%' OR name LIKE '%123%' OR email LIKE '%123%' OR u.usergroup LIKE '%123%') ORDER BY user
Column: 'id' in field list is ambiguous (1052)
OK irgendetwas ist unklar/ doppeldeutig aber wie heißt es richtig??
Tja wie gesagt, meine SQL Kenntnisse gehen gegen Null :roll:
Steht doch da... nicht irgendwas sondern "id".
Wenn Du die schwarzen id's so schreibst wie das rote, dann wird es eindeutig...

Und um den Auftrag mach Dir mal keinen Kopf... bin auch mal ganz froh nicht irgendwas erfinden zu müssen... :wink:
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Ralf
ConPresso-Checker
Beiträge: 205
Registriert: 25.08.2005 10:58
Hat sich bedankt: 65 Mal
Danksagung erhalten: 14 Mal

Beitrag von Ralf »

OK ich kann mich auch täuschen aber ist u.id bei meinem Code NICHT das id Feld von der Tabelle usergroups??

Und wenn ja dann wäre es doch falsch, da ich doch das ID Feld von der Tabelle user ins Array nehmen möchte ....

EDIT:
jetzt habe ich es ....
das mit dem EINDEUTIG und der kleinen Unterstützung von Google habe ich es lösen können!!

Problem 2 nun gelöst!!!

--> CODE im ERSTEN Beitrag angepasst!!!


SO jetzt bleibt nur noch das Problem 1 ??!!!
Hat da noch jemand eine Idee wie ich dies abändern muss, dass er mir nur die Anzahl der Suchergebnisse in die Session "$_SESSION['SID_pagers']['users']" schreibt??

DANKE cu Ralf
Antworten