Hallo zusammen
Ich möchte auf meiner Website mittels php die Geburtstagskinder anzeigen und benötige dazu das sql-Statement, welches mir direkt aus der admidio-db eine Benutzerliste mit folgenden Feldern erzeugt: Name, Vorname, Geburtstag. Das Plugin kann ich dafür nicht verwenden.
Ich kriegs nicht hin, kann mir jemand auf die Sprünge helfen?
Vielen Dank im voraus
Gruss
Harry
sql-Statement für Benutzerliste
-
- Former team member
- Beiträge: 1087
- Registriert: 2. Sep 2007, 17:12
- Wohnort: Itzstedt
- Kontaktdaten:
Hallo Harry,
in meinem Calendar-Plugin kann man sich die Geburtstage des Monats ausgeben lassen. Ich habe Dir daraus das SQL Statement etwas abgewandelt. Mit dem folgenden Quellcode erzeugst Du eine Liste aller Benutzer mit Angabe des Geburtsdatums. Wenn Du eine Bedingung einfügen willst (zB nur Geburtstage von heute), musst Du natürlich noch das Statement damit erweitern.
Denke daran, den Pfad zur "common.php" anzupassen, meine Testdatei lag eine Ebene über Admidio...
Gruss,
Matze
in meinem Calendar-Plugin kann man sich die Geburtstage des Monats ausgeben lassen. Ich habe Dir daraus das SQL Statement etwas abgewandelt. Mit dem folgenden Quellcode erzeugst Du eine Liste aller Benutzer mit Angabe des Geburtsdatums. Wenn Du eine Bedingung einfügen willst (zB nur Geburtstage von heute), musst Du natürlich noch das Statement damit erweitern.
Denke daran, den Pfad zur "common.php" anzupassen, meine Testdatei lag eine Ebene über Admidio...

Code: Alles auswählen
<?php
require_once("system/adm_program/system/common.php");
$sql = "SELECT DISTINCT usr_id, last_name.usd_value as last_name, first_name.usd_value as first_name, birthday.usd_value as birthday
FROM ". TBL_ROLES. ", ". TBL_CATEGORIES. ", ". TBL_MEMBERS. ", ". TBL_USERS. "
RIGHT JOIN ". TBL_USER_DATA. " AS birthday ON birthday.usd_usr_id = usr_id
AND birthday.usd_usf_id = ". $g_current_user->getProperty("Geburtstag", "usf_id"). "
LEFT JOIN ". TBL_USER_DATA. " AS last_name ON last_name.usd_usr_id = usr_id
AND last_name.usd_usf_id = ". $g_current_user->getProperty("Nachname", "usf_id"). "
LEFT JOIN ". TBL_USER_DATA. " AS first_name ON first_name.usd_usr_id = usr_id
AND first_name.usd_usf_id = ". $g_current_user->getProperty("Vorname", "usf_id"). "
WHERE rol_cat_id = cat_id
AND cat_org_id = ". $g_current_organization->getValue("org_id"). "
AND rol_id = mem_rol_id
AND mem_valid = 1
AND mem_usr_id = usr_id
AND usr_valid = 1
ORDER BY Year(birthday.usd_value) ASC, Month(birthday.usd_value) ASC, DayOfMonth(birthday.usd_value) ASC, last_name, first_name";
$result = $g_db->query($sql);
while($row = $g_db->fetch_array($result))
{
echo $row['first_name']. " ". $row['last_name']. ", ". mysqldatetime("d.m.y", $row['birthday']). "<br>";
}
?>
Matze
-
- Former team member
- Beiträge: 1087
- Registriert: 2. Sep 2007, 17:12
- Wohnort: Itzstedt
- Kontaktdaten:
Hallo Harry,
das reine SQL Statement sieht so aus:
Das ist die reine SQL Abfrage (Ausgabe ist unformatiert) für eine Mitgliederliste mit allen gültigen Benutzern (User ID, Nachname, Vorname, Geburtstag). Wenn Du das über Deine Webseite ausgeben willst, musst Du die Connection zur Datenbank aufbauen und es entsprechend in PHP umsetzen, formatieren und natürlich auch Deine eigene Bedingung einfügen.
Daher bietet sich eigentlich die Einbindung von admidio an - ich sehe da keinen Nachteil....
Gruss,
Matze
das reine SQL Statement sieht so aus:
Code: Alles auswählen
SELECT DISTINCT usr_id, last_name.usd_value AS last_name, first_name.usd_value AS first_name, birthday.usd_value AS birthday
FROM adm_members, adm_users
RIGHT JOIN adm_user_data AS birthday ON birthday.usd_usr_id = usr_id
AND birthday.usd_usf_id = 20
LEFT JOIN adm_user_data AS last_name ON last_name.usd_usr_id = usr_id
AND last_name.usd_usf_id = 11
LEFT JOIN adm_user_data AS first_name ON first_name.usd_usr_id = usr_id
AND first_name.usd_usf_id = 12
WHERE mem_valid = 1
AND mem_usr_id = usr_id
AND usr_valid = 1
Daher bietet sich eigentlich die Einbindung von admidio an - ich sehe da keinen Nachteil....

Gruss,
Matze