sql-Statement für Benutzerliste

Alles, was nicht in die anderen Foren passt, kannst du hier loswerden.
Antworten
harryman
Beiträge: 141
Registriert: 25. Jul 2007, 22:58
Kontaktdaten:

sql-Statement für Benutzerliste

Beitrag von harryman »

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
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Beitrag von matzman2000 »

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... :wink:

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>";
}
	
?>
Gruss,
Matze
harryman
Beiträge: 141
Registriert: 25. Jul 2007, 22:58
Kontaktdaten:

Beitrag von harryman »

Hallo matzmann2000

Vielen Dank für deine rasche Antwort und dem Vorschlag.

Ich suchte jedoch ein SQL-Statement (select ...) welches ohne Admidio-Hilfe (common.php) auskommt, also reines SQL, welches die Daten direkt aus der DB holt.

?


Guss
Harry
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Beitrag von matzman2000 »

Hallo Harry,

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
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.... :o

Gruss,
Matze
harryman
Beiträge: 141
Registriert: 25. Jul 2007, 22:58
Kontaktdaten:

Beitrag von harryman »

Vielen Dank matzman2000

Ich konnte dein SQL gemäss meinen Bedürfnisse weiterverwenden.


Gruss
Harald
Antworten