Anmeldebegrenzung für Event-registrierung

  • Hallo Community.
    Brauche dringend hilfe.
    Und zwar arbeite ich nun schon seit längerem an einem Anmeldesystem für Events bzw Kurse.


    Das ganze sieht so aus:
    Es gibt einen Admin bereich in dem man die bevorstehenden events eintragen kann, diese erscheinen dann über mysql auf der homepage.
    Der User kann sich dann für dieses Event anmelden.


    Ich arbeite also mit zwei MySQL Tabellen. Die erste "Kursgang" die zweite "Useranmeldung".
    Da es für jedes Event nur 30freie Plätze hat möchte ich gern die Useranmeldungen pro Event auf 30 Limitieren.
    Zu diesem zweck vergebe ich sobald der Admin einen Event bereitstelt eine Individuelle "Kurs_id".
    Wenn sich der User nun für diesen Event anmeldet wird der User und die individuelle Kurs_id in mysql abgespeichert.


    Wie kann ich jetzt MySQL klarmachen das, sobald die Kurs_id xxxxx 30mal in der Tabelle "Useranmeldungen" vorkommt die anmeldung geschlossen ist, beziehungsweise ein Text erscheint wie "Leider ist dieses Event komplett belegt"?


    Hoffe das wahr einigermassen verständlich erklärt.


    Danke für eure hilfe

  • nur mal am rande bemerkt: mich beschleicht das gefühl, dass wir deine anwendung entwickeln...!
    aber das ist nur meine meinung und mein gefühl, wenns nicht so is fühl dich nich angepisst ;)


    was du brauchst ist ne mergetabelle weil n teilnehmer m kurse besuchen können
    und dann kannst du einfach nen count laufen lassen

    Code
    1. select count(kurs_id) from kurse_2_teilnehmehmer where kurs_id = 1 zB


    und wenn der wert die 30 erreicht hat is voll :)

  • mich beschleicht das gefühl, dass wir deine anwendung entwickeln...!


    Das geht mir ähnlich. Außerdem habe ich so den Eindruck, dass es sich hier um eine Hausaufgabe oder einen Job handelt.


    Ich würd's anders machen. In der Tabelle Kurse würde ich eine Spalte z.B. "users" anhängen und mit 0 initialisieren. Bei jeder Anmeldung diesen Wert um 1 erhöhen und bei erreichtem Limit würde ich das Anmelden erst garnicht mehr zulassen.

  • nur mal am rande bemerkt: mich beschleicht das gefühl, dass wir deine anwendung entwickeln...!


    lol :-D:razz::p Is ja nicht wirklich so dass Ihr meine Anwendung entwickelt, ich meine ich habe zwei Möglichkeiten wenn ich nicht mehr weiter weiss:


    1. Kopf in den Sand stecken oder
    2. Leute fragen die wissen wies geht


    Bis jetzt bekahm ich von euch die Antworten nach denen ich gesucht habe, weshalb das Rad neu erfinden, wenn es andere längst erfunden haben? Ausserdem lern ich so effektiver, als wenn ich bei jedem problemchen 5stunden im Manual blättere.
    Ich mein, so wies aussieht macht Ihr das ja gerne .... WIN - WIN 8):D;)


    Trotzdem Danke für die "erneuten" Antworten, werde es ausprobieren und mich dann nochmals melden....... wenn ich darf :rolleyes:


    - - - Aktualisiert - - -



    Ich würd's anders machen. In der Tabelle Kurse würde ich eine Spalte z.B. "users" anhängen und mit 0 initialisieren. Bei jeder Anmeldung diesen Wert um 1 erhöhen und bei erreichtem Limit würde ich das Anmelden erst garnicht mehr zulassen.


    ...Dan müssen die zwei Tabellen "Kursgang" und "Useranmeldung" zusammenarbeiten richtig? sobald ein neuer datensatz in die Tabelle "useranmeldung" kommt steigt die Zahl in der Tabelle "kursgang" unter users um 1... verstehe ich das richtig? Macht man das mit einer IF Bedingung? oder gibts andere möglichkeiten?
    Mal davon abgesehen das ich "wie ja shon bemerkt" nicht das erste mal Frage bezüglich dieses Projektes... Hast du ein Beispiel? :oops:

  • weshalb das Rad neu erfinden, wenn es andere längst erfunden haben?


    Das ist richtig.

    Ausserdem lern ich so effektiver, als wenn ich bei jedem problemchen 5stunden im Manual blättere.


    Das ist falsch. :p
    Du kommst schneller zum Ergebnis und entwickelst somit zeitlich effektiver. Aber du lernst definitiv weniger beim Verwenden fertiger Code-Schnippsel, im Gegensatz zum selber Erarbeiten.


    ...Dan müssen die zwei Tabellen "Kursgang" und "Useranmeldung" zusammenarbeiten richtig? sobald ein neuer datensatz in die Tabelle "useranmeldung" kommt steigt die Zahl in der Tabelle "kursgang" unter users um 1... verstehe ich das richtig? Macht man das mit einer IF Bedingung? oder gibts andere möglichkeiten?
    Mal davon abgesehen das ich "wie ja shon bemerkt" nicht das erste mal Frage bezüglich dieses Projektes... Hast du ein Beispiel? :oops:


    Du hast eine Tabelle für User und eine für Events. Dann legst du dir eine Verbindungstabelle an, wie Synaptic schon sagte.


    Beispiel:
    Tabelle `user` mit den Spalten `id` und `name`.
    Tabelle `event` mit den Spalten `id`,`title`,`maxAttendants`
    Tabelle `fk__event_user` mit den Spalten `event_id` und `user_id`.
    Dann kannst du mittels JOIN und COUNT Problemlos in einer Abfrage prüfen welche Events voll belegt sind und wo noch Plätze frei sind.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook


  • Hallo Danke für dein Beispiel.
    Hab nun doch im manual nachgeschaut;-)


    Nun wollte ich es so lösen:
    Sobald sich ein User für einen bestimmtes event anmeldet, bekommt die Spalte "teilnehmer" in der Tabele wo die Events gespeichert sind ein UPDATE +1.
    Das funktioniert soweit.


    Nun wollte ich mit einer IF Bedingung prüfen ob die Spalte teilnehmer kleiner als 30 ist, wenn ja, gib die anmeldemöglichkeit frei, wenn nein, gib text aus.


    Jetzt hab ich aber folgendes problem:
    Wenn In der Tabelle EVENTS zb: Zwei Events gespeichert sind, das einte hat in der Spalte TEILNEHMER "21" und das andere "12" Dann zählt er dies zusammen
    und schliesst alle anmeldungen. Obwohl da noch reichlich platz wäre.
    Wie mach ich das er genau in dieser zeile nachschaut die relevant isT?


    Update funktion in die Tabelle Kursanmeldung sobald sich ein User angemeldet hat:

    Code
    1. if($speichern = TRUE){
    2. $abfrage = "UPDATE `kursanmeldung` SET `teilnehmer` = `teilnehmer`+1 WHERE kurs_id = '$kursid'";
    3. mysql_query($abfrage);}


    Und so wollte ich die anmeldebegrenzung lösen:

    Code
    1. $abfrage = "SELECT * FROM kursanmeldung ORDER BY id DESC ";
    2. $ergebnis = mysql_query($abfrage);
    3. while($row = mysql_fetch_object ($ergebnis))
    4. {
    5. $teilnehmer = $row->teilnehmer;
    6. }
    7. if($teilnehmer < 30)
    8. {