Ältesten Benutzer und Benutzerin anzeigen
-
- Beiträge: 34
- Registriert: 5. Apr 2012, 20:56
- Wohnort: Steinbach
- Kontaktdaten:
Ältesten Benutzer und Benutzerin anzeigen
Hallo Admidio Team
ich benutze seid kurzem eure wirklich super Mitgliederverwaltung.
zusätzlich habe ich das Geburtstagsplugin Installiert.
Gibt es dort die Möglichkeit den Ältesten Benutzer anzeigen zu lassen über den Geburtstagkinder??
ich benutze seid kurzem eure wirklich super Mitgliederverwaltung.
zusätzlich habe ich das Geburtstagsplugin Installiert.
Gibt es dort die Möglichkeit den Ältesten Benutzer anzeigen zu lassen über den Geburtstagkinder??
-
- Former team member
- Beiträge: 1087
- Registriert: 2. Sep 2007, 17:12
- Wohnort: Itzstedt
- Kontaktdaten:
Re: Ältesten Benutzer und Benutzerin anzeigen
Dürfte so in dieser Art nicht funktionieren, nein.
Das ist eine seperate Abfrage.
Das ist eine seperate Abfrage.
-
- Beiträge: 34
- Registriert: 5. Apr 2012, 20:56
- Wohnort: Steinbach
- Kontaktdaten:
Re: Ältesten Benutzer und Benutzerin anzeigen
Ich habe das birthday Plugin genommen und die birthday.php in der zeile 165 geändert in
und
jetzt bekomme ich eine liste sortiert nach dem alter.
nun möchte ich aber nur den ersten sehen (also den älesten) was mache ich falsch??
Code: Alles auswählen
ORDER BY age '.$sort_sql.', age ';
Code: Alles auswählen
$plg_show_future = 365;
nun möchte ich aber nur den ersten sehen (also den älesten) was mache ich falsch??
- Thomas-RCV
- Former team member
- Beiträge: 786
- Registriert: 1. Aug 2011, 15:06
Re: Ältesten Benutzer und Benutzerin anzeigen
Hallo,
wenn du bereits nach Alter absteigend sortiert hast, dann füge dem SQL Statement am Schluss ein LIMIT 1 hinzu.
Dadurch wird nur der 1. Datensatz ausgegeben,.... also der/die Älteste
VG Thomas
wenn du bereits nach Alter absteigend sortiert hast, dann füge dem SQL Statement am Schluss ein LIMIT 1 hinzu.
Dadurch wird nur der 1. Datensatz ausgegeben,.... also der/die Älteste
VG Thomas
-
- Beiträge: 34
- Registriert: 5. Apr 2012, 20:56
- Wohnort: Steinbach
- Kontaktdaten:
Re: Ältesten Benutzer und Benutzerin anzeigen
Ja da ist ja mein Problem wo soll ich das setzen??
Code: Alles auswählen
$sql = 'SELECT DISTINCT usr_id, usr_login_name,
last_name.usd_value as last_name, first_name.usd_value as first_name, city.usd_value as city,
birthday.bday as birthday, birthday.bdate,
DATEDIFF(birthday.bdate, \''.DATETIME_NOW.'\') AS days_to_bdate,
YEAR(bdate) - YEAR(bday) AS age,
email.usd_value as email, gender.usd_value as gender
FROM '. TBL_USERS. ' users
JOIN ( (SELECT usd_usr_id, usd_value AS bday,
year(\''.DATETIME_NOW.'\') || \'-\' || month(usd_value) || \'-\' || dayofmonth(bd1.usd_value) AS bdate
FROM '. TBL_USER_DATA. ' bd1
WHERE DATEDIFF(year(\''.DATETIME_NOW.'\') || \'-\' || month(usd_value) || \'-\' || dayofmonth(bd1.usd_value), \''.DATETIME_NOW.'\')
BETWEEN -'.$plg_show_zeitraum.' AND '.$plg_show_future.'
AND usd_usf_id = '. $gProfileFields->getProperty('BIRTHDAY', 'usf_id'). ')
UNION
(SELECT usd_usr_id, usd_value AS bday,
year(\''.DATETIME_NOW.'\')-1 || \'-\' || month(usd_value) || \'-\' || dayofmonth(bd2.usd_value) AS bdate
FROM '. TBL_USER_DATA. ' bd2
WHERE DATEDIFF(year(\''.DATETIME_NOW.'\')-1 || \'-\' || month(usd_value) || \'-\' || dayofmonth(bd2.usd_value), \''.DATETIME_NOW.'\')
BETWEEN -'.$plg_show_zeitraum.' AND '.$plg_show_future.'
AND usd_usf_id = '. $gProfileFields->getProperty('BIRTHDAY', 'usf_id'). ')
UNION
(SELECT usd_usr_id, usd_value AS bday,
year(\''.DATETIME_NOW.'\')+1 || \'-\' || month(usd_value) || \'-\' || dayofmonth(bd3.usd_value) AS bdate
FROM '. TBL_USER_DATA. ' bd3
WHERE DATEDIFF(year(\''.DATETIME_NOW.'\')+1 || \'-\' || month(usd_value) || \'-\' || dayofmonth(bd3.usd_value), \''.DATETIME_NOW.'\')
BETWEEN -'.$plg_show_zeitraum.' AND '.$plg_show_future.'
AND usd_usf_id = '. $gProfileFields->getProperty('BIRTHDAY', 'usf_id'). ')
) birthday
ON birthday.usd_usr_id = usr_id
LEFT 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'). '
LEFT 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 city
ON city.usd_usr_id = usr_id
AND city.usd_usf_id = '. $gProfileFields->getProperty('CITY', '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 gender
ON gender.usd_usr_id = usr_id
AND gender.usd_usf_id = '. $gProfileFields->getProperty('GENDER', 'usf_id'). '
LEFT JOIN '. TBL_MEMBERS. '
ON mem_usr_id = usr_id
AND mem_begin <= \''.DATE_NOW.'\'
AND mem_end > \''.DATE_NOW.'\'
JOIN '. TBL_ROLES. '
ON mem_rol_id = rol_id
AND rol_valid = 1
JOIN '. TBL_CATEGORIES. '
ON rol_cat_id = cat_id
AND cat_org_id = '. $gCurrentOrganization->getValue('org_id'). '
WHERE usr_valid = 1
AND mem_rol_id '.$rol_sql.'
ORDER BY age '.$sort_sql.',age ,last_name ';
//echo $sql; exit();
$result = $gDb->query($sql);
- Thomas-RCV
- Former team member
- Beiträge: 786
- Registriert: 1. Aug 2011, 15:06
Re: Ältesten Benutzer und Benutzerin anzeigen
Ähm,das würde ich da definitiv nicht versuchen abzuändern, denn dann machst du das Plugin ja unbrauchbar
Da du ja nur einen einzigen Datensatz möchtest, ist eine separate Abfrage die richtige Wahl. Das baust du dann da ein, wo du es brauchst
VG Thomas
Da du ja nur einen einzigen Datensatz möchtest, ist eine separate Abfrage die richtige Wahl. Das baust du dann da ein, wo du es brauchst
VG Thomas
-
- Beiträge: 34
- Registriert: 5. Apr 2012, 20:56
- Wohnort: Steinbach
- Kontaktdaten:
Re: Ältesten Benutzer und Benutzerin anzeigen
Hallo Admidioteam
Wenn ich doch aber das Plugin doppelt einsetze und nur bei dem einen diese Daten abwandle müsste es doch aber gehen???
Ich kenne mich mit SQL Php nicht aus. Daher fällt eine separate abfrage weg!
Wenn ich doch aber das Plugin doppelt einsetze und nur bei dem einen diese Daten abwandle müsste es doch aber gehen???
Ich kenne mich mit SQL Php nicht aus. Daher fällt eine separate abfrage weg!
- Thomas-RCV
- Former team member
- Beiträge: 786
- Registriert: 1. Aug 2011, 15:06
Re: Ältesten Benutzer und Benutzerin anzeigen
Ich schau mir die Tabellen mal an,....
- Thomas-RCV
- Former team member
- Beiträge: 786
- Registriert: 1. Aug 2011, 15:06
Re: Ältesten Benutzer und Benutzerin anzeigen
Du brauchst das Plugin nicht doppelt einsetzen, lass es so wie es ist, denn das SQL Statement ist schon eher komplex.
Bau dir stattdessen diesen kleinen "Patch" da ins Script ein, wo du es haben möchtest.
Das kannst du innerhalb von Admidio verwenden, wo du möchtest. Die Ausgabe kannst du ja nach Wünschen abändern,...
Diese Abfrage holt dir den ältesten aktiven User, der einer Rolle zugeordnet ist. Das muss nicht zwingend ein Mitglied sein, sondern kann auch z.B. eine Webmasterrolle sein, die sonst kein Mitglied ist!
Wenn du das explizit für nur Mitglieder willst, dann musst du nach der "Where" Abfrage noch die Rolle anhand deiner Datenbankstruktur festlegen und folgenden Code erweitern:
Ob 4 der Rolle "Mitglied" entspricht, musst du in deiner Datenbank nachschauen.
VG Thomas
Bau dir stattdessen diesen kleinen "Patch" da ins Script ein, wo du es haben möchtest.
Code: Alles auswählen
<?php
$sql = 'SELECT DISTINCT
surname.usd_value as surname, firstname.usd_value as firstname, birthday.usd_value as birthday
FROM '.TBL_MEMBERS.'
LEFT JOIN '. TBL_USER_DATA .' surname
ON surname.usd_usr_id = mem_usr_id
AND surname.usd_usf_id = '.$gProfileFields->getProperty('LAST_NAME', 'usf_id').'
LEFT JOIN '. TBL_USER_DATA .' firstname
ON firstname.usd_usr_id = mem_usr_id
AND firstname.usd_usf_id = '.$gProfileFields->getProperty('FIRST_NAME', 'usf_id').'
LEFT JOIN '. TBL_USER_DATA .' birthday
ON birthday.usd_usr_id = mem_usr_id
AND birthday.usd_usf_id = '.$gProfileFields->getProperty('BIRTHDAY', 'usf_id').'
WHERE '.$gProfileFields->getProperty('BIRTHDAY', 'usf_id').' < \''.DATE_NOW.'\'
AND mem_end > \''.DATE_NOW.'\'
ORDER BY birthday ASC
LIMIT 1';
$result = $gDb->query($sql);
$oldestRoleMember = $gDb->fetch_array($result);
/* Datumsobjekt aus dem Ergebnis erstellen */
$birthdayRolemember = new DateTimeExtended($oldestRoleMember['birthday'], 'Y-m-d', 'date');
echo 'Ältestes Mitglied:</br>';
echo $oldestRoleMember['firstname']." ".$oldestRoleMember['surname']." ".'(';
/* Alter berechnen und ausgeben */
echo $birthdayRolemember->getAge();
echo')';
?>
Das kannst du innerhalb von Admidio verwenden, wo du möchtest. Die Ausgabe kannst du ja nach Wünschen abändern,...
Diese Abfrage holt dir den ältesten aktiven User, der einer Rolle zugeordnet ist. Das muss nicht zwingend ein Mitglied sein, sondern kann auch z.B. eine Webmasterrolle sein, die sonst kein Mitglied ist!
Wenn du das explizit für nur Mitglieder willst, dann musst du nach der "Where" Abfrage noch die Rolle anhand deiner Datenbankstruktur festlegen und folgenden Code erweitern:
Code: Alles auswählen
AND mem_rol_id = 4
VG Thomas
-
- Beiträge: 34
- Registriert: 5. Apr 2012, 20:56
- Wohnort: Steinbach
- Kontaktdaten:
Re: Ältesten Benutzer und Benutzerin anzeigen
Recht Herzlichen Dank.
Ich werde es mal sofort einbauen.
Ich werde es mal sofort einbauen.
-
- Beiträge: 34
- Registriert: 5. Apr 2012, 20:56
- Wohnort: Steinbach
- Kontaktdaten:
Re: Ältesten Benutzer und Benutzerin anzeigen
Hallo Thomas-RCV
Nochmal vielen Dank für deine Arbeit.
Doch habe ich ein Problem wenn ein User kein Geburtstag eingetragen hat erscheint dieser als Ältester
(2012).
Wie kann ich die Datensätze löschen die keinen Geburtstag eingetragen haben
oder Geburtstage die über 115 Jahre sind nicht anzeigen lasse.
Nochmal vielen Dank für deine Arbeit.
Doch habe ich ein Problem wenn ein User kein Geburtstag eingetragen hat erscheint dieser als Ältester
(2012).
Wie kann ich die Datensätze löschen die keinen Geburtstag eingetragen haben
oder Geburtstage die über 115 Jahre sind nicht anzeigen lasse.
- Thomas-RCV
- Former team member
- Beiträge: 786
- Registriert: 1. Aug 2011, 15:06
Re: Ältesten Benutzer und Benutzerin anzeigen
Das Geburtstagsfeld sollte schon ein Pflichtfeld sein, sonst funktioniert das ja alles logischerweise nicht.
Das Script macht das, was du in deinem Thread wolltest
Also musst du deine Mitglieder nachpflegen und z.B. ein fiktives Datum einsetzen
Ähmm, über 115 Jahre? Kann ich da mal die Geburtsurkunde sehen?
VG Thomas
Das Script macht das, was du in deinem Thread wolltest
Also musst du deine Mitglieder nachpflegen und z.B. ein fiktives Datum einsetzen
Ähmm, über 115 Jahre? Kann ich da mal die Geburtsurkunde sehen?
VG Thomas
-
- Beiträge: 34
- Registriert: 5. Apr 2012, 20:56
- Wohnort: Steinbach
- Kontaktdaten:
Re: Ältesten Benutzer und Benutzerin anzeigen
Ja mit den 115 meinte ich ja das alle ergebnisse die über ein Alter von 115 Jahren (wenn kein Geburtstag eingetragen ist es ja 2012 Jahre) gelöscht werden.
- Thomas-RCV
- Former team member
- Beiträge: 786
- Registriert: 1. Aug 2011, 15:06
Re: Ältesten Benutzer und Benutzerin anzeigen
Code: Alles auswählen
AND birthday.usd_value IS NOT NULL
-
- Beiträge: 34
- Registriert: 5. Apr 2012, 20:56
- Wohnort: Steinbach
- Kontaktdaten:
Re: Ältesten Benutzer und Benutzerin anzeigen
Super jetzt ist das ok
Wie siht das mit dem Limit1 aus wenn ich 3 oder 5 möchte ???
Habe noch versucht Gender mit einzubauen dann kann nach frau oder mann angezeigt werden.
Wie siht das mit dem Limit1 aus wenn ich 3 oder 5 möchte ???
Habe noch versucht Gender mit einzubauen dann kann nach frau oder mann angezeigt werden.