Eigene Liste erstellen aus kompletter Rolle
Eigene Liste erstellen aus kompletter Rolle
Hallo!
Ich scheiter an dieser Aufgabe, auch wenn ich vermute, dass sie wohl nicht sooo schwer sein dürfte. Leider bin ich in PHP ne ziemliche Niete und verstehe nur das nötigste Basiswissen. Erstmal nen Link, wo man sehen kann, was ich erreichen will:
http://www.victoria-seelow.de/frauensp/kader.php
Dort ist eine Liste mit Namen. Bei Admidio habe ich dafür auch eine eigene Rolle und auch eine eigene Kategorie. Ist es möglich, die Daten aus Admidio auszulesen und danach eine Seite aufzubauen, dass sie so aussieht?!? Am Ende soll jeder Name ein eigener DIV-Container sein.
Hier habe ich das ganze schon etwas anders gelöst:
http://www.victoria-seelow.de/verein/vo ... rstand.php
Dort habe ich immer die bestimmte ID von der Person ausgelesen und dann die Daten "aufgeschrieben".
Nun ist aber das schwierige, dass er die ganze Rolle automatisch auflisten soll. Wie funktioniert sowas? Besten Dank schonmal,
Tobi!
Ich scheiter an dieser Aufgabe, auch wenn ich vermute, dass sie wohl nicht sooo schwer sein dürfte. Leider bin ich in PHP ne ziemliche Niete und verstehe nur das nötigste Basiswissen. Erstmal nen Link, wo man sehen kann, was ich erreichen will:
http://www.victoria-seelow.de/frauensp/kader.php
Dort ist eine Liste mit Namen. Bei Admidio habe ich dafür auch eine eigene Rolle und auch eine eigene Kategorie. Ist es möglich, die Daten aus Admidio auszulesen und danach eine Seite aufzubauen, dass sie so aussieht?!? Am Ende soll jeder Name ein eigener DIV-Container sein.
Hier habe ich das ganze schon etwas anders gelöst:
http://www.victoria-seelow.de/verein/vo ... rstand.php
Dort habe ich immer die bestimmte ID von der Person ausgelesen und dann die Daten "aufgeschrieben".
Nun ist aber das schwierige, dass er die ganze Rolle automatisch auflisten soll. Wie funktioniert sowas? Besten Dank schonmal,
Tobi!
Hallo Tobi,
du brauchst dazu erst einmal ein SQL-Statement, welches dir die Daten ausliest:{0} musst du durch die ID deiner gewünschten Rolle ersetzen.
Dann musst du die Datensätze in einer Schleife durchgehen:Ich hoffe das hilft dir schon mal weiter.
Gruß
Markus
du brauchst dazu erst einmal ein SQL-Statement, welches dir die Daten ausliest:
Code: Alles auswählen
$sql = "SELECT usr_id, usr_last_name, usr_first_name, usr_phone, usr_mobile, usr_email, usr_fax
FROM ". TBL_ROLES. ", ". TBL_MEMBERS. ", ". TBL_USERS. "
WHERE rol_org_shortname = '$g_organization'
AND rol_id = {0}
AND rol_id = mem_rol_id
AND mem_valid = 1
AND mem_leader = 0
AND mem_usr_id = usr_id
AND usr_valid = 1
ORDER BY usr_last_name, usr_first_name ";
Dann musst du die Datensätze in einer Schleife durchgehen:
Code: Alles auswählen
$result = mysql_query($sql, $g_adm_con);
db_error($result);
while($row = mysql_fetch_array($result))
{
... hier kommt nun die Ausgabe für einen Datensatz rein ...
z.B.:
echo "<td>". $row['usr_nachname']. "</td>";
}
Gruß
Markus
Schlichtweg: DER HAMMER!
Genau so hatte ich mir das gedacht.
Nun habe ich nur noch ein winziges Problem. Wie schaffe ich, dass auch die Leiterin mit in der Liste ganz normal angezeigt wird? Schaffe es grad nur, dass entweder alle Leute ohne Leiter oder eben nur der Leiter angezeigt wird. Gut,... das ist nicht sooo wichtig, da ich da ja nur das gleiche mit eben der anderen Einstellung einbauen müsste. Aber vielleicht gibt es da ja noch eine elegantere Lösung. *g*
So sieht es gerade aus:
P.S.: Geburtstage sollen nicht angezeigt werden.
Wenn wir schon dabei sind: ist es auch möglich, nur Leute anzuzeigen, die etwas bestimmtes bei einem benutzerdefinierten Feld zu stehen haben? Meinetwegen habe ich in einem "Benutzerdefiniertem Feld" nur jung oder alt zu stehen. Und nun sollen genau wie oben die Leute ausgegeben werden, aber nur da, wo jung steht. Hoffe ich konnte ungefähr erklären, was ich meinte. Falls das heut noch jemand liest: einen schönen Abend (trotzdem sich Bremen grad beim Fußball so doof anstellt ).
Nachtrag:
folgendes bekomme ich, wenn ich das von mylist_prepare ausgeben lasse:
Genau so hatte ich mir das gedacht.
Nun habe ich nur noch ein winziges Problem. Wie schaffe ich, dass auch die Leiterin mit in der Liste ganz normal angezeigt wird? Schaffe es grad nur, dass entweder alle Leute ohne Leiter oder eben nur der Leiter angezeigt wird. Gut,... das ist nicht sooo wichtig, da ich da ja nur das gleiche mit eben der anderen Einstellung einbauen müsste. Aber vielleicht gibt es da ja noch eine elegantere Lösung. *g*
So sieht es gerade aus:
Code: Alles auswählen
<div class="container1">
<div class="texttop1">Mitglieder</div>
<div class="kader2 fett">Name, Vorname</div>
<div class="kader3 fett">Geburtstag</div>
<?php
$sql = "SELECT usr_id, usr_last_name, usr_first_name, usr_phone, usr_mobile, usr_email, usr_fax
FROM ". TBL_ROLES. ", ". TBL_MEMBERS. ", ". TBL_USERS. "
WHERE rol_org_shortname = '$g_organization'
AND rol_id = 4
AND rol_id = mem_rol_id
AND mem_valid = 1
AND mem_leader = 0
AND mem_usr_id = usr_id
AND usr_valid = 1
ORDER BY usr_last_name, usr_first_name ";
$result = mysql_query($sql, $g_adm_con);
db_error($result);
while($row = mysql_fetch_array($result))
{
echo "<div class=\"kader2\">". $row['usr_last_name']. ", ". $row['usr_first_name']. "</div>
<div class=\"kader3\">--.--.----</div>";
}
?>
<div style="clear:both"></div>
</div>
Wenn wir schon dabei sind: ist es auch möglich, nur Leute anzuzeigen, die etwas bestimmtes bei einem benutzerdefinierten Feld zu stehen haben? Meinetwegen habe ich in einem "Benutzerdefiniertem Feld" nur jung oder alt zu stehen. Und nun sollen genau wie oben die Leute ausgegeben werden, aber nur da, wo jung steht. Hoffe ich konnte ungefähr erklären, was ich meinte. Falls das heut noch jemand liest: einen schönen Abend (trotzdem sich Bremen grad beim Fußball so doof anstellt ).
Nachtrag:
folgendes bekomme ich, wenn ich das von mylist_prepare ausgeben lasse:
Code: Alles auswählen
SELECT usr_id, usr_last_name, usr_first_name, usr_birthday, f10.usd_value FROM adm_roles, adm_members, adm_users LEFT JOIN adm_user_data f10 ON f10.usd_usr_id = usr_id AND f10.usd_usf_id = 10 WHERE rol_org_shortname = 'Seelow' AND rol_id = 16 AND rol_valid = 1 AND mem_rol_id = rol_id AND mem_valid = 1 AND mem_leader = 0 AND mem_usr_id = usr_id AND usr_valid = 1 AND ( UPPER(f10.usd_value) LIKE ' <> ANGRIFF' ) ORDER BY usr_last_name ASC
Lass einfach folgende Zeile in dem SQL-Statement weg:Tobsen086 hat geschrieben:Wie schaffe ich, dass auch die Leiterin mit in der Liste ganz normal angezeigt wird?
Code: Alles auswählen
AND mem_leader = 0
Mist! Hab doch noch ne Frage. Und zwar will ich woanders den Geburtstag auch ausgeben. Doch leider bekomme ich es nur hin, dass es YYYY-MM-TT ausgegeben wird. Es soll aber TT.MM.YYYY sein. Wir formatiere ich das um?
So sieht das jetzt aus:
So sieht das jetzt aus:
Code: Alles auswählen
echo "<div class=\"kader2\">". $row['usr_last_name']. ", ". $row['usr_first_name']. "</div>
<div class=\"kader3\">". $row['usr_birthday']. "</div>";
Du könntest dafür eine unserer Funktionen nehmen, falls du die common.php eingebunden hast:
Code: Alles auswählen
mysqldatetime('d.m.y', $row['usr_birthday'])
Das klappt hier bisher alles wie am Schnürchen. Aber nun bin ich wieder auf ne Hürde gestoßen. Ich will ein benutzerdefiniertes Feld mit auslesen und es auch in die Tabelle mit eintragen.
Denke mir eigentlich mit $row['f10.usd_usf_id'] oder irgendeine andere Kombination in den Spitzklammern sollte es machen, aber ich hab da schon allesmögliche versucht. Es wird mir einfach nichts angezeigt. Das benutzerdefinierte Feld ist eben f10 und wird auch mit ausgelesen.
Geht das irgendwie anders? Oder muss ich was anderes in das Feld eintragen?
Schönen Abend noch,
Tobi!
Denke mir eigentlich mit $row['f10.usd_usf_id'] oder irgendeine andere Kombination in den Spitzklammern sollte es machen, aber ich hab da schon allesmögliche versucht. Es wird mir einfach nichts angezeigt. Das benutzerdefinierte Feld ist eben f10 und wird auch mit ausgelesen.
Geht das irgendwie anders? Oder muss ich was anderes in das Feld eintragen?
Schönen Abend noch,
Tobi!
ich hatte das selbe problem. googln half nichts, also hab ich es einfach probiert und es geht
hier die sql abfrage die ich mir so wie du am schirm ausgeben hab lassen (über die eigenen listen)
wie du siehst hab ich über wo fxx.usd_value steht ein "as yyy" wobei yyy für einen eindeutigen namen steht.
dann noch das statement absetzen
und die while schleife
in der while-schleife kannst dann über die selbst vergebenen namen, die werte auslesen
bei mir funktioniert das supigut. hoffentlich bei dir auch
hier die sql abfrage die ich mir so wie du am schirm ausgeben hab lassen (über die eigenen listen)
Code: Alles auswählen
$abfrage = "SELECT
usr_id,
usr_last_name,
usr_first_name,
f16.usd_value as funktion,
f13.usd_value as fr1,
f14.usd_value as fr2,
f15.usd_value as fr3,
f9.usd_value as oefmav,
f10.usd_value as startnummer,
f11.usd_value as trp1,
f12.usd_value as trp2
FROM adm_roles, adm_members, adm_users
LEFT JOIN adm_user_data f16 ON f16.usd_usr_id = usr_id AND f16.usd_usf_id = 16
LEFT JOIN adm_user_data f13 ON f13.usd_usr_id = usr_id AND f13.usd_usf_id = 13
LEFT JOIN adm_user_data f14 ON f14.usd_usr_id = usr_id AND f14.usd_usf_id = 14
LEFT JOIN adm_user_data f15 ON f15.usd_usr_id = usr_id AND f15.usd_usf_id = 15
LEFT JOIN adm_user_data f9 ON f9.usd_usr_id = usr_id AND f9.usd_usf_id = 9
LEFT JOIN adm_user_data f10 ON f10.usd_usr_id = usr_id AND f10.usd_usf_id = 10
LEFT JOIN adm_user_data f11 ON f11.usd_usr_id = usr_id AND f11.usd_usf_id = 11
LEFT JOIN adm_user_data f12 ON f12.usd_usr_id = usr_id AND f12.usd_usf_id = 12
WHERE rol_org_shortname = 'MSV' AND rol_id = 2 AND rol_valid = 1 AND mem_rol_id = rol_id AND mem_valid = 1 AND mem_leader = 0 AND mem_usr_id = usr_id AND usr_valid = 1 ORDER BY usr_last_name ASC";
dann noch das statement absetzen
Code: Alles auswählen
$ergebnis = mysql_query($abfrage);
Code: Alles auswählen
while($row = mysql_fetch_assoc($ergebnis))
Code: Alles auswählen
print $row[funktion]." ".$row[fr1];
Zuletzt geändert von skorpion am 18. Okt 2007, 13:21, insgesamt 1-mal geändert.
bitte. du kannst dir hier das ergebnis anschauen
alle die, die in der rolle vorstand sind
alle, die in der rolle mitglieder sind
es geht wunderbar.
ein tip an die entwickler.
zum speichern solcher eignen listen, braucht man sich ja im prinzip nur die sql abfrage in einer db abspeichern. dann noch die spaltennamen und ein feld, wo die liste beschrieben ist. fertig sind die abgespeicherten eigenen listen. im prinzip hab ich und tobsen086 auch nichts anderes gemacht.
alle die, die in der rolle vorstand sind
alle, die in der rolle mitglieder sind
es geht wunderbar.
ein tip an die entwickler.
zum speichern solcher eignen listen, braucht man sich ja im prinzip nur die sql abfrage in einer db abspeichern. dann noch die spaltennamen und ein feld, wo die liste beschrieben ist. fertig sind die abgespeicherten eigenen listen. im prinzip hab ich und tobsen086 auch nichts anderes gemacht.
Neues Script, neues Glück...
Sachlage ist die gleiche, wie am Anfang des Threads. Ich würde gern aus der Datenbank Name, Vorname und Geburtstag auslesen und diese Sachen dann wiedergeben. Folgender Code funtioniert dafür nicht:
Außerdem habe ich am Anfang der Datei die "common.php" eingebunden. Mir scheint es aber so, als wenn gar kein Kontakt mit der Datenbank aufgebaut wird. Muss ich noch woanders etwas verändern?!
Sachlage ist die gleiche, wie am Anfang des Threads. Ich würde gern aus der Datenbank Name, Vorname und Geburtstag auslesen und diese Sachen dann wiedergeben. Folgender Code funtioniert dafür nicht:
Code: Alles auswählen
<?php
$sql = "SELECT mem_leader, usr_id, row1id17.usd_value, row4id18.usd_value, row7id26.usd_value
FROM ". adm_roles. ", ". adm_categories .", ". adm_members .", ". adm_users ."
LEFT JOIN adm_user_data row1id17 ON row1id17.usd_usr_id = usr_id AND row1id17.usd_usf_id = 17
LEFT JOIN adm_user_data row4id18 ON row4id18.usd_usr_id = usr_id AND row4id18.usd_usf_id = 18
LEFT JOIN adm_user_data row7id26 ON row7id26.usd_usr_id = usr_id AND row7id26.usd_usf_id = 26
WHERE rol_id = 8
AND rol_valid = 1
AND rol_cat_id = cat_id
AND cat_org_id = 1
AND mem_rol_id = rol_id
AND mem_valid = 1
AND mem_usr_id = usr_id
AND usr_valid = 1
ORDER BY mem_leader DESC , row1id17.usd_value ASC";
$result = $g_db->query($sql);
while($row = $g_db->fetch_array($result))
{
echo " <div class=\"kader2\">". $row['row1id17']. ", ". $row['row1id18']. "</div>
<div class=\"kader3\">". mysqldatetime('d.m.y', $row['row1id26']). "</div>
";
}
?>
Hmm... nun scheint es zu gehen. Hab es sogar hinbekommen noch ein ganz anderes Feld und mit einer Bedingung nur das auszugeben, was ich will. Dafür musste ich aber als erstes die Sachen umbennen. Zum Beispiel:
Ist das so korrekt oder ist das so ein schlechter Weg?!
Code: Alles auswählen
[...]row1id17.usd_value as name, row4id18.usd_value as vname, row7id26.usd_value as gtag,[...]