In Suche erscheinen nicht mehr alle Personen

Hast du Probleme Admidio einzurichten? Hier kannst du Fragen rund um die Einrichtung stellen.
Antworten
Jammon
Beiträge: 89
Registriert: 19. Okt 2010, 12:57

In Suche erscheinen nicht mehr alle Personen

Beitrag von Jammon »

Hallo Zusammen

Ich hatte in der Version 2.2.9 ein wenig zusätzlichen Code eingebaut, damit ich im Suchfeld auch nach dem Pfadinamen suchen konnte, denn dies ist für uns häufig einfacher. Nun hatte ich ein Update auf 2.3.1 durchgeführt und versucht, dort den Code einzubauen. Leider werden jetzt BEI DER SUCHE nur noch alle Personen angezeigt, die auch einen Pfadinamen hinterlegt haben. Wenn ich normal auf Benutzerverwaltung klicke, dann werden alle aufgelistet. Hier mein geänderter Code:

Zeile 61:

Code: Alles auswählen

// Bedingung fuer die Suchanfrage
    $search_string = str_replace(',', '', $getSearch). '%';
    $search_condition = ' AND (  last_name.usd_value  || \' \' || first_name.usd_value || \' \' || scout_name.usd_value LIKE \''.$search_string.'\'
    						  OR last_name.usd_value  || \' \' || scout_name.usd_value || \' \' || first_name.usd_value LIKE \''.$search_string.'\'
    						  OR first_name.usd_value || \' \' || scout_name.usd_value || \' \' || last_name.usd_value LIKE  \''.$search_string.'\'
                              OR first_name.usd_value || \' \' || last_name.usd_value  || \' \' || scout_name.usd_value LIKE \''.$search_string.'\'
                              OR scout_name.usd_value || \' \' || last_name.usd_value  || \' \' || first_name.usd_value LIKE \''.$search_string.'\' 
                              OR scout_name.usd_value || \' \' || first_name.usd_value || \' \' || last_name.usd_value LIKE  \''.$search_string.'\' ) ';
}
ca. Zeile 88:

Code: Alles auswählen

// Anzahl relevanter Datensaetze ermitteln
$sql = 'SELECT COUNT(1) as count
		  FROM '. TBL_USERS. '
          JOIN '. TBL_USER_DATA. ' as last_name
            ON last_name.usd_usr_id = usr_id
           AND last_name.usd_usf_id = '. $gProfileFields->getProperty('LAST_NAME', 'usf_id'). '
          JOIN '. TBL_USER_DATA. ' as first_name
            ON first_name.usd_usr_id = usr_id
           AND first_name.usd_usf_id = '. $gProfileFields->getProperty('FIRST_NAME', 'usf_id'). '
          LEFT JOIN '. TBL_USER_DATA. ' as scout_name
            ON scout_name.usd_usr_id = usr_id
           AND scout_name.usd_usf_id = '. $gProfileFields->getProperty('PFADINAME', 'usf_id'). '
         WHERE usr_valid = 1
               '.$member_condition.
                 $search_condition;
$result = $gDb->query($sql);
$row    = $gDb->fetch_array($result);
$num_members = $row['count'];

// alle Mitglieder zur Auswahl selektieren
// unbestaetigte User werden dabei nicht angezeigt
$sql    = 'SELECT usr_id, last_name.usd_value as last_name, first_name.usd_value as first_name, scout_name.usd_value as scout_name,
                  email.usd_value as email, website.usd_value as website,
                  usr_login_name, COALESCE(usr_timestamp_change, usr_timestamp_create) as timestamp,
                  (SELECT count(*)
                     FROM '. TBL_ROLES. ', '. TBL_CATEGORIES. ', '. TBL_MEMBERS. '
                    WHERE rol_valid   = 1
                      AND rol_cat_id  = cat_id
                      AND (  cat_org_id = '. $gCurrentOrganization->getValue('org_id'). '
                          OR cat_org_id IS NULL )
                      AND mem_rol_id  = rol_id
                      AND mem_begin  <= \''.DATE_NOW.'\'
                      AND mem_end     > \''.DATE_NOW.'\'
                      AND mem_usr_id  = usr_id) as member_this_orga,
                  (SELECT count(*)
                     FROM '. TBL_ROLES. ', '. TBL_CATEGORIES. ', '. TBL_MEMBERS. '
                    WHERE rol_valid   = 1
                      AND rol_cat_id  = cat_id
                      AND cat_org_id <> '. $gCurrentOrganization->getValue('org_id'). '
                      AND mem_rol_id  = rol_id
                      AND mem_begin  <= \''.DATE_NOW.'\'
                      AND mem_end     > \''.DATE_NOW.'\'
                      AND mem_usr_id  = usr_id) as member_other_orga
             FROM '. TBL_USERS. '
             JOIN '. TBL_USER_DATA. ' as last_name
               ON last_name.usd_usr_id = usr_id
              AND last_name.usd_usf_id = '. $gProfileFields->getProperty('LAST_NAME', 'usf_id'). '
             JOIN '. TBL_USER_DATA. ' as first_name
               ON first_name.usd_usr_id = usr_id
              AND first_name.usd_usf_id = '. $gProfileFields->getProperty('FIRST_NAME', 'usf_id'). '
             LEFT JOIN '. TBL_USER_DATA. ' as scout_name
               ON scout_name.usd_usr_id = usr_id
              AND scout_name.usd_usf_id = '. $gProfileFields->getProperty('PFADINAME', 'usf_id'). '
             LEFT JOIN '. TBL_USER_DATA. ' as email
               ON email.usd_usr_id = usr_id
              AND email.usd_usf_id = '. $gProfileFields->getProperty('EMAIL', 'usf_id'). '
             LEFT JOIN '. TBL_USER_DATA. ' as website
               ON website.usd_usr_id = usr_id
              AND website.usd_usf_id = '. $gProfileFields->getProperty('WEBSITE', 'usf_id'). '
            WHERE usr_valid = 1
                  '.$member_condition.
                    $search_condition.'
            ORDER BY last_name.usd_value, first_name.usd_value 
			LIMIT '.$members_per_page.' OFFSET '.$getStart;
$result_mgl  = $gDb->query($sql);
Die Änderungen betreffen "scout_name".

Könnt ihr mir da helfen und sagen, was ich falsch gemacht habe? Ich komme einfach nicht drauf, keine Ahnung, wo der Hund vergraben ist!

Danke schon im Voraus.

Gruzz Jammon
Benutzeravatar
fasse
Administrator
Beiträge: 6228
Registriert: 12. Nov 2005, 16:06

Re: In Suche erscheinen nicht mehr alle Personen

Beitrag von fasse »

Hallo Jammon,

hab mir deine Scriptteile hier mal angeschaut, kann aber so oberflächlich auch keinen grundlegenden Fehler feststellen.

Was schon mal Sinn macht, sich das SQL-Statement ausgeben zu lassen und mit diesem dann mal im phpmyadmin herumzuspielen. evtl. findet man dann den Fehler.

Gruß
Fasse
Jammon
Beiträge: 89
Registriert: 19. Okt 2010, 12:57

Re: In Suche erscheinen nicht mehr alle Personen

Beitrag von Jammon »

Hallo fasse

Heute habe ich auf die Version 2.3.2 geupdatet. Dort besteht der Fehler immer noch. Ich habe mir das SQL-Statement ausgeben lassen und in phpmyadmin eingefügt. Dort erscheint die gesuchte Zeile als Resultat.

Was mich aber stutzig macht ist, dass wenn ich in der Datei members.php nach diesem Aufruf

Code: Alles auswählen

$result_mgl  = $gDb->query($sql);
diesen Code ausführe

Code: Alles auswählen

print_r($gDb->fetch_array($result_mgl));
, print_r nichts zurückgibt...

Das kann ich mir wirklich nicht erklären! Ich bin völlig ratlos. Kannst du dir dieses Phänomen erklären?

Gruzz Jammon
Jammon
Beiträge: 89
Registriert: 19. Okt 2010, 12:57

Re: In Suche erscheinen nicht mehr alle Personen

Beitrag von Jammon »

Hallo zusammen

Folgender Code löst das Problem. Wieso kann ich mir aber nicht erklären. Ich habe nur zusätzlich zwei Zeilen eingefügt, welche es anscheinend braucht. Habt ihr eine Erklärung dafür?

Code: Alles auswählen

$search_condition = ' AND  ( last_name.usd_value  || \' \' || first_name.usd_value LIKE \''.$search_string.'\'
    						  OR first_name.usd_value || \' \' || last_name.usd_value LIKE 	\''.$search_string.'\' 
    						  OR last_name.usd_value  || \' \' || first_name.usd_value || \' \' || scout_name.usd_value LIKE \''.$search_string.'\'
    						  OR last_name.usd_value  || \' \' || scout_name.usd_value || \' \' || first_name.usd_value LIKE \''.$search_string.'\'
    						  OR first_name.usd_value || \' \' || scout_name.usd_value || \' \' || last_name.usd_value LIKE  \''.$search_string.'\'
                              OR first_name.usd_value || \' \' || last_name.usd_value  || \' \' || scout_name.usd_value LIKE \''.$search_string.'\'
                              OR scout_name.usd_value || \' \' || last_name.usd_value  || \' \' || first_name.usd_value LIKE \''.$search_string.'\' 
                              OR scout_name.usd_value || \' \' || first_name.usd_value || \' \' || last_name.usd_value LIKE  \''.$search_string.'\' ) ';

Gruzz Jammon
Antworten