bestimmte variablen in mysql tabelle suchen

Kracky

Mitglied
Hallo,

ich habe eine MySQL Datenbank mit 3 Tabellen.
In der ersten sind sämtliche Benutzerdaten gespeichert wie userID, username, password etc.
In der zweiten befindet sich ein vom benutzer erstelltes Event, mit der eventID, name, beschreibung etc.
Die 3. Tabelle ist für die Anmeldung zum Event gedacht.

Simpel gesagt: Man regestriert sich, erstellt ein Event und andere können sich dafür anmelden.

Die Struktur sieht jetzt so aus, dass wenn jemand sich für ein Event anmeldet, ein eintrag in der anmeldentabelle erstellt wird wo imprinzip nur eventID und userID gespeichert werden. Also quasi eine zugehörigkeit von benutzer und event.

Mein Problem ist es jetzt, dass sich jeder User so oft anmelden kann wie er will. Es soll sich aber natürlich jeder nur 1 mal anmelden können.

Wenn jetzt also in der anmeldetabelle folgende Werte sind:
Code:
TurnierID, UserID
5, 1
5, 2
6, 1
6, 2

dann soll irgendwie verhindert werden, das ein eintrag doppelt vorkommen soll, und es soll natürlich auf der Seite dann auch ausgegeben werden das man schon angemeldet ist.

Jetzt habe ich schon so sachen versucht wie ein Schleifendurchlauf, was natürlich nicht klappt weil die bedingung nach jedem durchlauf anders ist und man sich sobald 2 user angemeldet sind sich trozdem so oft anmelden kann wie man will.

Dann habe ich es mit SELECT versucht indem ich 2 abfragen gemacht habe einmal SELECT userID und einmal SELECT eventID aber auch hier sobald sich ein weiterer user angemeldet hatte, konnte man sich nochmal anmelden.

Es wäre ja einfach wenn man nur 1 wert abfragen müsste, aber man muss halt 2 werte abfragen und gucken das diese 2 werte so wie sie in der reihe sind nicht nochmal vorkommen

Irgendwie muss es doch möglich sein eine doppelte anmeldung zu verhindern ^^

Ich hoffe euch fällt was ein.
 
Zuletzt bearbeitet:
Jo, da fällt mir was ein: Erzeuge in der Tabelle für Anmeldung einen UNIQUE-Index über die Spalten userid und TurnierID. Damit ist gewährleistet, das die Zuordnung Benutzer <> Event nur einmal vorkommen kann. Ungefähr so:

Code:
CREATE UNIQUE INDEX User2EventUnique ON anmeldetabelle (TurnierID, UserID);

Hier gibts weitere Infos zu Indizes in MySQL: http://dev.mysql.com/doc/refman/5.0/en/create-index.html
 
Sehr gut, funktioniert wunderbar, danke :)

Frage noch:
Kann man diesen Index auch abfragen? In einer IF-Anweisung vll?

Geht sich nur darum einen Button verschwinden zu lassen wenn man dann angemeldet ist und würde mich jetzt mal interessieren ob das auch durch den Index geht.
 
Nein, das geht nur über einen normalen SELECT. Also z.B. so:

Code:
SELECT COUNT(*) AS vorhanden FROM anmeldetabelle WHERE UserID=$userid AND TurnierID=$TurnierID;
 
Zurück