Mailinglisten-Archive |
Hallo ihr ich hab ein Auswahlfeld, welches durch Einträge, die in der Datenbank gespeichert sind gefüllt wird. In diesem Fall handelt es sich um Namen von Spielen. Diese Namen werden von einem Administrator in der Datenbank gespeichert. Den Usern soll nun die Möglichkeit gegeben werden auszuwählen, welche Spiele sie den spielen. Das ganze habe ich so gelöst, dass ein Auswahlmenü angezeigt wird, bei dem mehrfachauswahl erlaubt ist. Die Daten werden dann in einem array in der Datenbank gespeichert (es wird die ID des Spiels gespeichert, die beim Eintrag des Spiels durch den Administrator automatisch gesetzt wurde). Klappt auch alles. Mein Problem ist jetzt aber, dass wenn ein User sich dann wieder in sein Profil begiebt, die Einträge im Auswahlmenü nicht ausgewählt sind. Wenn er nun andere Daten ändert und nicht nochmals seine Spiele auswählt, in der Datenbank gespeichert wird, dass er kein Spiel spielt. Meines Erachtens nach wäre es am besten, wenn diejenigen Spiele, die der User als "wird gespielt" eingetragen hat beim nächsten Aufruf des Profils als selected angezeigt werden. Leider ist bisher jeder meiner Versuche das richtig hinzubekommen gescheitert. Ich habe es jetzt soweit hinbekommen, dass zwar Einträge als selected angezeigt werden, aber ich bekomme die Einträge mehrfach ausgegeben, also ein Spiel taucht mehrmals im menü auf und nur einer dieser ausgegebenen Einträge ist markiert. Der Fehler liegt wohl in der Tatsache begraben, dass ich 2 Sschleifen ineinander habe, aber wie soll ich die voneinander ternnen? Hier mal mein Code, vielleicht hilfts ja was ;) <select name="games[]" multiple class="forms"> <?php $games = unserialize($row['games']); $query = mysql_query("SELECT distinct * FROM games ORDER BY games_name"); while($rows = mysql_fetch_assoc($query)) { $games_id = $rows['games_id']; $games_name = $rows['games_name']; if(is_array($games)) { foreach($games as $game) { echo "$game"; if($game == $rows['games_id']) { $select = 'selected'; } else { $select = ''; } echo "<option $select value=\"$games_id\">$games_name</option>"; } } } ?> </select> $row['games'] ist das array, dass im Profil des user gespeichert wird. Ich hoffe ich konnte euch mein Problem begreiflich machen und ihr könnt mir (mal wieder ;) ) helfen. Gruss Carl
php::bar PHP Wiki - Listenarchive