Mike-Ernst Geschrieben 16. November 2011 Teilen Geschrieben 16. November 2011 Hallo Leute, ich arbeite momentan an einer Webdatenbank zur Mitgliederverwaltung eines Vereins. Dank zahlreicher Google-Suchen bin ich auch schon ziemlich weit. Nur jetzt stoße ich an meine Grenzen. In einem Formular können Mitglieder bearbeitet oder neu angelegt werden. Dafür gibt es mehrere "Drop-Down-Menüs", welche Inhalte aus anderen Tabellen angezeigt werden. Hier ein Code-Beispiel für die Wohnort-Auswahl: <td> PLZ/Ort </td> <td> <select name="cmbOrt"> <?php echo "<option value='' disabled='disabled' selected='selected'> Bitte Ort wählen... </option>"; $sql = "SELECT O_ID, O_PLZ, O_Name FROM tblOrt ORDER BY O_PLZ"; $result = mysql_query($sql) OR die(mysql_error()); while($row = mysql_fetch_assoc($result)) { echo "<option value=" . $row['O_ID'] . ($strM_O_ID == $row['O_ID'] ? " selected='selected'" : "").">" . $row['O_PLZ'] ." ". $row['O_Name'] . "</option>"; } ?> </select> </td> [/PHP] Das funktioniert bei einer 1:n-Beziehung auch perfekt. Der value "O_ID" wird dann als Fremdschlüssel beim Mitglied hinterlegt und beim Aufruf eines bestehenden Mitglieds auch der eigene Ort ausgewählt. Aber was mache ich jetzt mit meineer n:m-Beziehung? Es handelt sich hier um verschiedene Kategorien (Aktive Mitglieder, Fördermitglieder, Unternehmer, Juristen). Jedes Mitglied kann beliebig viele Kategorien besitzen. Die nötige Zwischentabelle habe ich schon, nur weiß ich nicht, wie ich die Abfrage in das Menü bekomme. Mehrere Felder kann ich mit multiple auswählen, soweit bin ich schon. Hier noch mein SELECT-Code: [code] SELECT tblGesamt.M_ID, tblKat.K_ID, tblKat.K_Name, tblMKAT.MKAT_ID, tblMKAT.MKAT_M_ID, tblMKAT.MKAT_K_ID FROM tblGesamt, tblKat, tblMKAT WHERE tblGesamt.M_ID = tblMKAT.MKAT_M_ID AND tblKat.K_ID = tblMKAT.MKAT_K_ID [/code] tblGesamt enthält die Mitglieder, tblKat die Kategorien, tblMKAT ist die Zwischentabelle. Ich hoffe der Code ist einigermaßen übersichtlich und jemand hat schon die Lösung dafür. Mfg Mike PS: Brauche ich nach SELECT alle betroffenen Attribute oder nur den Wert, der auch ausgegeben werden soll? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Mike-Ernst Geschrieben 16. November 2011 Autor Teilen Geschrieben 16. November 2011 Mein Ergebnis bis jetzt: Funktioniert aber noch nicht, nur der Denkansatz stimmt glaub ich soweit. Ich frage alle Kategorien ab, die das Mitglied besitzt ($strM_ID enthält die ID des aktuell ausgewählten Mitglieds) und füge alle K_IDs in ein Array ein. Während das Drop-Down-Menü aufgebaut wird, wird bei jeder Kategorie geprüft, ob sie "in_array" ist. Wenn ja, wird sie ausgewählt. <td> <?php $strSQL="SELECT tblGesamt.M_ID, tblKat.K_ID, tblKat.K_Name, tblMKAT.MKAT_ID, tblMKAT.MKAT_M_ID, tblMKAT.MKAT_K_ID FROM tblGesamt, tblKat, tblMKAT WHERE tblGesamt.M_ID = tblMKAT.MKAT_M_ID AND tblMKAT.MKAT_M_ID = '".$strM_ID."' AND tblKat.K_ID = tblMKAT.MKAT_K_ID"; $recordset = mysql_query($strSQL); $intAnzahlDS = mysql_num_rows($recordset); $strMKAT_K_ID =""; while ($datensatz=mysql_fetch_array($recordset)) { $strMKAT_K_ID .= $datensatz['MKAT_K_ID']; } ?> <select name="cmbKat" multiple="multiple"> <?php echo "<option value='' disabled='disabled' selected='selected'> Bitte Kategorien wählen... </option>"; $sql = "SELECT K_ID, K_Name FROM tblKat"; $result = mysql_query($sql) OR die(mysql_error()); while($row = mysql_fetch_assoc($result)) { echo "<option value=" . $row['K_ID'] . (in_array($row['K_ID'],$strMKAT_K_ID) ? " selected='selected'" : "").">" . $row['K_Name'] . "</option>"; } ?> </select> </td> [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.