Guten Abend,
meine Absicht ist es, Termine zu erstellen, zu denen sich bereits regestrierte Benutzer zu- bzw. absagen können.
[benutzer]
id | nachname | vorname
---------------------------------------------------------
1 | Name 1 | Vorname 1
2 | Name 2 | Vorname 2
3 | Name 3 | Vorname 3
[termine]
id | termin
----------------------------
1 | Termin 1
2 | Termin 2
3 | Termin 3
[termine_teilnehmer]
id | benutzer_id | termine_id | teilnahme (1 = nimmt teil, 0 = nimmt nicht teil)
---------------------------------------------------------------------------------------------------------------------------------
1 | Name 1 | Termin 1 | 1
2 | Name 1 | Termin 2 | 0
3 | Name 3 | Termin 1 | 1
Der Benutzer "Name 1" nimmt an der Veranstaltung "Termin 1" teil und an "Termin 2" nicht teil. Der Benutzer "Name 3" nimmt an der Veranstaltung "Termin 1" teil. Auf der Termin-Seite, wo die Termine alle aufgelistet sind, sollen jeweils unter dem jeweiligen Termin die Benutzer aufgelistet werden, die teilnehmen und nicht teilnehmen. Der eingeloggte Benutzer kann jeweils bei jedem Termin angeben, ob er teilnimmt oder nicht. Dabei befüllt er die MySQL-Tabelle "termine_teilnehmer".
Mein Lösungsansatz ist:
Abfrage:
Ausgabe:
Mein Problem ist nun, dass unter jedem Termin alle Zu- bzw. Absagen (sprich alle Einträge der Tabelle "termine_teilnehmer") angezeigt werden. Es sollen jedoch nur jeweils die Zu- bzw. Absagen angezeigt werden, die dem Termin zugeordnet sind (termine.id = termine_teilnehmer.termine_id).
Ausgabebeispiel

Ich habe jetzt wirklich alles Mögliche probiert, jedoch bekomme ich es einfach nicht hin. Ich finde einfach keine Lösung. Habe auch schon ausgiebig Google verwendet. Weiß jedoch ehrlich gesagt nicht, wo genau das Problem liegt und wie ich danach suchen sollte.
Wenn mir jemand weiterhelfen könnte, wäre ich echt dankbar.
meine Absicht ist es, Termine zu erstellen, zu denen sich bereits regestrierte Benutzer zu- bzw. absagen können.
[benutzer]
id | nachname | vorname
---------------------------------------------------------
1 | Name 1 | Vorname 1
2 | Name 2 | Vorname 2
3 | Name 3 | Vorname 3
[termine]
id | termin
----------------------------
1 | Termin 1
2 | Termin 2
3 | Termin 3
[termine_teilnehmer]
id | benutzer_id | termine_id | teilnahme (1 = nimmt teil, 0 = nimmt nicht teil)
---------------------------------------------------------------------------------------------------------------------------------
1 | Name 1 | Termin 1 | 1
2 | Name 1 | Termin 2 | 0
3 | Name 3 | Termin 1 | 1
Der Benutzer "Name 1" nimmt an der Veranstaltung "Termin 1" teil und an "Termin 2" nicht teil. Der Benutzer "Name 3" nimmt an der Veranstaltung "Termin 1" teil. Auf der Termin-Seite, wo die Termine alle aufgelistet sind, sollen jeweils unter dem jeweiligen Termin die Benutzer aufgelistet werden, die teilnehmen und nicht teilnehmen. Der eingeloggte Benutzer kann jeweils bei jedem Termin angeben, ob er teilnimmt oder nicht. Dabei befüllt er die MySQL-Tabelle "termine_teilnehmer".
Mein Lösungsansatz ist:
Abfrage:
PHP:
function termine_teilnehmer( $conid )
{
if ($conid)
{
$sql = "SELECT
benutzer.*,
termine.*,
termine_teilnehmer.*
FROM
termine_teilnehmer
JOIN benutzer
ON termine_teilnehmer.benutzer_id = benutzer.id
JOIN termine
ON termine_teilnehmer.termine_id = termine.id";
$ergebnis = mysql_query( $sql, $conid );
if (@mysql_num_rows( $ergebnis ) > 0)
{
while ($zeile = mysql_fetch_array( $ergebnis ))
{
$datensatz[$zeile['id']]['id'] = $zeile['id'];
$datensatz[$zeile['id']]['nachname'] = $zeile['nachname'];
$datensatz[$zeile['id']]['vorname'] = $zeile['vorname'];
$datensatz[$zeile['id']]['teilnahme'] = $zeile['teilnahme'];
}
}
mysql_free_result( $ergebnis );
return $datensatz;
}
}
Ausgabe:
PHP:
function dtstatus($m)
{
switch ($m)
{
case 1: echo'nimmt teil';
break;
case 0: echo'nimmt leider nicht teil';
break;
}
}
// Termine
if (is_array($termine))
{
foreach ($termine as $eintrag)
{
echo ' ' . $eintrag['termin'] . ' ';
// Benutzer ist eingeloggt
if (isset ($_SESSION['user_id'])) {
echo ' <h2>Teilnehmermeldungen</h2><br /> ';
echo ' <ul> ';
foreach ($termine_teilnehmer as $eintrag)
{
echo ' <li>' . $eintrag['vorname'] . ' ' . $eintrag['nachname'] . ' ';
dtstatus($eintrag['teilnahme']);
echo ' </li> ';
}
echo ' </ul> ';
}
echo ' </div><br /> ';
}
}
else { echo ' <hr/>Keine Termine verfügbar. '; }
Mein Problem ist nun, dass unter jedem Termin alle Zu- bzw. Absagen (sprich alle Einträge der Tabelle "termine_teilnehmer") angezeigt werden. Es sollen jedoch nur jeweils die Zu- bzw. Absagen angezeigt werden, die dem Termin zugeordnet sind (termine.id = termine_teilnehmer.termine_id).
Ausgabebeispiel

Ich habe jetzt wirklich alles Mögliche probiert, jedoch bekomme ich es einfach nicht hin. Ich finde einfach keine Lösung. Habe auch schon ausgiebig Google verwendet. Weiß jedoch ehrlich gesagt nicht, wo genau das Problem liegt und wie ich danach suchen sollte.
Wenn mir jemand weiterhelfen könnte, wäre ich echt dankbar.